diff -r 000000000000 -r b16258d2340f applayerpluginsandutils/httptransportplugins/httptransporthandler/csocket.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerpluginsandutils/httptransportplugins/httptransporthandler/csocket.h Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,120 @@ +// Copyright (c) 2003-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: +// + +#ifndef __CSOCKET_H__ +#define __CSOCKET_H__ + +#include +#include + +class MCommsInfoProvider; +class CHttpSecureSocket; +class CX509Certificate; + +class CSocket: public CBase +/** + The CSocket class encapsulates a socket. It provides a limited version of + the RSocket API. It can expanded to encapsulate the CSecureSocket API too. + @internalComponent +*/ + { +public: // enums + +/** + The TSocketType enumerates the type of socket, e.g if the socket should be + initiased for a specified protocol. Can be expanded to specify a secure + socket. + +*/ + enum TSocketType + { + /** The socket should be initialised for the specified protocol. + */ + EProtocolSocket = 0, + /** The socket should be not be initialised for any protocol. + */ + EBlankSocket, + }; + +public: // methods + + static CSocket* NewL(MCommsInfoProvider& aCommsInfoProvider, TSocketType aSocketType); + + virtual ~CSocket(); + + TInt Listen(TUint aQSize, TUint16 aPort); + + void Accept(CSocket& aBlankSocket, TRequestStatus& aStatus); + + void CancelAccept(); + + void Connect(TInetAddr& aAddr, TRequestStatus& aStatus); + + void CancelConnect(); + + void RecvOneOrMore(TDes8& aBuffer, TRequestStatus& aStatus); + + void CancelRecv(); + + void Send(const TDesC8& aBuffer, TRequestStatus& aStatus); + + void CancelSend(); + + void Shutdown(TRequestStatus& aStatus); + + void ShutdownImmediate(); + + void RemoteName(TInetAddr& aAddr); + + void LocalName(TInetAddr& aAddr); + + const CX509Certificate* ServerCert(); + + TInt CipherSuite(TDes8& aCipherSuite); + + void UpgradeToSecureL(TRequestStatus& aStatus, const TDesC8& aHostName); + + void CancelUpgradeToSecure(); + + TInt PendingBytesToRead (); + + void SetTCPCorking(TBool aValue); + +private: // methods + + CSocket(MCommsInfoProvider& aCommsInfoProvider); + + void ConstructL(TSocketType aSocketType); + +private: + +/** The comms info provider +*/ + MCommsInfoProvider& iCommsInfoProvider; + +/** The socket. +*/ + RSocket iSocket; + +/** The number of bytes read. +*/ + TSockXfrLength iBytesReceived; + +/** Controller for secure sockets, only created if a secure socket is required +*/ + CHttpSecureSocket* iSecureSocketController; + }; + +#endif // __CSOCKET_H__