diff -r 000000000000 -r dfb7c4ff071f datacommsserver/esockserver/test/protocols/ptestinternalsocket/src/proxyprotocol.h --- /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 +#include +#include + + +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 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 +