applayerpluginsandutils/httptransportplugins/httptransporthandler/ctcptransportlayer.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerpluginsandutils/httptransportplugins/httptransporthandler/ctcptransportlayer.h Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,170 @@
+// 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 __CTCPTRANSPORTLAYER_H__
+#define __CTCPTRANSPORTLAYER_H__
+
+#include <e32base.h>
+#include <in_sock.h>
+#include <http/framework/logging.h>
+
+#include "chttptransportlayer.h"
+#include "msocketcontrollerfactory.h"
+#include "msocketconnectorstore.h"
+#include "msocketcontrollerstore.h"
+#include "mcommsinfoprovider.h"
+
+class CSocket;
+class CSocketListener;
+class CSocketConnector;
+class CSocketController;
+class MConnectionPrefsProvider;
+
+const TUint KUidTcpTransportLayer = 0x101f55ed;
+
+class CTcpTransportLayer : public CHttpTransportLayer,
+ public MSocketControllerFactory,
+ public MSocketConnectorStore,
+ public MSocketControllerStore,
+ public MCommsInfoProvider
+/**
+ The CTcpTransportLayer class provides an implementation of the ECOM
+ interface CHttpdTransportHandler. This implementation uses a TCP/IP transport
+ to provide input and output streams to connected remote hosts.
+
+ The CTcpTransportLayer class also provides the MSocketFactory API. This
+ API together with the MSocketListenObserver and MSocketConnectObserver APIs
+ are used to supply input and output streams to remote hosts.
+ @internalComponent
+ @see CHttpTransportLayer
+ @see MSocketListenObserver
+ @see MSocketConnectObserver
+*/
+ {
+public: // methods
+
+ static CTcpTransportLayer* NewL(TAny* aTransportConstructionParams);
+
+ virtual ~CTcpTransportLayer();
+
+private: // methods from CHttpTransportLayer
+
+ virtual void CHttpTransportLayer_Reserved();
+
+private: // methods from MSocketFactory
+
+ virtual void ListenL(MSocketListenObserver& aObserver, TUint16 aPort);
+
+ virtual void StopListen();
+
+ virtual MSocketConnector& ConnectL(MSocketConnectObserver& aObserver, const TDesC8& aRemoteHost, TUint16 aRemotePort);
+
+ virtual void MSocketFactory_Reserved();
+
+private: // methods from MSocketControllerFactory
+
+ virtual CSocketController* CreateSocketControllerLC(CSocket* aConnectedSocket);
+ virtual CSocketController* CreateSocketControllerLC(CSocket* aConnectedSocket, const TDesC& aRemoteHost, TUint16 aRemotePort, const TInetAddr& aRemoteAddr);
+ virtual void AddToStoreL(CSocketController* aSocketController);
+
+private: // methods from MSocketConnectorStore
+
+ virtual void ConnectionCompleted(CSocketConnector& aOrphanedSocketConnector);
+
+private: // methods from MSocketControllerStore
+
+ virtual void SocketControllerShutdown(CSocketController& aOrphanedSocketController);
+
+private: // methods from MCommsInfoProvider
+
+ virtual RSocketServ& SocketServer();
+
+ virtual TProtocolDesc& ProtocolDescription();
+
+ virtual RConnection& Connection();
+
+ virtual void SecurityPreferences(TBool& aDialogPrompt, MSecurityPolicy*& aSecurityPolicy);
+
+ virtual TBool OwnsConnection();
+
+ virtual TInt SessionId();
+
+ virtual TBool HasConnection();
+
+ void StartDefaultCommsConnectionL ();
+
+private: // methods
+
+ CTcpTransportLayer(MConnectionPrefsProvider& aTransLayerObserver);
+
+ void ConstructL(THttpTransportConstructionParams* aTransportConstructionParams);
+
+ inline MSocketControllerFactory& SocketControllerFactory();
+
+ inline MSocketConnectorStore& SocketConnectorStore();
+
+ inline MSocketControllerStore& SocketControllerStore();
+
+ inline MCommsInfoProvider& CommsInfoProvider();
+
+private: // attributes
+
+/** The connection preferences provider
+*/
+ MConnectionPrefsProvider& iConnectionPrefsProvider;
+
+/** The socket server session.
+*/
+ RSocketServ iSocketServer;
+
+/** The protocol description.
+*/
+ TProtocolDesc iProtocolDescription;
+
+/** Pointer to the socket connection required for multi-homing
+*/
+ RConnection* iConnection;
+
+/** Flag to indicate whether the comms connection is owned
+*/
+ TBool iOwnsConnection;
+
+/** Flag to indicate whether the socket connection is owned
+*/
+ TBool iOwnsSocketConnection;
+
+/** The socket listener object
+*/
+ CSocketListener* iSocketListener;
+
+/** The socket connector store
+*/
+ RPointerArray<CSocketConnector> iConnectorStore;
+
+/** The socket controller store
+*/
+ RPointerArray<CSocketController> iControllerStore;
+
+ TBool iPriority;
+
+/** Logger handle
+*/
+ __FLOG_DECLARATION_MEMBER2
+
+ };
+
+#include "ctcptransportlayer.inl"
+
+#endif // __CTCPTRANSPORTLAYER_H__