datacommsserver/esockserver/test/providers/dummy/src/dummypr_subconnprov.cpp
changeset 0 dfb7c4ff071f
child 17 9ddb1d67ebaf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/providers/dummy/src/dummypr_subconnprov.cpp	Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,212 @@
+// Copyright (c) 2005-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 implementation file for a SubConnection Provider
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include <comms-infras/ss_log.h>
+#include <comms-infras/corescpractivities.h>
+#include <cs_subconparams.h>
+#include <cs_subconevents.h>
+
+#include "dummypr_subconnprov.h"
+#include "dummypr_metaconnprov.h"
+
+#include <elements/sd_mintercept.h>
+
+#ifdef __CFLOG_ACTIVE
+	#define KDummySCPRTag KESockConnectionTag
+#endif
+
+using namespace ESock;
+using namespace MeshMachine;
+
+//We reserve space for two preallocated activities that may start concurrently on the SCPR
+//node: destroy and data client stop.
+static const TUint KDefaultMaxPreallocatedActivityCount = 2;
+static const TUint KMaxPreallocatedActivitySize = sizeof(MeshMachine::CNodeRetryParallelActivity) + sizeof(MeshMachine::APreallocatedOriginators<4>);
+static const TUint KDummySCPRPreallocatedActivityBufferSize = KDefaultMaxPreallocatedActivityCount * KMaxPreallocatedActivitySize;
+
+namespace DummySCPRStates
+{
+DEFINE_SMELEMENT(TRaiseGranted, NetStateMachine::MStateTransition, DummySCPRStates::TContext)
+void TRaiseGranted::DoL()
+	{
+	if (iContext.Node().incomingStatus == TRUE)
+		{
+		//generate paramsgranted.
+		CSubConGenEventParamsGranted* grantedevent = CSubConGenEventParamsGranted::NewL();
+	    grantedevent->SetFamily(KSubConQoSFamily);
+	    iContext.Node().NotifyClientsL(*grantedevent);
+	    iContext.Node().incomingStatus = FALSE;
+		}
+	}
+
+DEFINE_SMELEMENT(TAwaitingReBindTo, NetStateMachine::MState, DummySCPRStates::TContext)
+TBool TAwaitingReBindTo::Accept()
+	{
+	const TLayerSelectionInfo* selectionInfo = static_cast<const TLayerSelectionInfo*>(
+		iContext.Node().AccessPointConfig().FindExtension(TLayerSelectionInfo::TypeId()));
+	ASSERT(selectionInfo); // should always be there
+	
+	TCFDataClient::TBindTo* bindToMsg = Messages::message_cast<TCFDataClient::TBindTo>(&iContext.iMessage);
+	if (bindToMsg && iContext.Node().ServiceProvider() && bindToMsg->iNodeId != iContext.Node().ServiceProvider()->RecipientId())
+	    {
+	    if (TCprConfigModifier::Is(selectionInfo->CprConfig(), TCprConfigModifier::ESCPRHangOnRebind))
+	        {
+	        return ETrue;
+	        }
+	    else if (TCprConfigModifier::Is(selectionInfo->CprConfig(), TCprConfigModifier::ESCPRFailOnRebind))
+	        {
+	        iContext.iMessage.ClearMessageId();
+	        Messages::RClientInterface::OpenPostMessageClose(iContext.NodeId(), iContext.iSender, 
+                Messages::TEBase::TError(KErrAbort).CRef());
+	        }
+	    }
+	return EFalse;
+	}
+
+DEFINE_SMELEMENT(TAwaitingBrokenStart, NetStateMachine::MState, DummySCPRStates::TContext)
+TBool TAwaitingBrokenStart::Accept()
+	{
+	const TLayerSelectionInfo* selectionInfo = static_cast<const TLayerSelectionInfo*>(
+		iContext.Node().AccessPointConfig().FindExtension(TLayerSelectionInfo::TypeId()));
+	ASSERT(selectionInfo); // should always be there
+
+	return (iContext.iMessage.IsMessage<TCFDataClient::TStart>() && 
+			TCprConfigModifier::Is(selectionInfo->CprConfig(), TCprConfigModifier::ESCPRHangOnStart));
+	}
+}
+
+namespace DummySCprParamsRequest
+{
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+DECLARE_DEFINE_NODEACTIVITY(ECFActivityParamRequest, dummySCprParamRequest, TCFScpr::TSetParamsRequest)
+	NODEACTIVITY_ENTRY(KNoTag, PRStates::TRespondWithCurrentParams, PRStates::TAwaitingParamRequest,  MeshMachine::TNoTag)
+#else
+DECLARE_DEFINE_NODEACTIVITY(ECFActivityParamRequest, dummySCprParamRequest, TCFScpr::TParamsRequest)
+	NODEACTIVITY_ENTRY(KNoTag, SCprStates::TRespondWithCurrentParams, SCprStates::TAwaitingParamRequest,  MeshMachine::TNoTag)
+#endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+NODEACTIVITY_END()
+}
+
+namespace DummyBindToActivity
+{
+DECLARE_DEFINE_NODEACTIVITY(ECFActivityBindTo, dummyBindTo, TCFDataClient::TBindTo)
+	FIRST_NODEACTIVITY_ENTRY(DummySCPRStates::TAwaitingReBindTo, MeshMachine::TNoTag)
+	NODEACTIVITY_ENTRY(KNoTag, MeshMachine::TDoNothing, CoreStates::TNeverAccept,  MeshMachine::TNoTag)
+	LAST_NODEACTIVITY_ENTRY(KNoTag, MeshMachine::TDoNothing)
+NODEACTIVITY_END()
+}
+
+namespace DummyBreakStartActivity
+{
+DECLARE_DEFINE_CUSTOM_NODEACTIVITY(ECFActivityStart, dummyBreakSCPrStart, TCFDataClient::TStart, PRActivities::CStartActivity::NewL)
+    FIRST_NODEACTIVITY_ENTRY(DummySCPRStates::TAwaitingBrokenStart, MeshMachine::TNoTag)
+	NODEACTIVITY_ENTRY(KNoTag, MeshMachine::TDoNothing, CoreStates::TNeverAccept,  MeshMachine::TNoTag)
+	LAST_NODEACTIVITY_ENTRY(KNoTag, MeshMachine::TDoNothing)
+NODEACTIVITY_END()
+}
+
+namespace DummyStartActivity
+{
+DECLARE_DEFINE_CUSTOM_NODEACTIVITY(ECFActivityStart, dummySCPrStart, TCFServiceProvider::TStart, PRActivities::CStartActivity::NewL)
+    FIRST_NODEACTIVITY_ENTRY(CoreNetStates::TAwaitingStart, MeshMachine::TNoTag)
+ 	THROUGH_NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TSendStarted, MeshMachine::TNoTag)
+ 	LAST_NODEACTIVITY_ENTRY(KNoTag, DummySCPRStates::TRaiseGranted)
+NODEACTIVITY_END()
+}
+
+// Activity Map
+namespace DummySCPRStates
+{
+DEFINE_ACTIVITY_MAP(stateMap)
+   ACTIVITY_MAP_ENTRY(DummySCprParamsRequest, dummySCprParamRequest)
+   ACTIVITY_MAP_ENTRY(DummyBindToActivity, dummyBindTo)
+   ACTIVITY_MAP_ENTRY(DummyBreakStartActivity, dummyBreakSCPrStart)   
+   ACTIVITY_MAP_ENTRY(DummyStartActivity, dummySCPrStart)   
+ACTIVITY_MAP_END_BASE(SCprActivities, coreSCprActivities)
+}
+
+CDummySubConnectionProvider* CDummySubConnectionProvider::NewL(ESock::CSubConnectionProviderFactoryBase& aFactory)
+    {
+    CDummySubConnectionProvider* self = new (ELeave) CDummySubConnectionProvider(aFactory);
+    CleanupStack::PushL(self);
+    self->ConstructL(KDummySCPRPreallocatedActivityBufferSize);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+
+CDummySubConnectionProvider::CDummySubConnectionProvider(CSubConnectionProviderFactoryBase& aFactory)
+:CCoreSubConnectionProvider(aFactory,DummySCPRStates::stateMap::Self())
+	{
+	LOG_NODE_CREATE(KDummySCPRTag, CDummySubConnectionProvider);
+	}
+
+CDummySubConnectionProvider::~CDummySubConnectionProvider()
+	{
+	LOG_NODE_DESTROY(KDummySCPRTag, CDummySubConnectionProvider);
+	}
+
+
+void CDummySubConnectionProvider::SetToIncomingL()
+	{
+ 	_LIT(KName,"Test1");
+ 	TBuf<5> paramName(KName);
+
+ 	const int qosParams = 128;
+
+	//RCFParameterFamilyBundle& pfb = CreateParameterBundleL();
+	//RParameterFamily family = pfb.CreateFamilyL(KSubConQoSFamily); //PJLEFT
+	RCFParameterFamilyBundle newBundle;
+	newBundle.CreateL();
+	iParameterBundle.Open(newBundle);
+	RParameterFamily family = newBundle.CreateFamilyL(KSubConQoSFamily);
+
+	// Create the generic set
+	CSubConQosGenericParamSet* isubConQosGenParSet = CSubConQosGenericParamSet::NewL(family, RParameterFamily::EGranted);
+
+    isubConQosGenParSet->SetHeaderMode(0);
+    isubConQosGenParSet->SetName(paramName);
+    isubConQosGenParSet->SetDownlinkBandwidth(qosParams);
+    isubConQosGenParSet->SetDownLinkMaximumBurstSize(qosParams);
+    isubConQosGenParSet->SetDownLinkAveragePacketSize(qosParams);
+    isubConQosGenParSet->SetDownLinkDelay(qosParams);
+    isubConQosGenParSet->SetDownLinkDelayVariation(qosParams);
+   	isubConQosGenParSet->SetDownLinkMaximumBurstSize(qosParams);
+   	isubConQosGenParSet->SetDownLinkPriority(qosParams);
+   	isubConQosGenParSet->SetDownLinkMaximumPacketSize(qosParams);
+
+   	isubConQosGenParSet->SetUpLinkAveragePacketSize(qosParams);
+   	isubConQosGenParSet->SetUpLinkDelay(qosParams);
+   	isubConQosGenParSet->SetUplinkBandwidth(qosParams);
+   	isubConQosGenParSet->SetUpLinkDelayVariation(qosParams);
+   	isubConQosGenParSet->SetUpLinkMaximumBurstSize(qosParams);
+   	isubConQosGenParSet->SetUpLinkMaximumPacketSize(qosParams);
+   	isubConQosGenParSet->SetUpLinkPriority(qosParams);
+
+ 	incomingStatus = ETrue;
+	}
+
+
+
+
+
+