epoc32/include/es_enum.h
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
child 4 837f303aceeb
permissions -rw-r--r--
Final list of Symbian^2 public API header files
williamr@2
     1
// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@2
     4
// 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
     5
// which accompanies this distribution, and is available
williamr@2
     6
// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@2
    14
//
williamr@2
    15
williamr@2
    16
#if !defined (__ES_ENUM_H__)
williamr@2
    17
#define __ES_ENUM_H__
williamr@2
    18
williamr@2
    19
#include <e32std.h>
williamr@2
    20
#include <nifvar.h>
williamr@2
    21
#include <es_sock.h>
williamr@2
    22
williamr@2
    23
class TConnArgBase
williamr@2
    24
/**
williamr@2
    25
 * Base class for many arguments to RConnection functions.  Provides versioning information.
williamr@2
    26
 * @note Not intended for user instantiation
williamr@2
    27
 * @publishedAll
williamr@2
    28
 * @released since v7.0s
williamr@2
    29
 */
williamr@2
    30
	{
williamr@2
    31
public:
williamr@2
    32
	inline TConnArgBase();
williamr@2
    33
	inline TUint8 Version() const;
williamr@2
    34
williamr@2
    35
protected:
williamr@2
    36
	inline TConnArgBase(TUint8 aVersion);
williamr@2
    37
williamr@2
    38
protected:
williamr@2
    39
	TUint8 iVersion;
williamr@2
    40
	TUint8 iReserved[3];
williamr@2
    41
	};
williamr@2
    42
williamr@2
    43
/**
williamr@2
    44
 * Versioning information for connection arguments
williamr@2
    45
 * @publishedAll
williamr@2
    46
 * @released since v7.0s
williamr@2
    47
 */
williamr@2
    48
const TUint8 KConnArgVersion1 = 1;
williamr@2
    49
williamr@2
    50
/**
williamr@2
    51
Versioning information for connection arguments
williamr@2
    52
williamr@2
    53
@publishedAll
williamr@2
    54
@released
williamr@2
    55
*/
williamr@2
    56
const TUint8 KConnArgVersion2 = 2;
williamr@2
    57
williamr@2
    58
class TConnectionInfo : public TConnArgBase
williamr@2
    59
/**
williamr@2
    60
@publishedAll
williamr@2
    61
@released since v7.0s
williamr@2
    62
*/
williamr@2
    63
	{
williamr@2
    64
public:
williamr@2
    65
	inline TConnectionInfo();
williamr@2
    66
	TConnectionInfo(const TDesC8& aConnectionInfo /*as passed to ::Bearer/::NoBearer*/);
williamr@2
    67
	inline TConnectionInfo(TUint32 aIapId, TUint32 aNetId);
williamr@2
    68
williamr@2
    69
	static TBool IsLocalBearer(const TDesC8& aConnectionInfo);
williamr@2
    70
	
williamr@2
    71
protected:
williamr@2
    72
	inline TConnectionInfo(TUint8 aVersion, TUint32 aIapId, TUint32 aNetId);
williamr@2
    73
williamr@2
    74
public:
williamr@2
    75
	TUint32 iIapId;
williamr@2
    76
	TUint32 iNetId;
williamr@2
    77
	};
williamr@2
    78
williamr@2
    79
/**
williamr@2
    80
@publishedAll
williamr@2
    81
@released since v7.0s
williamr@2
    82
*/
williamr@2
    83
typedef TPckgBuf<TConnectionInfo> TConnectionInfoBuf;
williamr@2
    84
williamr@2
    85
class TConnectionInfoV2 : public TConnectionInfo
williamr@2
    86
/**
williamr@2
    87
 * Connection information structure (version 2)
williamr@2
    88
 * Extends basic connection info with connection type information
williamr@2
    89
 * @publishedPartner
williamr@2
    90
 * @released since v7.0s
williamr@2
    91
 * @see TConnectionInfo
williamr@2
    92
*/
williamr@2
    93
	{
williamr@2
    94
public:
williamr@2
    95
	inline TConnectionInfoV2();
williamr@2
    96
	inline TConnectionInfoV2(TUint32 aIapId, TUint32 aNetId, TConnectionType aConnectionType);
williamr@2
    97
	inline TConnectionType ConnectionType();
williamr@2
    98
williamr@2
    99
protected:
williamr@2
   100
	inline TConnectionInfoV2(TUint8 aVersion, TUint32 aIapId, TUint32 aNetId, TConnectionType aConnectionType);
williamr@2
   101
williamr@2
   102
private:
williamr@2
   103
	TConnectionType iConnectionType;
williamr@2
   104
	};
williamr@2
   105
williamr@2
   106
/**
williamr@2
   107
@publishedPartner
williamr@2
   108
@released since v7.0s
williamr@2
   109
*/
williamr@2
   110
typedef TPckgBuf<TConnectionInfoV2> TConnectionInfoV2Buf;
williamr@2
   111
williamr@2
   112
class TSubConnectionInfo : public TConnArgBase
williamr@2
   113
/**
williamr@2
   114
 * Base class for information about a subconnection
williamr@2
   115
 * @publishedPartner
williamr@2
   116
 * @released since v7.0s
williamr@2
   117
 * @note Classes for information about a specific connection type should derive from this class
williamr@2
   118
 * @note Generic classes for most bearers are defined in nifconninfo.h
williamr@2
   119
 * @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
   120
 */
williamr@2
   121
	{
williamr@2
   122
public:
williamr@2
   123
	inline TSubConnectionInfo();
williamr@2
   124
williamr@2
   125
public:
williamr@2
   126
	TSubConnectionUniqueId iSubConnectionUniqueId;
williamr@2
   127
	TConnectionType iConnectionType;
williamr@2
   128
	TTime iTimeStarted;
williamr@2
   129
	};
williamr@2
   130
williamr@2
   131
/**
williamr@2
   132
The following classes are used with RConnection::AllInterfaceNotification() to receive information
williamr@2
   133
about interfaces coming up and going down.
williamr@2
   134
*/
williamr@2
   135
williamr@2
   136
/**
williamr@2
   137
@publishedAll
williamr@2
   138
@released since v7.0s
williamr@2
   139
*/
williamr@2
   140
enum TConnInterfaceState
williamr@2
   141
	{
williamr@2
   142
	EInterfaceUp,
williamr@2
   143
	EInterfaceDown
williamr@2
   144
	};
williamr@2
   145
williamr@2
   146
class TInterfaceNotification
williamr@2
   147
/**
williamr@2
   148
@publishedAll
williamr@2
   149
@released since v7.0s
williamr@2
   150
*/
williamr@2
   151
	{
williamr@2
   152
public:
williamr@2
   153
	TConnectionInfo iConnectionInfo;
williamr@2
   154
	TConnInterfaceState iState;
williamr@2
   155
	};
williamr@2
   156
williamr@2
   157
/**
williamr@2
   158
@internalTechnology
williamr@2
   159
*/
williamr@2
   160
typedef TPckgBuf<TInterfaceNotification> TInterfaceNotificationBuf;
williamr@2
   161
williamr@2
   162
/**
williamr@2
   163
Types of events that can occur on a subconnection
williamr@2
   164
williamr@2
   165
@publishedAll
williamr@2
   166
@released
williamr@2
   167
*/
williamr@2
   168
enum TSubConnectionEventType
williamr@2
   169
/**
williamr@2
   170
 * Types of events that can occur on a subconnection
williamr@2
   171
 * @publishedPartner
williamr@2
   172
 * @released since v7.0s
williamr@2
   173
 */
williamr@2
   174
	{
williamr@2
   175
	ESubConnectionOpened,           ///< Connection values 0-9999 for agent-based events
williamr@2
   176
	ESubConnectionClosed,           ///< Connection values 0-9999 for agent-based events
williamr@2
   177
	ESubConnectionQoSChanged = 1000 ///< Connection values 10000-19999 for nif-based events
williamr@2
   178
	};
williamr@2
   179
williamr@2
   180
class TSubConnectionEvent
williamr@2
   181
/**
williamr@2
   182
 * Base class for structures that provide information related to a specific subconnection event
williamr@2
   183
 * @note Classes derived from this must not exceed KMaxSubConnectionEventSize bytes in size
williamr@2
   184
 * @publishedPartner
williamr@2
   185
 * @released since v7.0s
williamr@2
   186
 */
williamr@2
   187
	{
williamr@2
   188
public:
williamr@2
   189
	IMPORT_C TSubConnectionEvent* CloneL() const;
williamr@2
   190
	IMPORT_C TUint Length() const;
williamr@2
   191
williamr@2
   192
protected:
williamr@2
   193
	IMPORT_C TSubConnectionEvent(TSubConnectionEventType aEventType, TUint aLength);
williamr@2
   194
public:
williamr@2
   195
	TSubConnectionUniqueId iSubConnectionUniqueId;
williamr@2
   196
	TSubConnectionEventType iEventType;
williamr@2
   197
protected:
williamr@2
   198
	TUint iLength;
williamr@2
   199
	};
williamr@2
   200
williamr@2
   201
class TSubConnectionOpenedEvent : public TSubConnectionEvent
williamr@2
   202
/**
williamr@2
   203
 * Information about a subconnection that has just been opened
williamr@2
   204
 * @publishedPartner
williamr@2
   205
 * @released since v7.0s
williamr@2
   206
 * @note This class currently not passed to clients, as it is (essentially) empty
williamr@2
   207
 */
williamr@2
   208
	{
williamr@2
   209
public:
williamr@2
   210
	IMPORT_C TSubConnectionOpenedEvent();
williamr@2
   211
	};
williamr@2
   212
williamr@2
   213
class TSubConnectionClosedEvent : public TSubConnectionEvent
williamr@2
   214
/**
williamr@2
   215
 * Information about a subconnection that has just been closed
williamr@2
   216
 * @publishedPartner
williamr@2
   217
 * @released since v7.0s
williamr@2
   218
 * @note The time closed uses universal time as a time zone
williamr@2
   219
 */
williamr@2
   220
	{
williamr@2
   221
public:
williamr@2
   222
	IMPORT_C TSubConnectionClosedEvent();
williamr@2
   223
public:
williamr@2
   224
	TUint iTotalUplinkDataVolume;
williamr@2
   225
	TUint iTotalDownlinkDataVolume;
williamr@2
   226
	TTime iTimeClosed;	// universal time
williamr@2
   227
	};
williamr@2
   228
williamr@2
   229
class TSubConnectionQoSChangedEvent : public TSubConnectionEvent
williamr@2
   230
/**
williamr@2
   231
 * 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
   232
 * @publishedPartner
williamr@2
   233
 * @released since v7.0s
williamr@2
   234
 * @note This will be produced by NIFs when QoS changes
williamr@2
   235
 */
williamr@2
   236
	{
williamr@2
   237
public:
williamr@2
   238
	IMPORT_C TSubConnectionQoSChangedEvent();
williamr@2
   239
	};
williamr@2
   240
williamr@2
   241
/**
williamr@2
   242
@internalTechnology
williamr@2
   243
*/
williamr@2
   244
typedef TPckgBuf<TInterfaceNotification> TInterfaceNotificationBuf;
williamr@2
   245
williamr@2
   246
williamr@2
   247
/**
williamr@2
   248
The following classes are used to enumerate clients and sockets associated with a 
williamr@2
   249
particular connection.  RConnection::Control() is used to retrieve this information.
williamr@2
   250
*/
williamr@2
   251
williamr@2
   252
class TConnectionEnumArg : public TConnArgBase
williamr@2
   253
/**
williamr@2
   254
for KCoEnumerateConnectionClients and KCoEnumerateConnectionSockets
williamr@2
   255
@publishedPartner
williamr@2
   256
@released since v7.0s
williamr@2
   257
*/
williamr@2
   258
	{
williamr@2
   259
public:
williamr@2
   260
	inline TConnectionEnumArg();
williamr@2
   261
public:
williamr@2
   262
	TUint iIndex;
williamr@2
   263
	TUint iCount;
williamr@2
   264
	};
williamr@2
   265
williamr@2
   266
/**
williamr@2
   267
@internalComponent
williamr@2
   268
*/
williamr@2
   269
typedef TPckgBuf<TConnectionEnumArg> TConnEnumArgBuf;
williamr@2
   270
williamr@2
   271
class TConnectionClientInfo
williamr@2
   272
/**
williamr@2
   273
@publishedPartner
williamr@2
   274
@released since v7.0s
williamr@2
   275
*/
williamr@2
   276
	{
williamr@2
   277
public:
williamr@2
   278
	inline TConnectionClientInfo();
williamr@2
   279
	inline TConnectionClientInfo(TUint aProcId, TUint aUid, TUint aThreadId);
williamr@2
   280
public:
williamr@2
   281
	TProcessId iProcessId;
williamr@2
   282
	TUid iUid;
williamr@2
   283
	TThreadId iThreadId;
williamr@2
   284
	};
williamr@2
   285
williamr@2
   286
class TConnectionGetClientInfoArg : public TConnArgBase
williamr@2
   287
/**
williamr@2
   288
for KCoGetConnectionClientInfo
williamr@2
   289
@publishedPartner
williamr@2
   290
@released since v7.0s
williamr@2
   291
*/
williamr@2
   292
	{
williamr@2
   293
public:
williamr@2
   294
	inline TConnectionGetClientInfoArg();
williamr@2
   295
public:
williamr@2
   296
	TUint iIndex;
williamr@2
   297
	TConnectionClientInfo iClientInfo;
williamr@2
   298
	};
williamr@2
   299
williamr@2
   300
/**
williamr@2
   301
@internalComponent
williamr@2
   302
*/
williamr@2
   303
typedef TPckgBuf<TConnectionGetClientInfoArg> TConnGetClientInfoArgBuf;
williamr@2
   304
williamr@2
   305
class TConnectionSocketInfo
williamr@2
   306
/**
williamr@2
   307
@internalComponent
williamr@2
   308
*/
williamr@2
   309
	{
williamr@2
   310
public:
williamr@2
   311
	inline TConnectionSocketInfo();
williamr@2
   312
public:
williamr@2
   313
	TUint iAddressFamily;
williamr@2
   314
	TUint iProtocol;
williamr@2
   315
	TSockAddr iSourceAddress;
williamr@2
   316
	TSockAddr iDestinationAddress;
williamr@2
   317
	};
williamr@2
   318
williamr@2
   319
class TConnectionGetSocketInfoArg : public TConnArgBase
williamr@2
   320
/**
williamr@2
   321
for KCoGetConnectionSocketInfo
williamr@2
   322
williamr@2
   323
@internalComponent
williamr@2
   324
*/
williamr@2
   325
	{
williamr@2
   326
public:
williamr@2
   327
	TConnectionGetSocketInfoArg();
williamr@2
   328
public:
williamr@2
   329
	TUint iIndex;
williamr@2
   330
	TConnectionSocketInfo iSocketInfo;
williamr@2
   331
	};
williamr@2
   332
williamr@2
   333
/**
williamr@2
   334
@internalComponent
williamr@2
   335
*/
williamr@2
   336
typedef TPckgBuf<TConnectionGetSocketInfoArg> TConnGetSocketInfoArgBuf;
williamr@2
   337
williamr@2
   338
#include <es_enum.inl>
williamr@2
   339
williamr@2
   340
#endif // __ES_ENUM_H__