--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/protocols/ptestinternalsocket/src/proxyprotocol.h Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,123 @@
+// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#if !defined(__PROXYPROTOCOL_H)
+#define __PROXYPROTOCOL_H
+
+#include "es_ptestinternalsocket.h"
+#include <es_prot.h>
+#include <comms-infras/nifif.h>
+#include <dns_qry.h>
+
+
+enum TDPanic
+ {
+ EBadProtocol = 1000,
+ EBadCall = 1001,
+ ENotBound = 1002,
+ ENotStarted = 1003,
+ EInterfaceNotDeleted = 1004,
+ EIdAndNoHolder = 1005,
+ EIfAndHolder = 1006,
+ ETestPanic = 1007
+ };
+
+void Panic(TDPanic aPanic);
+
+NONSHARABLE_CLASS(CProxyProtocol): public CProtocolBase
+ {
+public:
+
+ ~CProxyProtocol();
+
+ static CProxyProtocol *NewL(TInt aProtocol, TServerProtocolDesc* aProtoDesc);
+ CServProviderBase *NewSAPL(TUint aProtocol);
+ TBool CanCreateSockets();
+ void InitL(TDesC& aTag);
+ void BindL(CProtocolBase *aProtocol, TUint anId);
+ virtual void BindToL(CProtocolBase *protocol);
+ void StartL(void);
+ TInt Send(RMBufChain &,CProtocolBase* aSourceProtocol);
+ void Process(RMBufChain &,CProtocolBase* aSourceProtocol);
+ TInt Send(TDes8 &, TSockAddr *to,TSockAddr *from,CProtocolBase* aSourceProtocol);
+ void Process(TDes8 & ,TSockAddr *from,TSockAddr *to,CProtocolBase* aSourceProtocol);
+ void Identify(TServerProtocolDesc *)const;
+ TInt GetOption(TUint level,TUint name,TDes8 &anOption,CProtocolBase* aSourceProtocol);
+ TInt SetOption(TUint level,TUint name,const TDesC8& option,CProtocolBase* aSourceProtocol);
+ void Error(TInt anError,CProtocolBase* aSourceProtocol);
+ TBool IsStarted(){return iStarted;}
+private:
+ CProxyProtocol(TServerProtocolDesc* aProtoDesc);
+
+private:
+ TInt iType;
+ TServerProtocolDesc* iProtoDesc;
+ TBool iStarted;
+ CArrayFixFlat<CProtocolBase *> iProtocols;
+ };
+
+class MTestStepNotify
+ {
+public:
+ virtual void AboutToShutdown() = 0;
+ };
+
+NONSHARABLE_CLASS(CProxyProvd) : public CServProviderBase
+ {
+public:
+ static CProxyProvd *NewL(CProxyProtocol &aProtocol);
+ virtual void Ioctl(TUint level,TUint name,TDes8 *anOption);
+ void SetTestStepNotify(MTestStepNotify* aNotify) { iTestStepNotify = aNotify; }
+ void TestComplete(TProxyProtocolTestResult result);
+
+ void LocalName(TSockAddr &anAddr)const;
+ virtual TInt SetLocalName(TSockAddr &anAddr);
+ virtual void RemName(TSockAddr &anAddr)const;
+ virtual TInt SetRemName(TSockAddr &anAddr);
+ virtual TInt GetOption(TUint level,TUint name,TDes8 &anOption)const;
+ virtual TInt SetOption(TUint level,TUint name,const TDesC8 &anOption);
+
+ virtual void CancelIoctl(TUint aLevel,TUint aName);
+ virtual TInt Write(RMBufChain& aData, TUint options, TSockAddr* anAddr=NULL);
+ virtual TUint Write(const TDesC8& aDesc, TUint options, TSockAddr* anAddr);
+ virtual TInt GetData(RMBufChain& aData, TUint aLength, TUint options,TSockAddr* anAddr=NULL);
+ virtual void GetData(TDes8& aDesc,TUint options,TSockAddr* anAddr=NULL);
+ virtual void ActiveOpen(void);
+ virtual void ActiveOpen(const TDesC8 &aConnectionData);
+ virtual TInt PassiveOpen(TUint aQue);
+ virtual TInt PassiveOpen(TUint aQue,const TDesC8 &aConnectionData);
+ virtual void AutoBind( void );
+ virtual void Shutdown(TCloseType option);
+ virtual void Shutdown(TCloseType option,const TDesC8 &aDisconnectData);
+ virtual void Start();
+
+private:
+ CProxyProvd(CProxyProtocol &aProtocol);
+
+private:
+ TBool iIsBound;
+ CProxyProtocol *iProtocol;
+ MTestStepNotify *iTestStepNotify;
+ TSockAddr iAddr;
+ TBool iInputStopped;
+ TInt iListenErrorCode;
+ TBool iCancelIoctl; // Set when an IOCTL has been cancelled.
+
+ TBool iBlockOnClose; //Used by and test Ioctl to cause the socket to hang on close
+ TBool iCompleteIoctl;
+ };
+
+#endif //__PROXYPROTOCOL_H
+