messagingfw/wappushfw/tpush/DummyStack/DummyWapClient.h
changeset 62 db3f5fa34ec7
parent 0 8e480a14352b
equal deleted inserted replaced
60:9f5ae1728557 62:db3f5fa34ec7
       
     1 // Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 
       
    17 #ifndef __DUMMYWAPCLIENT_H__
       
    18 #define __DUMMYWAPCLIENT_H__
       
    19 
       
    20 #include <e32base.h>
       
    21 #include <in_sock.h>
       
    22 
       
    23 enum {KDefaultMessageSlots = 10};
       
    24 /**
       
    25  * forward declaration
       
    26  */
       
    27 class CDummyWapSession;
       
    28 class CDummyWSPCLConn;
       
    29 class CDummyWSPCOConn;
       
    30 class CDummyWSPConn;
       
    31 class CDummyWSPCOTrans;
       
    32 class CDummyWTLS;
       
    33 
       
    34 namespace Wap
       
    35 	{
       
    36 	// Bearer type definition
       
    37 	typedef enum
       
    38 		{
       
    39 		EAll,
       
    40 		EIP,
       
    41 		ESMS7,
       
    42 		ESMS,
       
    43 		EWAPSMS7,
       
    44 		EWAPSMS
       
    45 		} TBearer;
       
    46 
       
    47 	// Port number definition
       
    48 	typedef TUint16 TPort;
       
    49  
       
    50 	class TAddressInfo
       
    51 		{
       
    52 	public:
       
    53 		TName iName;			// Interface name
       
    54 		TInetAddr iAddress;		// Interface IP Address (*)
       
    55 		};
       
    56 	}
       
    57 
       
    58 
       
    59 
       
    60 /** Bound Connectionless Push
       
    61 */
       
    62 class CWapBoundCLPushService : public CBase
       
    63 {
       
    64 
       
    65 public: // creation/deletion
       
    66 	IMPORT_C static CWapBoundCLPushService* NewL();
       
    67 	IMPORT_C virtual ~CWapBoundCLPushService();
       
    68 
       
    69 public: // API methods
       
    70 
       
    71 	virtual TInt Connect(Wap::TBearer , Wap::TPort , TBool , TInetAddr ){return 0;}
       
    72 	virtual TInt Connect(Wap::TBearer aBearer, Wap::TPort aPort, TBool aSecure);
       
    73 	virtual TInt AwaitPush(TDes8& aPushHeaders, TDes8& aPushBody, TPckgBuf<TUint8>& aPushId, TRequestStatus& aReqStatus);
       
    74 	virtual void CancelAwaitPush();
       
    75 	virtual TInt GetLocalPort(Wap::TPort& /*aPort*/) { return KErrNotSupported;}	
       
    76 	virtual TInt GetLocalAddress(HBufC8*& /*aLocalHost*/) { return KErrNotSupported;}
       
    77 	virtual TInt GetBearer(Wap::TBearer& /*aBearer*/) { return KErrNotSupported;}
       
    78 	virtual TInt GetServerAddressL(HBufC8*& aRemoteHost);
       
    79 
       
    80 protected: // methods
       
    81 	IMPORT_C CWapBoundCLPushService();
       
    82 
       
    83 	CDummyWapSession* DummyWapSession();
       
    84 private:
       
    85 	CDummyWapSession* iSessHandle;
       
    86 	CDummyWSPCLConn* iClConnHandle;
       
    87 };
       
    88 
       
    89 /**
       
    90  * This represents a client session with the server
       
    91  */
       
    92 class RWAPServ
       
    93 	{
       
    94 public:
       
    95 	IMPORT_C RWAPServ();
       
    96 	IMPORT_C TInt Connect(TInt aDefaultMessageSlots = KDefaultMessageSlots);
       
    97 	IMPORT_C void Close();
       
    98 	CDummyWapSession* DummyWapSession();
       
    99 private:
       
   100 	CDummyWapSession* iSessHandle;
       
   101 	CDummyWSPCLConn* iClConnHandle;
       
   102 	};
       
   103 
       
   104 
       
   105 
       
   106 
       
   107 /**
       
   108  *  Base class used by all type of connections
       
   109  */
       
   110 class RWAPConn
       
   111 	{
       
   112 public:
       
   113 	typedef TUint16 TPort;
       
   114 	IMPORT_C virtual TInt Close();
       
   115 	IMPORT_C class RWTLS Wtls();
       
   116 
       
   117 	enum 
       
   118 		{
       
   119 		ERetCodeBase      = -5500,
       
   120 		EWSPCORetCodeBase = ERetCodeBase + 25,
       
   121 		EWSPCLRetCodeBase = ERetCodeBase + 50,
       
   122 		EWTPRetCodeBase   = ERetCodeBase + 75,
       
   123 		EWDPRetCodeBase   = ERetCodeBase + 100,
       
   124 		EWTLSRetCodeBase  = ERetCodeBase + 125,
       
   125 		ERetCodeTop       = ERetCodeBase + 200
       
   126 		};
       
   127 	enum TReturnCodes
       
   128 		{  
       
   129 		EMoreData           = ERetCodeBase + 0,
       
   130 		EBearerError        = ERetCodeBase + 1,
       
   131 		EPortAlreadyBound   = ERetCodeBase + 2,
       
   132 		ECannotOpenPort     = ERetCodeBase + 3,
       
   133 		ETooManyConnections = ERetCodeBase + 4,
       
   134 		EBadConnection      = ERetCodeBase + 5,
       
   135 		EBufferTooSmall     = ERetCodeBase + 6
       
   136 		};
       
   137 	enum TMethod 
       
   138 		{
       
   139 		EGet = 0x40,
       
   140 		EOptions = 0x41,
       
   141 		EHead = 0x42,
       
   142 		EDelete = 0x43,
       
   143 		ETrace = 0x44,
       
   144 		EPost = 0x60,
       
   145 		EPut = 0x61
       
   146 		};
       
   147 protected:
       
   148 	CDummyWSPConn* iDummyConn;
       
   149 	};
       
   150 
       
   151 
       
   152 
       
   153 class RWTLS 
       
   154 	{
       
   155 public:
       
   156 	enum TReturnCodes
       
   157 		{
       
   158 		EOutOfMemory            = RWAPConn::EWTLSRetCodeBase + 0,
       
   159 		ESocketError            = RWAPConn::EWTLSRetCodeBase + 1,
       
   160 		EBadParameters          = RWAPConn::EWTLSRetCodeBase + 2,
       
   161 		ESocketError2           = RWAPConn::EWTLSRetCodeBase + 3,
       
   162 		EResumeIDNotFound       = RWAPConn::EWTLSRetCodeBase + 4,
       
   163 		EResumeError            = RWAPConn::EWTLSRetCodeBase + 5,
       
   164 		ERenegotiationRequest   = RWAPConn::EWTLSRetCodeBase + 6,
       
   165 		EIllegalCall            = RWAPConn::EWTLSRetCodeBase + 7,
       
   166 		EConnectionCloseNotify  = RWAPConn::EWTLSRetCodeBase + 8,
       
   167 		ESessionCloseNotify     = RWAPConn::EWTLSRetCodeBase + 9,
       
   168 		ENoConnection           = RWAPConn::EWTLSRetCodeBase + 10,
       
   169 		EUnexpectedMessage      = RWAPConn::EWTLSRetCodeBase + 11,
       
   170 		EBadRecordMac           = RWAPConn::EWTLSRetCodeBase + 12,
       
   171 		EDecryptionFailed       = RWAPConn::EWTLSRetCodeBase + 13,
       
   172 		ERecordOverflow         = RWAPConn::EWTLSRetCodeBase + 14,
       
   173 		EHandshakeFailure       = RWAPConn::EWTLSRetCodeBase + 15,
       
   174 		EDecompressionFailure   = RWAPConn::EWTLSRetCodeBase + 16,
       
   175 		EBadCertificate         = RWAPConn::EWTLSRetCodeBase + 17,
       
   176 		EUnsupportedCertificate = RWAPConn::EWTLSRetCodeBase + 18,
       
   177 		ECertificateRevoked     = RWAPConn::EWTLSRetCodeBase + 19,
       
   178 		ECertificateExpired     = RWAPConn::EWTLSRetCodeBase + 20,
       
   179 		ECertificateUnknown     = RWAPConn::EWTLSRetCodeBase + 21,
       
   180 		EIllegalParameter       = RWAPConn::EWTLSRetCodeBase + 22,
       
   181 		EUnknownCA              = RWAPConn::EWTLSRetCodeBase + 23,
       
   182 		EAccessDenied           = RWAPConn::EWTLSRetCodeBase + 24,
       
   183 		EDecodeError            = RWAPConn::EWTLSRetCodeBase + 25,
       
   184 		EDecryptError           = RWAPConn::EWTLSRetCodeBase + 26,
       
   185 		EUnknownKeyId           = RWAPConn::EWTLSRetCodeBase + 27,
       
   186 		EDisableKeyId           = RWAPConn::EWTLSRetCodeBase + 28,
       
   187 		EKeyExchangeDisabled    = RWAPConn::EWTLSRetCodeBase + 29,
       
   188 		ESessionNotReady        = RWAPConn::EWTLSRetCodeBase + 30,
       
   189 		EUnknownParameterIndex  = RWAPConn::EWTLSRetCodeBase + 31,
       
   190 		EDuplicateFinishedRecv  = RWAPConn::EWTLSRetCodeBase + 32,
       
   191 		EExportRestriction      = RWAPConn::EWTLSRetCodeBase + 33,
       
   192 		EProtocolVersion        = RWAPConn::EWTLSRetCodeBase + 34,
       
   193 		EInsufficientSecurity   = RWAPConn::EWTLSRetCodeBase + 35,
       
   194 		EInternalError          = RWAPConn::EWTLSRetCodeBase + 36,
       
   195 		EUserCanceled           = RWAPConn::EWTLSRetCodeBase + 37,
       
   196 		ENoRenegotiation        = RWAPConn::EWTLSRetCodeBase + 38,
       
   197 
       
   198 		EErrGeneral             = RWAPConn::EWTLSRetCodeBase + 39,
       
   199 		EErrBulk                = RWAPConn::EWTLSRetCodeBase + 40,
       
   200 		EErrMac                 = RWAPConn::EWTLSRetCodeBase + 41,
       
   201 		EErrSequenceNumberMode  = RWAPConn::EWTLSRetCodeBase + 42,
       
   202 		EErrKeyRefreshRate      = RWAPConn::EWTLSRetCodeBase + 43,
       
   203 		};
       
   204 
       
   205 	enum TIdType 
       
   206 		{
       
   207 		EIdNull,
       
   208 		EText, 
       
   209 		EBinary, 
       
   210 		EKeyHashSha = 254, 
       
   211 		EX509Name = 255
       
   212 		};
       
   213 
       
   214 	enum TKeyExchangeSuite 
       
   215 		{    
       
   216 		ESharedSecret = 1,
       
   217 		EDHAnon,
       
   218 		EDHAnon512,
       
   219 		EDHAnon768,
       
   220 		ERsaAnon,
       
   221 		ERsaAnon512,
       
   222 		ERsaAnon768,
       
   223 		ERsa,
       
   224 		ERsa512,
       
   225 		ERsa768,
       
   226 		EEcdhAnon,
       
   227 		EEcdhAnon113,
       
   228 		EEcdhAnon131,
       
   229 		EEcdhEcdsa
       
   230 		};
       
   231 
       
   232 	IMPORT_C TInt SetKeyExchangeSuite(TKeyExchangeSuite aSuite,TIdType IdType,
       
   233 			const TDesC8& aKeyId);
       
   234 
       
   235 	enum TBulkEncryptionAlgorithm
       
   236 		{
       
   237 		EBulkNull     = 0x00,
       
   238 		ERc5_cbc_40   = 0x01,
       
   239 		ERc5_cbc_56   = 0x02,
       
   240 		ERc5_cbc      = 0x03,
       
   241 		EDes_cbc_40   = 0x04,
       
   242 		EDes_cbc      = 0x05,
       
   243 		E3Des_cbc_ede = 0x06,
       
   244 		EIdea_cbc_40  = 0x07,
       
   245 		EIdea_cbc_56  = 0x08,
       
   246 		EIdea_cbc     = 0x09
       
   247 		};
       
   248 	
       
   249 	enum TMacAlgorithm
       
   250 		{
       
   251 		ESha_0         = 0x00,
       
   252 		ESha_40        = 0x01,
       
   253 		ESha_80        = 0x02,
       
   254 		ESha           = 0x03,
       
   255 		ESha_xor_40    = 0x04,
       
   256 		EMd5_40        = 0x05,
       
   257 		EMd5_80        = 0x06,
       
   258 		EMd5           = 0x07
       
   259 		};
       
   260 		
       
   261 	struct TCipherSuite
       
   262 		{
       
   263 		TBulkEncryptionAlgorithm iBulkEncryptionAlgorithm;
       
   264 		TMacAlgorithm            iMacAlgorithm;
       
   265 		};
       
   266 	
       
   267 	typedef CArrayFixFlat<TCipherSuite> CipherSuiteArray;
       
   268 
       
   269 	IMPORT_C TInt SetCipherSuites(const CipherSuiteArray& aCipherSuites);
       
   270 			
       
   271 	enum TSequenceNumberMode 
       
   272 		{
       
   273 		ENotUsed = 0, 
       
   274 		EImplicit, 
       
   275 		EExplicit
       
   276 		};
       
   277 		
       
   278 	IMPORT_C TInt SetSequenceNumberMode(TSequenceNumberMode aMode);
       
   279 	IMPORT_C TInt SetKeyRefreshRate(TUint8 aRate);
       
   280 	IMPORT_C TInt SetSharedSecret(const TDesC8& aSharedSecret);
       
   281 	IMPORT_C TInt SetRecordLengthUsage(TBool aUsage);
       
   282 
       
   283 
       
   284 	// This is returned in the TRequestStatus on completion in 
       
   285 	// Connect and ConnectPhaseTwo.
       
   286 	enum HandshakeResult
       
   287 		{
       
   288 		EServerCertificateValid,
       
   289 		EServerCertificateNotValid,
       
   290 		ECertificateRequested,
       
   291 		EHandshakeOk,
       
   292 		EHandshakeError,
       
   293 		EHandshakeUserAbort
       
   294 		};
       
   295 
       
   296 	IMPORT_C void Connect(TRequestStatus& aStatus, TBool aTwoPhaseHandshake);
       
   297 
       
   298 
       
   299 	IMPORT_C void CancelConnect();
       
   300 	
       
   301 	IMPORT_C TInt ConnectPhaseTwo(TRequestStatus& aStatus);
       
   302 	IMPORT_C void CancelConnectPhaseTwo();
       
   303 	
       
   304 	IMPORT_C TInt GetCipherSuite(TCipherSuite& aCipherSuite) const;
       
   305 	IMPORT_C TInt GetSequenceNumberMode(TSequenceNumberMode& aMode) const;
       
   306 	IMPORT_C TInt GetKeyRefreshRate(TUint8& aRate) const;
       
   307 	IMPORT_C class RCertificate ServerCert();
       
   308 private:
       
   309 	friend class RWAPConn;
       
   310 	CDummyWTLS* iDummyWTLS;
       
   311 	};
       
   312 
       
   313 
       
   314 /**
       
   315  * This class represents a server certificate 
       
   316  */
       
   317 class RCertificate 
       
   318 	{
       
   319 public:
       
   320 	typedef TUint16 TCertId;
       
   321 	typedef TDesC8 TCertificate; // binary format
       
   322 
       
   323 	IMPORT_C TInt Load(const TDesC8& aSubject);
       
   324 	IMPORT_C TInt LoadById(const TCertId& aId);
       
   325 	IMPORT_C TInt Delete(const TDesC8& aSubject);
       
   326 	IMPORT_C TInt Save(const TCertificate& aCertificate, TDes8& aSubject);
       
   327 	IMPORT_C TInt FindFirst(TDes8& aSubject, TCertId& aId) const;
       
   328 	IMPORT_C TInt FindNext(TDes8& aSubject, TCertId& aId) const;
       
   329 
       
   330 	enum TStatus
       
   331 		{
       
   332 		EOk, 
       
   333 		ENotYetValid, 
       
   334 		EExpired, 
       
   335 		EUnknownCA, 
       
   336 		EPermanentStorageReadError
       
   337 		};
       
   338 
       
   339 	struct TInfo
       
   340 		{
       
   341 		TUint32 iValidNotBefore;     //  is first valid date of the cert (unix GMT). 
       
   342 		TUint32 iValidNotAfter;      //  is last valid date of the cert (unix GMT)
       
   343 		TUint16 iSubjectCharacterSet;//  is an IANA defined number.
       
   344 		TUint16 iIssuerCharacterSet; //  is an IANA defined number.
       
   345 		TDes8*  iSubject;             
       
   346 		TDes8*  iIssuer;             
       
   347 		TStatus iServerCertificateStatus;
       
   348 		TDes8*  iFingerPrint;
       
   349 		};
       
   350 
       
   351 	IMPORT_C TInt Info(TInfo& aInfo) const;
       
   352 private:
       
   353 	friend class RWTLS;
       
   354 	RCertificate(){}
       
   355 	};
       
   356 
       
   357 
       
   358 
       
   359 /**
       
   360  * this class represents a connection of type connectionless Push
       
   361  */
       
   362 class RWSPCLConn : public RWAPConn
       
   363 	{
       
   364 public:
       
   365 	IMPORT_C TInt Open(RWAPServ& aServer, TPort aLocalPort);
       
   366 	IMPORT_C TInt Open(RWAPServ& aServer,
       
   367 						const TDesC8& aRemoteHost,
       
   368 						TPort aRemotePort,
       
   369 						TPort aLocalPort,
       
   370 						Wap::TBearer aBearer,
       
   371 						TBool aSecureConn);
       
   372 	IMPORT_C TInt AwaitPush(TDes8& aPushHeaders, TDes8& aPushBody, TUint& aPushId, TRequestStatus& aReqStatus);
       
   373 	IMPORT_C void UnitWaitPush(TDes8& aBody,TDes8& aHeaders,TPushID& aID,TRequestStatus& aStatus);
       
   374 	IMPORT_C void CancelUnitWaitPush();
       
   375 	IMPORT_C void CancelAwaitPush();
       
   376 	IMPORT_C TInt UnitWaitPush(TDes8& aBody,TDes8& aHeaders,TPushID& aID);
       
   377 
       
   378 	enum TReturnCodes
       
   379 		{			
       
   380 		EBufferTooSmall      = EWSPCLRetCodeBase + 0,
       
   381 		EInvalidSession      = EWSPCLRetCodeBase + 1,
       
   382 		EParameterError      = EWSPCLRetCodeBase + 2,
       
   383 		ESessionNotConnected = EWSPCLRetCodeBase + 3,
       
   384 		ENotSupported        = EWSPCLRetCodeBase + 4,
       
   385 		EInvalidState        = EWSPCLRetCodeBase + 5,
       
   386 		ESessionClosed       = EWSPCLRetCodeBase + 6,
       
   387 		EMRUExceeded		 = EWSPCLRetCodeBase + 7,	
       
   388 		EInvalidBufferSize   = EWSPCLRetCodeBase + 8,
       
   389 		EDataNotAvailable    = EWSPCLRetCodeBase + 9,
       
   390 		EErrorTimeout        = EWSPCLRetCodeBase + 10
       
   391 		};
       
   392 private:
       
   393 	CDummyWSPCLConn* iClConnHandle;
       
   394 	};
       
   395 
       
   396 
       
   397 /**
       
   398  * Represents a connection-orientated transaction
       
   399  *
       
   400  */
       
   401 class RWSPCOTrans 
       
   402 	{
       
   403 public:
       
   404 	IMPORT_C RWSPCOTrans();
       
   405 	IMPORT_C ~RWSPCOTrans();
       
   406 
       
   407 	enum TDataType
       
   408 		{
       
   409 		EPushBody = 0,
       
   410 		EPushHeaders,
       
   411 		EResultStatus,
       
   412 		EResultBody,
       
   413 		EResultHeaders,
       
   414 		EInvokeUri,
       
   415 		EInvokeMethod,
       
   416 		EInvokeHeaders,
       
   417 		EInvokeBody,
       
   418 		EAckHeaders,
       
   419 		EAbortReason
       
   420 		};	
       
   421 
       
   422 	enum TState 
       
   423 		{
       
   424 		EInit = 0,
       
   425 		ERequesting,
       
   426 		EReplying,
       
   427 		EDone,
       
   428 		EAborted,
       
   429 		EPushing
       
   430 		};
       
   431 	typedef TPckgBuf<TState> TStatePckg;
       
   432 	typedef TPckgBuf<TInt> THandlePckg;
       
   433 	typedef TUint8 TAbortReason;
       
   434 	typedef TInt TTransID;
       
   435 
       
   436 	/** acknowledge a transaction - must be used for confirmed push */
       
   437 	IMPORT_C TInt Acknowledge(const TDesC8& aAckHeaders);
       
   438 
       
   439 	/** Retrieves the data associated to a transaction */
       
   440 	IMPORT_C TInt GetData(TDes8& aBuffer, TDataType aDataType, TInt* aSizeLeft = 0) const;
       
   441 	
       
   442 	/** Retrieve the state the transaction is in */
       
   443 	IMPORT_C TInt GetState(TState& aState) const;
       
   444 	IMPORT_C TInt Abort(TAbortReason aReason);
       
   445 	IMPORT_C TInt Release();
       
   446 	IMPORT_C TInt Id(TTransID& aId);
       
   447 private:
       
   448 	friend class CDummyWSPCOConn;
       
   449 	CDummyWSPCOTrans* iCoTransHandle;	
       
   450 	};
       
   451 
       
   452 enum TBearer
       
   453 {
       
   454 	EAll,
       
   455 	EIP,
       
   456 	ESMS7,
       
   457 	ESMS,
       
   458   	EWAPSMS7,
       
   459   	EWAPSMS
       
   460   	};
       
   461 
       
   462 /**
       
   463  * Connection-orientated connection
       
   464  *
       
   465  */
       
   466 class RWSPCOConn : public RWAPConn
       
   467 	{
       
   468 public:
       
   469 	IMPORT_C TInt Open(RWAPServ& aServer, const TDesC8& aRemoteHost, TPort aRemotePort, TPort aLocalPort,
       
   470 		TBearer aBearer, TBool aSecureConn);
       
   471 	// Open fully defined
       
   472 	IMPORT_C virtual TInt Close();
       
   473 
       
   474 	IMPORT_C TInt Connect(const TDesC8& aClientHeaders, class CCapCodec* aCap = 0);
       
   475 	IMPORT_C TInt Disconnect();
       
   476 	
       
   477 	IMPORT_C TInt Suspend();
       
   478 	IMPORT_C TInt Resume(RWSPCOConn& aBlankConn, const TDesC8& aHeaders);
       
   479 
       
   480 	enum TSessionState
       
   481 		{
       
   482 		EInit = 0,
       
   483 		EConnecting,
       
   484 		EConnected,
       
   485 		ESuspended,
       
   486 		EResuming,
       
   487 		EReplying,
       
   488 		EDisconnected
       
   489 		};
       
   490 	enum TSessionDataType 
       
   491 		{
       
   492 		EServerHeaders = 12,
       
   493 		EClientHeaders,
       
   494 		ECapabilities,
       
   495 		ERedirectOptions,
       
   496 		ERedirectAddresses,
       
   497 		EQueueLen,
       
   498 		EErrorHeaders,
       
   499 		EErrorBody,
       
   500 		EDisconReason,
       
   501 		ESuspendReason
       
   502 		};
       
   503 
       
   504 	IMPORT_C TInt GetSessionState(TSessionState& aState) const;
       
   505 	IMPORT_C TInt GetSessionData(TDes8& aData, TSessionDataType aType) const;
       
   506 
       
   507 	IMPORT_C TInt CreateTransaction(TMethod aMethod, const TDesC& aURI, const TDesC8& aHeaders, 
       
   508 		const TDesC8& aBody, RWSPCOTrans& aTrans);
       
   509 	
       
   510 	typedef TPckgBuf<TInt> TEvent;
       
   511 
       
   512 	/** Gets next session or transaction event on this session */
       
   513 	IMPORT_C void GetEvent(TEvent& aEvent, RWSPCOTrans& aTrans, TRequestStatus& aStatus) const;
       
   514 	/** Cancel the asynchronous GetEvent operation */		
       
   515 	IMPORT_C void CancelGetEvent();
       
   516 
       
   517 	/** Gets next session or transaction event on this session (synchronous version */
       
   518 	IMPORT_C TInt GetEvent(TEvent& aEvent, RWSPCOTrans& aTrans) const; 
       
   519 		
       
   520 	/** Return the number of events pending for the session */
       
   521 	IMPORT_C TInt GetNrOfEvents(TUint& aNrOfEvents) const;
       
   522 
       
   523 	enum TReturnCodes
       
   524 		{
       
   525 		EBufferTooSmall      = EWSPCORetCodeBase + 0,
       
   526 		EInvalidSession      = EWSPCORetCodeBase + 1,
       
   527 		EInvalidTransaction  = EWSPCORetCodeBase + 2,
       
   528 		EParameterError      = EWSPCORetCodeBase + 3,
       
   529 		ESessionNotConnected = EWSPCORetCodeBase + 4,
       
   530 		ENotSupported        = EWSPCORetCodeBase + 5,
       
   531 		EInvalidState        = EWSPCORetCodeBase + 6,
       
   532 		ESessionClosed       = EWSPCORetCodeBase + 7,
       
   533 		EMRUExceeded         = EWSPCORetCodeBase + 8,
       
   534 		EInvalidBufferSize   = EWSPCORetCodeBase + 9,
       
   535 		EDataNotAvailable    = EWSPCORetCodeBase + 10,
       
   536 		EErrorTimeout        = EWSPCORetCodeBase + 11
       
   537 		};	
       
   538 
       
   539 	enum TEventType
       
   540 		{    
       
   541 		// session events
       
   542 		EDisconnect_ind_s = 0,
       
   543 		ESuspend_ind_s,
       
   544 		EResume_cnf_s,
       
   545 		EConnect_cnf_s,
       
   546 		ERedirect_ind_s,
       
   547 			
       
   548 		// transaction events
       
   549 		EMethodInvoke_cnf_t,
       
   550 		EMethodResult_ind_t,
       
   551 		EAbort_ind_t,
       
   552 		EPush_ind_t,
       
   553 		EConfirmedPush_ind_t,
       
   554 			
       
   555 		// exception events
       
   556 		EException_ind_e,
       
   557 		};
       
   558 private:
       
   559 	CDummyWSPCOConn* iCoConnHandle;
       
   560 	};
       
   561 
       
   562 
       
   563 #endif