servicediscoveryandcontrol/pnp/test/upnp/SocketHandler/inc/rsockethandler.h
changeset 0 f5a58ecadc66
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/servicediscoveryandcontrol/pnp/test/upnp/SocketHandler/inc/rsockethandler.h	Tue Feb 02 01:12:20 2010 +0200
@@ -0,0 +1,93 @@
+// Copyright (c) 2008-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:
+// @internalAll
+// 
+//
+
+#ifndef __RSOCKETHANDLER_H__
+#define __RSOCKETHANDLER_H__
+
+#include <es_sock.h>
+#include <comms-infras/eintsock.h>
+
+#include "sockhandlerdefs.h"
+
+using namespace SockHandler;
+
+class CSocketHandler;
+
+
+/** 
+A SocketHandler observer.
+
+Implementor of this class will be notified on completion of socket operations from a socket handler.
+
+@internalAll
+*/
+class MSocketHandlerObserver
+	{
+public:
+	virtual void OpenComplete ( RInternalSocket& aSocket ) =0;
+	virtual void ConnectComplete () =0;
+	virtual void AcceptComplete ( RInternalSocket& aSocket ) =0;
+	virtual void SendComplete ( TInt aLength ) =0;
+	virtual void SendToComplete ( TInt aLength ) =0;
+	virtual void RecvComplete ( RMBufChain& aData ) =0;
+	virtual void RecvFromComplete ( RMBufChain& aData, const TSockAddr& aAddr ) =0;
+//	virtual void IoctlComplete () =0;
+	virtual void Error ( TOperation aOperation, TInt aError  ) =0;
+	};
+
+
+/**
+
+@internalAll
+*/
+class RSocketHandler
+	{
+	public:
+
+	IMPORT_C RSocketHandler ( MSocketHandlerObserver& aObserver );
+	IMPORT_C void Attach ( RInternalSocket& aSocket );
+
+	IMPORT_C void Connect ( const TSockAddr& aAddr );
+	IMPORT_C void Accept ();
+	
+	IMPORT_C void Send ( RMBufChain& aData );
+	IMPORT_C void SendTo ( const RMBufChain& aData, TSockAddr& aAddr );
+	IMPORT_C void Recv ();
+	IMPORT_C void RecvFrom ();
+
+//	IMPORT_C void Send ( const TDesC8& aData );
+//	IMPORT_C void SendTo ( const TDesC8& aData, TSockAddr& aAddr );
+	
+//	IMPORT_C void Ioctl ( TUint aCommand, TDes8* aData = 0, TUint aLevel = KLevelUnspecified );
+
+//	IMPORT_C void Cancel ( TOperation aOperation );
+	IMPORT_C void CancelAll ();
+	
+	private:
+	CSocketHandler* FreeSocketHandler ( TOperation aOperation );
+	CSocketHandler* ActiveSocketHandler ( TOperation aOperation );
+	void ActivateSocketHandler ( TSocketHandlerParams& aParams );
+	
+	private:
+	RInternalSocket					iSocket;			// Socket to perform operations. Not owned.
+	MSocketHandlerObserver&			iObserver;			// Observer for socket operational success completion & error conditons
+	
+	RPointerArray < CSocketHandler > iSocketHandlers;	// Number of socket handlers
+	TUint32							iReserved [ 2 ];	// reserved
+	};
+
+#endif // __RSOCKETHANDLER_H__