--- a/linklayercontrol/networkinterfacemgr/agentprcore/src/agentscpractivities.cpp Tue Feb 02 01:27:53 2010 +0200
+++ b/linklayercontrol/networkinterfacemgr/agentprcore/src/agentscpractivities.cpp Fri Apr 16 16:36:59 2010 +0300
@@ -24,6 +24,7 @@
//#include <comms-infras/corescprstates.h>
#include <comms-infras/corescpractivities.h>
#include <comms-infras/ss_nodemessages_dataclient.h>
+#include <elements/nm_messages_child.h>
#include "agentscprstates.h"
#include "agentscpractivities.h"
@@ -94,11 +95,30 @@
NODEACTIVITY_END()
}
+namespace AgentSCprDestroyActivity
+{
+//Overridden destroy for cleaning up the agent if its still about
+DECLARE_DEFINE_CUSTOM_NODEACTIVITY(ECFActivityDestroy, AgentSCprDestroy, Messages::TEChild::TDestroy, CoreActivities::CDestroyActivity::New)
+ FIRST_NODEACTIVITY_ENTRY(MeshMachine::TAwaitingDestroy, CoreActivities::CDestroyActivity::TNoTagBlockedByActivitiesOrLeavingDataClient)
+ ROUTING_NODEACTIVITY_ENTRY(KNoTag, AgentSCprStates::TNoTagOrProviderStopped)
+ NODEACTIVITY_ENTRY(KNoTag, AgentSCprStates::TStopAgent, AgentSCprStates::TAwaitingAgentDown, MeshMachine::TTag<CoreNetStates::KProviderStopped>)
+ ROUTING_NODEACTIVITY_ENTRY(CoreNetStates::KProviderStopped, CoreStates::TNoTagOrNoClients)
+
+ //The node mustn't go out of scope with clients present. The node must get rid of them first.
+ NODEACTIVITY_ENTRY(KNoTag, CoreActivities::CDestroyActivity::TMakeClientsLeaveOrProcessClientLeave, CoreStates::TAwaitingClientLeave, CoreActivities::CDestroyActivity::TNoTagOrNoTagBackwards)
+ THROUGH_NODEACTIVITY_ENTRY(KNoTag, CoreActivities::CDestroyActivity::TProcessClientLeave, TTag<CoreNetStates::KNoClients>)
+
+ THROUGH_NODEACTIVITY_ENTRY(CoreNetStates::KNoClients, PRStates::TProcessDestroy, MeshMachine::TNoTag)
+ NODEACTIVITY_ENTRY(KNoTag, MeshMachine::TDoNothing, MeshMachine::TAwaitingLeaveComplete, CoreActivities::CDestroyActivity::TNoTagOrNoTagBackwards)
+ LAST_NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TSendClientLeavingAndRemoveControlProvider)
+NODEACTIVITY_END()
+}
// Activity Map
namespace AgentSCprActivities
{
DEFINE_EXPORT_ACTIVITY_MAP(agentSCprActivities)
+ ACTIVITY_MAP_ENTRY(AgentSCprDestroyActivity, AgentSCprDestroy)
ACTIVITY_MAP_ENTRY(AgentSCprNotificationFromFlowActivity, AgentSCprNotificationFromFlow)
ACTIVITY_MAP_ENTRY(AgentSCprAuthenticationActivity, AgentSCprAuthentication)
ACTIVITY_MAP_ENTRY(AgentSCprDataClientGoneDownActivity, AgentSCprDataClientGoneDown)