--- a/datacommsserver/esockserver/CoreProviders/src/coremcpractivities.cpp Mon Mar 15 12:45:15 2010 +0200
+++ b/datacommsserver/esockserver/CoreProviders/src/coremcpractivities.cpp Wed Mar 31 23:27:09 2010 +0300
@@ -146,7 +146,7 @@
NODEACTIVITY_ENTRY(KNoTag, MCprStates::TSelectNextLayer, MCprStates::TAwaitingSelectNextLayerCompleted, CoreNetStates::TNoTagOrBearerPresent)
//Special for the Meta Plane (don't just copy & paste)
- NODEACTIVITY_ENTRY(CoreNetStates::KBearerPresent, CoreNetStates::TStartServiceProvider, CoreNetStates::TAwaitingStarted, TTag<CoreNetStates::KBearerPresent>)
+// NODEACTIVITY_ENTRY(CoreNetStates::KBearerPresent, CoreNetStates::TStartServiceProvider, CoreNetStates::TAwaitingStarted, TTag<CoreNetStates::KBearerPresent>)
NODEACTIVITY_ENTRY(CoreNetStates::KBearerPresent, CoreNetStates::TRequestCommsBinderRetry, CoreNetStates::TAwaitingBinderResponse, TTag<CoreNetStates::KBearerPresent>)
NODEACTIVITY_ENTRY(CoreNetStates::KBearerPresent, CoreNetStates::TSendBindTo, CoreNetStates::TAwaitingBindToComplete, TTag<CoreNetStates::KBearerPresent>)
THROUGH_NODEACTIVITY_ENTRY(CoreNetStates::KBearerPresent, CoreActivities::ABindingActivity::TSendBindToComplete, MeshMachine::TNoTag)
@@ -163,10 +163,6 @@
FIRST_NODEACTIVITY_ENTRY(MCprStates::TAwaitingReConnectRequest, MeshMachine::TNoTag)
THROUGH_NODEACTIVITY_ENTRY(KNoTag, CReConnectActivity::TProcessReConnectRequest, MeshMachine::TNoTag)
- //Start reconnection by stopping the old MCpr
- NODEACTIVITY_ENTRY(KNoTag, CReConnectActivity::TStopStartedServiceProvider, CoreNetStates::TAwaitingStopped, MeshMachine::TNoTag)
- NODEACTIVITY_ENTRY(KNoTag, CReConnectActivity::TStartNextServiceProvider, CoreNetStates::TAwaitingStarted, MeshMachine::TNoTag)
-
//Build lower layer
NODEACTIVITY_ENTRY(KNoTag, CReConnectActivity::TBuildLowerLayer, CoreNetStates::TAwaitingBindToComplete, MeshMachine::TNoTag)
@@ -203,28 +199,6 @@
NODEACTIVITY_END()
}
-namespace MCprStartActivity
-{
-//Semantics of start on the meta plane differ from the one on connection plane.
-//Meta provider is started with the first requesting client and stopped with the last one.
-//Since in our reference MCprs we do not do anything on start or stop (except keeping the
-//sequences right for other activities) we are just responding back with the proper message.
-DECLARE_DEFINE_NODEACTIVITY(ECFActivityStart, MCprStart, TCFServiceProvider::TStart)
- NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TSendStarted, CoreNetStates::TAwaitingStart, MeshMachine::TNoTag)
-NODEACTIVITY_END()
-}
-
-namespace MCprStopActivity
-{
-//Semantics of start on the meta plane differ from the one on connection plane.
-//Meta provider is started with the first requesting client and stopped with the last one.
-//Since in our reference MCprs we do not do anything on start or stop (except keeping the
-//sequences right for other activities) we are just responding back with the proper message.
-DECLARE_DEFINE_NODEACTIVITY(ECFActivityStop, MCprStop, TCFServiceProvider::TStop)
- NODEACTIVITY_ENTRY(KNoTag, PRStates::TSendStopped, CoreNetStates::TAwaitingStop, MeshMachine::TNoTag)
-NODEACTIVITY_END()
-}
-
namespace MCprReportProviderStatusActivity
{
DECLARE_DEFINE_NODEACTIVITY(ECFActivityReportProviderStatus, MCprReportProviderStatus, TCFMcpr::TProviderStatusChangeRegistration)
@@ -272,14 +246,36 @@
NODEACTIVITY_END()
}
-namespace MCprDataClientStopActivity
+namespace MCprStartActivity
{
-DECLARE_DEFINE_CUSTOM_NODEACTIVITY(ECFActivityStopDataClient, MCprDataClientStop, TCFDataClient::TStop, MeshMachine::CNodeRetryActivity::NewL)
- FIRST_NODEACTIVITY_ENTRY(CoreNetStates::TAwaitingDataClientStop, MeshMachine::TNoTag)
- THROUGH_NODEACTIVITY_ENTRY(KNoTag, PRStates::TProcessDataClientStop, CoreNetStates::TNoTagOrDataClientsToStopBlockedByStarting)
+DECLARE_DEFINE_CUSTOM_NODEACTIVITY(ECFActivityStart, MCprStart, TCFServiceProvider::TStart, PRActivities::CStartActivity::NewL)
+ FIRST_NODEACTIVITY_ENTRY(CoreNetStates::TAwaitingStart, CoreNetStates::TNoTagOrBearerPresentBlockedByStop)
+ NODEACTIVITY_ENTRY(KNoTag, MCprStates::TSelectNextLayer, MCprStates::TAwaitingSelectNextLayerCompleted, CoreNetStates::TNoTagOrBearerPresent)
+ NODEACTIVITY_ENTRY(CoreNetStates::KBearerPresent, CoreNetStates::TBindSelfToPresentBearer, CoreNetStates::TAwaitingBindToComplete, TTag<CoreNetStates::KBearerPresent>)
- NODEACTIVITY_ENTRY(CoreNetStates::KDataClientsToStop, CoreNetStates::TStopDataClients, CoreNetStates::TAwaitingDataClientsStopped, MeshMachine::TNoTag)
- LAST_NODEACTIVITY_ENTRY(KNoTag, MeshMachine::TClearError)
+ //Start the service provider, use the default cancellation.
+ //Forward TCancel to the service provider, wait for TStarted or TError (via the Error Activity)
+ //When TStarted arrives after TCancel the activity will move to the nearest KErrorTag
+ NODEACTIVITY_ENTRY(CoreNetStates::KBearerPresent, CoreNetStates::TStartServiceProviderRetry, CoreNetStates::TAwaitingStarted, MeshMachine::TNoTagOrErrorTag)
+ LAST_NODEACTIVITY_ENTRY(KErrorTag, MeshMachine::TDoNothing)
+ //Start data clients, use the default cancellation.
+ //Forward TCancel to the self, wait for TCFDataClient::TStarted or TError (via the Error Activity)
+ //When TCFDataClient::TStarted arrives after TCancel the activity will move to the nearest KErrorTag
+ NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TStartSelf, CoreNetStates::TAwaitingDataClientStarted, MeshMachine::TNoTagOrErrorTag)
+ NODEACTIVITY_ENTRY(KErrorTag, CoreNetStates::TStopSelf, CoreNetStates::TAwaitingDataClientStopped, MeshMachine::TErrorTag)
+ LAST_NODEACTIVITY_ENTRY(KErrorTag, MeshMachine::TDoNothing)
+ LAST_NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TSendStarted)
+NODEACTIVITY_END()
+}
+
+namespace MCprStopActivity
+{
+DECLARE_DEFINE_CUSTOM_NODEACTIVITY(ECFActivityStop, MCprStop, TCFServiceProvider::TStop, MeshMachine::CNodeRetryActivity::NewL)
+ FIRST_NODEACTIVITY_ENTRY(CoreNetStates::TAwaitingStop, CoreNetStates::TActiveOrNoTagBlockedByBindTo)
+ THROUGH_NODEACTIVITY_ENTRY(KActiveTag, CoreNetStates::TCancelDataClientStart, MeshMachine::TNoTag)
+ NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TStopSelf, CoreNetStates::TAwaitingDataClientStopped, CoreNetStates::TNoTagOrNoBearer)
+ NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TSendStop, CoreNetStates::TAwaitingStopped, TTag<CoreNetStates::KNoBearer>)
+ LAST_NODEACTIVITY_ENTRY(CoreNetStates::KNoBearer, PRStates::TSendStoppedAndGoneDown)
NODEACTIVITY_END()
}
@@ -293,16 +289,15 @@
ACTIVITY_MAP_ENTRY(MCprSimpleSelectActivitySuper, MCprSimpleSelect)
ACTIVITY_MAP_ENTRY(MCprNoBearerActivity, MCprNoBearer)
ACTIVITY_MAP_ENTRY(MCprReConnectActivity, MCprReConnect)
- ACTIVITY_MAP_ENTRY(MCprStopActivity, MCprStop)
ACTIVITY_MAP_ENTRY(MCprAvailabilityNotificationActivity, MCprAvailability)
ACTIVITY_MAP_ENTRY(MCprBinderRequestActivity, MCprBinderRequest)
- ACTIVITY_MAP_ENTRY(MCprStartActivity, MCprStart)
ACTIVITY_MAP_ENTRY(MCprReportProviderStatusActivity, MCprReportProviderStatus)
ACTIVITY_MAP_ENTRY(MCprDataClientJoinActivity, MCprDataClientJoin)
ACTIVITY_MAP_ENTRY(MCprControlClientJoinActivity, MCprControlClientJoin)
ACTIVITY_MAP_ENTRY(MCprErrorRecoveryDefaultActivity, DefaultErrorRecovery)
ACTIVITY_MAP_ENTRY(MCprDataClientGoneDownActivity, MCprDataClientGoneDown)
- ACTIVITY_MAP_ENTRY(MCprDataClientStopActivity, MCprDataClientStop)
+ ACTIVITY_MAP_ENTRY(MCprStopActivity, MCprStop)
+ ACTIVITY_MAP_ENTRY(MCprStartActivity, MCprStart)
ACTIVITY_MAP_END_BASE(PRActivities, coreActivitiesMCpr)
//This activiy map supports legacy selection and the additional activity
@@ -796,27 +791,6 @@
__ASSERT_DEBUG(activity.iStartingSP->Type()&TCFClientType::EServProvider, User::Panic(KSpecAssert_ESockCoreProvcprac, 22));
}
-DEFINE_SMELEMENT(CReConnectActivity::TStopStartedServiceProvider, NetStateMachine::MStateTransition, CReConnectActivity::TContext)
-void CReConnectActivity::TStopStartedServiceProvider::DoL()
- {
- __ASSERT_DEBUG(iContext.iNodeActivity, CoreMCprPanic(KPanicNoActivity));
- CReConnectActivity& activity = static_cast<CReConnectActivity&>(*iContext.iNodeActivity);
-
- __ASSERT_DEBUG(activity.iStoppingSP, User::Panic(KSpecAssert_ESockCoreProvcprac, 23));
- activity.PostRequestTo(*activity.iStoppingSP, TCFServiceProvider::TStop(0).CRef());
- }
-
-DEFINE_SMELEMENT(CReConnectActivity::TStartNextServiceProvider, NetStateMachine::MStateTransition, CReConnectActivity::TContext)
-void CReConnectActivity::TStartNextServiceProvider::DoL()
- {
- __ASSERT_DEBUG(iContext.iNodeActivity, CoreMCprPanic(KPanicNoActivity));
- CReConnectActivity& activity = static_cast<CReConnectActivity&>(*iContext.iNodeActivity);
- __ASSERT_DEBUG(activity.iStartingSP, User::Panic(KSpecAssert_ESockCoreProvcprac, 24));
-
- //Start the service provider
- activity.PostRequestTo(*activity.iStartingSP, TCFServiceProvider::TStart().CRef());
- }
-
DEFINE_SMELEMENT(CReConnectActivity::TBuildLowerLayer, NetStateMachine::MStateTransition, CReConnectActivity::TContext)
void CReConnectActivity::TBuildLowerLayer::DoL()
{