williamr@2: // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #if !defined (__ES_ENUM_H__) williamr@2: #define __ES_ENUM_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: class TConnArgBase williamr@2: /** williamr@2: * Base class for many arguments to RConnection functions. Provides versioning information. williamr@2: * @note Not intended for user instantiation williamr@2: * @publishedAll williamr@2: * @released since v7.0s williamr@2: */ williamr@2: { williamr@2: public: williamr@2: inline TConnArgBase(); williamr@2: inline TUint8 Version() const; williamr@2: williamr@2: protected: williamr@2: inline TConnArgBase(TUint8 aVersion); williamr@2: williamr@2: protected: williamr@2: TUint8 iVersion; williamr@2: TUint8 iReserved[3]; williamr@2: }; williamr@2: williamr@2: /** williamr@2: * Versioning information for connection arguments williamr@2: * @publishedAll williamr@2: * @released since v7.0s williamr@2: */ williamr@2: const TUint8 KConnArgVersion1 = 1; williamr@2: williamr@2: /** williamr@2: Versioning information for connection arguments williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: const TUint8 KConnArgVersion2 = 2; williamr@2: williamr@2: class TConnectionInfo : public TConnArgBase williamr@2: /** williamr@2: @publishedAll williamr@2: @released since v7.0s williamr@2: */ williamr@2: { williamr@2: public: williamr@2: inline TConnectionInfo(); williamr@2: TConnectionInfo(const TDesC8& aConnectionInfo /*as passed to ::Bearer/::NoBearer*/); williamr@2: inline TConnectionInfo(TUint32 aIapId, TUint32 aNetId); williamr@2: williamr@2: static TBool IsLocalBearer(const TDesC8& aConnectionInfo); williamr@2: williamr@2: protected: williamr@2: inline TConnectionInfo(TUint8 aVersion, TUint32 aIapId, TUint32 aNetId); williamr@2: williamr@2: public: williamr@2: TUint32 iIapId; williamr@2: TUint32 iNetId; williamr@2: }; williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released since v7.0s williamr@2: */ williamr@2: typedef TPckgBuf TConnectionInfoBuf; williamr@2: williamr@2: class TConnectionInfoV2 : public TConnectionInfo williamr@2: /** williamr@2: * Connection information structure (version 2) williamr@2: * Extends basic connection info with connection type information williamr@2: * @publishedPartner williamr@2: * @released since v7.0s williamr@2: * @see TConnectionInfo williamr@2: */ williamr@2: { williamr@2: public: williamr@2: inline TConnectionInfoV2(); williamr@2: inline TConnectionInfoV2(TUint32 aIapId, TUint32 aNetId, TConnectionType aConnectionType); williamr@2: inline TConnectionType ConnectionType(); williamr@2: williamr@2: protected: williamr@2: inline TConnectionInfoV2(TUint8 aVersion, TUint32 aIapId, TUint32 aNetId, TConnectionType aConnectionType); williamr@2: williamr@2: private: williamr@2: TConnectionType iConnectionType; williamr@2: }; williamr@2: williamr@2: /** williamr@2: @publishedPartner williamr@2: @released since v7.0s williamr@2: */ williamr@2: typedef TPckgBuf TConnectionInfoV2Buf; williamr@2: williamr@2: class TSubConnectionInfo : public TConnArgBase williamr@2: /** williamr@2: * Base class for information about a subconnection williamr@2: * @publishedPartner williamr@2: * @released since v7.0s williamr@2: * @note Classes for information about a specific connection type should derive from this class williamr@2: * @note Generic classes for most bearers are defined in nifconninfo.h williamr@2: * @note Classes with increasingly specific parameters for a connection type should derive from the more generic class of the same connection type, as clients can assume that any less specific TSubConnectionInfo-derived classes are acceptable for use in GetSubConnectionInfo() calls. williamr@2: */ williamr@2: { williamr@2: public: williamr@2: inline TSubConnectionInfo(); williamr@2: williamr@2: public: williamr@2: TSubConnectionUniqueId iSubConnectionUniqueId; williamr@2: TConnectionType iConnectionType; williamr@2: TTime iTimeStarted; williamr@2: }; williamr@2: williamr@2: /** williamr@2: The following classes are used with RConnection::AllInterfaceNotification() to receive information williamr@2: about interfaces coming up and going down. williamr@2: */ williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released since v7.0s williamr@2: */ williamr@2: enum TConnInterfaceState williamr@2: { williamr@2: EInterfaceUp, williamr@2: EInterfaceDown williamr@2: }; williamr@2: williamr@2: class TInterfaceNotification williamr@2: /** williamr@2: @publishedAll williamr@2: @released since v7.0s williamr@2: */ williamr@2: { williamr@2: public: williamr@2: TConnectionInfo iConnectionInfo; williamr@2: TConnInterfaceState iState; williamr@2: }; williamr@2: williamr@2: /** williamr@2: @internalTechnology williamr@2: */ williamr@2: typedef TPckgBuf TInterfaceNotificationBuf; williamr@2: williamr@2: /** williamr@2: Types of events that can occur on a subconnection williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TSubConnectionEventType williamr@2: /** williamr@2: * Types of events that can occur on a subconnection williamr@2: * @publishedPartner williamr@2: * @released since v7.0s williamr@2: */ williamr@2: { williamr@2: ESubConnectionOpened, ///< Connection values 0-9999 for agent-based events williamr@2: ESubConnectionClosed, ///< Connection values 0-9999 for agent-based events williamr@2: ESubConnectionQoSChanged = 1000 ///< Connection values 10000-19999 for nif-based events williamr@2: }; williamr@2: williamr@2: class TSubConnectionEvent williamr@2: /** williamr@2: * Base class for structures that provide information related to a specific subconnection event williamr@2: * @note Classes derived from this must not exceed KMaxSubConnectionEventSize bytes in size williamr@2: * @publishedPartner williamr@2: * @released since v7.0s williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TSubConnectionEvent* CloneL() const; williamr@2: IMPORT_C TUint Length() const; williamr@2: williamr@2: protected: williamr@2: IMPORT_C TSubConnectionEvent(TSubConnectionEventType aEventType, TUint aLength); williamr@2: public: williamr@2: TSubConnectionUniqueId iSubConnectionUniqueId; williamr@2: TSubConnectionEventType iEventType; williamr@2: protected: williamr@2: TUint iLength; williamr@2: }; williamr@2: williamr@2: class TSubConnectionOpenedEvent : public TSubConnectionEvent williamr@2: /** williamr@2: * Information about a subconnection that has just been opened williamr@2: * @publishedPartner williamr@2: * @released since v7.0s williamr@2: * @note This class currently not passed to clients, as it is (essentially) empty williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TSubConnectionOpenedEvent(); williamr@2: }; williamr@2: williamr@2: class TSubConnectionClosedEvent : public TSubConnectionEvent williamr@2: /** williamr@2: * Information about a subconnection that has just been closed williamr@2: * @publishedPartner williamr@2: * @released since v7.0s williamr@2: * @note The time closed uses universal time as a time zone williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TSubConnectionClosedEvent(); williamr@2: public: williamr@2: TUint iTotalUplinkDataVolume; williamr@2: TUint iTotalDownlinkDataVolume; williamr@2: TTime iTimeClosed; // universal time williamr@2: }; williamr@2: williamr@2: class TSubConnectionQoSChangedEvent : public TSubConnectionEvent williamr@2: /** williamr@2: * Information about a subconnection on which the QoS settings have just changed. This only signals that QoS has changed. If the client wants to know what has changed should then get TSubConnectionInfo williamr@2: * @publishedPartner williamr@2: * @released since v7.0s williamr@2: * @note This will be produced by NIFs when QoS changes williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TSubConnectionQoSChangedEvent(); williamr@2: }; williamr@2: williamr@2: /** williamr@2: @internalTechnology williamr@2: */ williamr@2: typedef TPckgBuf TInterfaceNotificationBuf; williamr@2: williamr@2: williamr@2: /** williamr@2: The following classes are used to enumerate clients and sockets associated with a williamr@2: particular connection. RConnection::Control() is used to retrieve this information. williamr@2: */ williamr@2: williamr@2: class TConnectionEnumArg : public TConnArgBase williamr@2: /** williamr@2: for KCoEnumerateConnectionClients and KCoEnumerateConnectionSockets williamr@2: @publishedPartner williamr@2: @released since v7.0s williamr@2: */ williamr@2: { williamr@2: public: williamr@2: inline TConnectionEnumArg(); williamr@2: public: williamr@2: TUint iIndex; williamr@2: TUint iCount; williamr@2: }; williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: typedef TPckgBuf TConnEnumArgBuf; williamr@2: williamr@2: class TConnectionClientInfo williamr@2: /** williamr@2: @publishedPartner williamr@2: @released since v7.0s williamr@2: */ williamr@2: { williamr@2: public: williamr@2: inline TConnectionClientInfo(); williamr@2: inline TConnectionClientInfo(TUint aProcId, TUint aUid, TUint aThreadId); williamr@2: public: williamr@2: TProcessId iProcessId; williamr@2: TUid iUid; williamr@2: TThreadId iThreadId; williamr@2: }; williamr@2: williamr@2: class TConnectionGetClientInfoArg : public TConnArgBase williamr@2: /** williamr@2: for KCoGetConnectionClientInfo williamr@2: @publishedPartner williamr@2: @released since v7.0s williamr@2: */ williamr@2: { williamr@2: public: williamr@2: inline TConnectionGetClientInfoArg(); williamr@2: public: williamr@2: TUint iIndex; williamr@2: TConnectionClientInfo iClientInfo; williamr@2: }; williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: typedef TPckgBuf TConnGetClientInfoArgBuf; williamr@2: williamr@2: class TConnectionSocketInfo williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: { williamr@2: public: williamr@2: inline TConnectionSocketInfo(); williamr@2: public: williamr@2: TUint iAddressFamily; williamr@2: TUint iProtocol; williamr@2: TSockAddr iSourceAddress; williamr@2: TSockAddr iDestinationAddress; williamr@2: }; williamr@2: williamr@2: class TConnectionGetSocketInfoArg : public TConnArgBase williamr@2: /** williamr@2: for KCoGetConnectionSocketInfo williamr@2: williamr@2: @internalComponent williamr@2: */ williamr@2: { williamr@2: public: williamr@2: TConnectionGetSocketInfoArg(); williamr@2: public: williamr@2: TUint iIndex; williamr@2: TConnectionSocketInfo iSocketInfo; williamr@2: }; williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: typedef TPckgBuf TConnGetSocketInfoArgBuf; williamr@2: williamr@2: #include williamr@2: williamr@2: #endif // __ES_ENUM_H__