applayerpluginsandutils/httptransportplugins/httptransporthandler/msocketfactory.h
changeset 0 b16258d2340f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerpluginsandutils/httptransportplugins/httptransporthandler/msocketfactory.h	Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,94 @@
+// 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 __MSOCKETFACTORY_H__
+#define __MSOCKETFACTORY_H__
+
+#include <e32std.h>
+
+class MSocketConnectObserver;
+class MSocketListenObserver;
+class MSocketConnector;
+
+class MSocketFactory
+/**	
+The MSocketFactory class provides an API to obtain connected sockets. There
+are two methods of obtaining these connected sockets. The first is via a
+listening service on a specified local port that receives connections. The
+second method is a connecting service that initiates a connection to a 
+specified port on a specified remote host.
+
+The listening service requires an observer - an MSocketListenObserver. The
+observer is notified of either a received connection or of any errors that
+occur in the listening service. If a connection is received, the listening
+service continues. If an error occurs the listening service stops. There can
+be only a single listening service. Attempting to start a second service 
+will cause a panic. The listening service can be stopped at any time.
+
+The connecting service also requires an observer - an MSocketConnectObserver.
+There can be many connecting services active at any one time. Each one has
+an associated socket connector - MSocketConnector. This API allows each 
+connection request to be stopped at any time before the connection ends. The
+connection is ended when the socket connect observer has been notified of 
+either a successful connection or of an error occuring during the connection.
+Attempting to stop the socket connector after either of these notifications
+will cause an access violation - the socket connector is no longer valid.
+@see		MSocketListenObserver
+@see		MSocketConnectObserver
+@see		MSocketConnector
+*/
+	{
+public:	// methods
+
+/**	
+	This function requests that a listening service be started on the specified
+	port. This service listens for remote hosts making a connection with the 
+	specified port. 
+	@param		aObserver	The observer object for the listen service.
+	@param		aPort		The local port that should listen for connections.
+	@panic		EBadSocketListenerState	The listening service has already been started.
+*/
+	virtual void ListenL(MSocketListenObserver& aObserver, TUint16 aPort) =0;
+	
+/**	
+	Terminate the listening service. The listen observer will be notified on the
+	MSocketListenObserver::HandleListenError() API with an error code of 
+	KErrCancel when the listen service has actual stopped.
+	@panic		EInvariantFalse	The listening service has not been started.
+*/
+	virtual void StopListen() =0;
+
+/**	
+	Requests that a connection is attempted with the specified port on the 
+	specified remote host. The IP address can be either a numeric address or a
+	host name.
+	@param		aObserver		The observer object for this connection.
+	@param		aRemoteHost		The host name/IP address of the remote client.
+	@param		aRemotePort		The port number of the remote client.
+	@return		The socket connector that encapsulates the connection.
+	@leave		KErrNoMemory
+*/
+	virtual MSocketConnector& ConnectL(MSocketConnectObserver& aObserver, const TDesC8& aRemoteHost, TUint16 aRemotePort) =0;
+
+private:	// methods
+
+/**	
+	Reserved function for future expansion.
+*/
+	virtual void MSocketFactory_Reserved() =0;
+
+	};
+
+#endif	// __MSOCKETFACTORY_H__