datacommsserver/esockserver/test/providers/dummy/inc/dummypr_flow.h
branchRCL_3
changeset 29 9644881fedd0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/providers/dummy/inc/dummypr_flow.h	Tue May 25 14:00:39 2010 +0300
@@ -0,0 +1,153 @@
+// 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:
+// Dummy network flow
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#if !defined(__DUMMYPR_FLOW_H__)
+#define __DUMMYPR_FLOW_H__
+
+#include "dummypr_factory.h"
+#include <comms-infras/ss_protflow.h>
+#include <comms-infras/ss_subconnflow.h>
+#include <comms-infras/es_sap.h>
+#include <comms-infras/nifif.h>
+
+#include <comms-infras/ss_nodemessages_dataclient.h>
+#include <comms-infras/ss_nodemessages_flow.h>
+
+
+namespace ESock
+{
+
+
+class CDummyFlow : public CSubConnectionFlowBase,
+	public MSessionData,
+	public MSessionControl,
+	public MFlowBinderControl,
+	public MSessionControlNotify,
+	public MSessionDataNotify
+/**
+@internalComponent
+@released since v9.6
+ */
+	{
+public:
+    enum {EProtocolId = 254};
+    typedef CDummyFlowFactory FactoryType; //for factoryobject_cast to work
+
+	static CDummyFlow* NewL(CSubConnectionFlowFactoryBase& aFactory, const Messages::TNodeId& aSubConn, CProtocolIntfBase* aProtocolIntf);
+	void SetSSP(CServProviderBase& aSSP);
+
+	inline CServProviderBase* Provider();
+
+protected:
+	// Lifetime
+	CDummyFlow(CSubConnectionFlowFactoryBase& aFactory, const Messages::TNodeId& aSubConn, CProtocolIntfBase* aProtocolIntf);
+	virtual ~CDummyFlow();
+	void SetSockType(TUint aSockType);
+	TInt LockToConnectionInfo();
+
+	// MSessionData
+	virtual TUint Write(const TDesC8& aDesc,TUint aOptions, TSockAddr* anAddr);
+	virtual TInt Write(RMBufChain& aData, TUint aOptions, TSockAddr* anAddr);
+	virtual void GetData(TDes8& aDesc, TUint aOptions, TSockAddr* anAddr);
+	virtual TInt GetData(RMBufChain& aData, TUint aLength, TUint aOptions, TSockAddr* anAddr);
+
+	// MSessionControl
+	virtual void Start();
+	virtual void LocalName(TSockAddr& anAddr) const;
+	virtual void SetLocalName(TSockAddr& anAddr);
+	virtual void RemName(TSockAddr& anAddr) const;
+	virtual TInt SetRemName(TSockAddr& anAddr);
+	virtual TInt GetOption(TUint aLevel,TUint aName,TDes8& anOption) const;
+	virtual void Ioctl(TUint aLevel,TUint aName,TDes8* anOption);
+	virtual void CancelIoctl(TUint aLevel,TUint aName);
+	virtual TInt SetOption(TUint aLevel, TUint aName,const TDesC8 &anOption);
+	virtual void ActiveOpen();
+	virtual void ActiveOpen(const TDesC8& aConnectionData);
+	virtual TInt PassiveOpen(TUint aQueueSize);
+	virtual TInt PassiveOpen(TUint aQueueSize,const TDesC8& aConnectionData);
+	virtual void Shutdown(MSessionControl::TCloseType aOption);
+	virtual void Shutdown(MSessionControl::TCloseType aOption, const TDesC8& aDisconnectionData);
+	virtual void AutoBind();
+	virtual TInt SecurityCheck(MProvdSecurityChecker* aSecurityChecker);
+
+    // MFlowBinderControl
+    //session binders for CSocket
+    virtual MSessionControl* GetControlL(TInt aSessionType,MSessionControlNotify& aSessionControlNotify);
+    virtual MSessionData* BindL(MSessionDataNotify& aNotify);
+    virtual void Unbind();
+    virtual CSubConnectionFlowBase& CloneFlowL();
+	virtual CSubConnectionFlowBase* Flow();
+
+private:
+	// MSessionControlNotify
+    void ConnectComplete();
+	void ConnectComplete(const TDesC8& aConnectData);
+    void ConnectComplete(CSubConnectionFlowBase& anSSP);
+	void ConnectComplete(CSubConnectionFlowBase& anSSP,const TDesC8& aConnectData);
+	void CanClose(MSessionControlNotify::TDelete aDelete=MSessionControlNotify::EDelete);
+    void CanClose(const TDesC8& aDisconnectData,MSessionControlNotify::TDelete aDelete=MSessionControlNotify::EDelete);
+	TInt Error(TInt anError,TUint anOperationMask);
+	void Disconnect( );
+	void Disconnect(TDesC8& aDisconnectData);
+	void IoctlComplete(TDesC8* aBuf);
+	void DisconnectFromListener(CSubConnectionFlowBase& aSSP);
+	void SetLocalNameComplete();
+
+
+	// MSessionDataNotify
+	void NewData(TUint aCount);
+	void CanSend();
+
+protected:
+	// CSubConnectionFlowBase
+	virtual MFlowBinderControl* DoGetBinderControlL();
+
+	// Messages::ANode
+	virtual void ReceivedL(
+		const Messages::TRuntimeCtxId& aSender,
+		const Messages::TNodeId& aRecipient,
+		Messages::TSignatureBase& aMessage
+		);
+
+	void BindToL(TCFDataClient::TBindTo& aBindTo);
+
+
+private:
+	// Flow binders
+	MFlowBinderControl* iLowerFlowBinderControl;
+
+	// Lower session binding
+	MSessionControl* iLowerFlowControl;
+	MSessionData* iLowerFlowData;
+
+	// Upper session binding
+	MSessionControlNotify* iSessionControlNotify;
+	MSessionDataNotify* iSessionDataNotify;
+
+	RCFParameterFamilyBundleC iParamBundle;
+	};
+
+}
+
+
+#endif	// __DUMMYPR_FLOW_H__
+