--- /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__
+