diff -r 000000000000 -r 7f656887cf89 plugins/networking/winsockprt/inc/wsp_provider.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/networking/winsockprt/inc/wsp_provider.h Wed Jun 23 15:52:26 2010 +0100 @@ -0,0 +1,111 @@ +// wsp_provider.h +// +// Copyright (c) 2002 - 2010 Accenture. All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the "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: +// Accenture - Initial contribution +// + +#ifndef __WSP_PROVIDER_H__ +#define __WSP_PROVIDER_H__ + +#include +#include +#include "wsp_socket.h" + +class RWin32Factory; + +class CWinSockProviderBase : public CServProviderBase, public MWin32SocketObserver + { +protected: + virtual ~CWinSockProviderBase(); +protected: // From CServProviderBase. + virtual void LocalName(TSockAddr& anAddr) const; + virtual TInt SetLocalName(TSockAddr& anAddr); + virtual TInt SetRemName(TSockAddr& anAddr); + virtual TInt GetOption(TUint aLevel, TUint aName, TDes8& anOption) const; + virtual TInt SetOption(TUint aLevel, TUint aName, const TDesC8& anOption); + virtual void AutoBind(); + virtual void Ioctl(TUint aLevel, TUint aName, TDes8* anOption); + virtual void CancelIoctl(TUint aLevel, TUint aName); + virtual TInt PassiveOpen(TUint aQue, const TDesC8& aConnectionData); + virtual void Shutdown(TCloseType option, const TDesC8& aDisconnectData); + virtual void ActiveOpen(const TDesC8& aConnectionData); + virtual void Shutdown(TCloseType option); +protected: + CWinSockProviderBase(RWin32Factory& aWin32Factory); + void ConstructL(); + TInt FillSendBuffer(const TDesC8& aDataToSend); +protected: + TInetAddr iRemoteAddr; + RWin32Factory& iWin32Factory; + RWin32Socket iWin32Socket; + CWin32SocketWrapper* iSendSocketWrapper; + CWin32SocketWrapper* iReceiveSocketWrapper; + HBufC8* iSendBuffer; + HBufC8* iReceiveBuffer; + TPtrC8 iEsockReadBuffer; // A constant pointer descriptor over iReceiveBuffer, used to pass received data up to ESock. + TPtr8 iWinSockWriteBuffer; // A pointer descriptor over iRecevieBuffer, used to receive data from WinSock. + }; + + +class CWinSockTcpProvider : public CWinSockProviderBase + { +public: + static CWinSockTcpProvider* NewL(RWin32Factory& aWin32Factory); + static CWinSockTcpProvider* NewBlankLC(RWin32Factory& aWin32Factory); +private: // From CServProviderBase. + virtual void RemName(TSockAddr& anAddr) const; + virtual TUint Write(const TDesC8& aDesc, TUint options, TSockAddr* anAddr=NULL); + virtual void GetData(TDes8 &aDesc, TUint options, TSockAddr *anAddr=NULL); + virtual void Start(); + virtual void ActiveOpen(void); + virtual TInt PassiveOpen(TUint aQue); + virtual TInt GetOption(TUint aLevel, TUint aName, TDes8& anOption) const; + virtual TInt SetOption(TUint aLevel, TUint aName, const TDesC8& anOption); +private: // From MWin32SocketObserver. + virtual void HandleWin32SocketCompletion(TRequestType aRequestType, TInt aError); +private: + virtual ~CWinSockTcpProvider(); + CWinSockTcpProvider(RWin32Factory& aWin32Factory); + void ConstructL(RWin32Socket::TType aType); + void SetListeningSap(CWinSockTcpProvider& aListeningSap); + void HandleListeningSapStarted(); + void DoPassiveOpenL(TUint aQue); + void StartReceive(); +private: + CWin32SocketWrapper* iConnectSocketWrapper; + CWin32SocketWrapper* iAcceptSocketWrapper; + CWinSockTcpProvider* iAcceptSap; + CWinSockTcpProvider* iListeningSap; + }; + + +class CWinSockUdpProvider : public CWinSockProviderBase + { +public: + static CWinSockUdpProvider* NewL(RWin32Factory& aWin32Factory); +private: // From CServProviderBase. + virtual void RemName(TSockAddr& anAddr) const; + virtual TInt SetLocalName(TSockAddr& anAddr); + virtual TUint Write(const TDesC8& aDesc, TUint options, TSockAddr* anAddr=NULL); + virtual void GetData(TDes8 &aDesc, TUint options, TSockAddr *anAddr=NULL); + virtual void Start(); + virtual void ActiveOpen(void); + virtual TInt PassiveOpen(TUint aQue); +private: // From MWin32SocketObserver. + virtual void HandleWin32SocketCompletion(TRequestType aRequestType, TInt aError); +private: + virtual ~CWinSockUdpProvider(); + CWinSockUdpProvider(RWin32Factory& aWin32Factory); + void ConstructL(); +private: + TInetAddr iReceiveFromAddress; + }; + + +#endif // __WSP_PROVIDER_H__