--- a/datacommsserver/esockserver/CoreProviders/src/corecpractivities.cpp Tue May 11 17:20:19 2010 +0300
+++ b/datacommsserver/esockserver/CoreProviders/src/corecpractivities.cpp Tue May 25 14:00:39 2010 +0300
@@ -43,7 +43,16 @@
using namespace MeshMachine;
using namespace Messages;
-
+//-=========================================================
+//
+//Panics
+//
+//-=========================================================
+_LIT (KCoreCPRActivityPanic,"CoreCPRActivityPanic");
+enum
+ {
+ EPanicNoPrealloc = 1
+ };
//-=========================================================
//
@@ -202,8 +211,8 @@
namespace CprClientLeaveActivity
{
-DECLARE_DEFINE_CUSTOM_NODEACTIVITY(ECFActivityClientLeave, CprClientLeave, TNodeSignal::TNullMessageId, CClientLeaveActivity::NewL)
- FIRST_NODEACTIVITY_ENTRY(CoreStates::TAwaitingClientLeave, MeshMachine::TNoTag)
+DECLARE_DEFINE_RESERVED_CUSTOM_NODEACTIVITY(ECFActivityClientLeave, CprClientLeave, TCFServiceProvider::TLeaveRequest, CClientLeaveActivity::New)
+ FIRST_NODEACTIVITY_ENTRY(MeshMachine::TAwaitingMessageState<TCFServiceProvider::TLeaveRequest>, MeshMachine::TNoTag)
THROUGH_NODEACTIVITY_ENTRY(KNoTag, CClientLeaveActivity::TRemoveClientAndDestroyOrphanedDataClients, CClientLeaveActivity::TNoTagOrSendPriorityToCtrlProvider)
NODEACTIVITY_ENTRY(CprStates::KSendPriorityToCtrlProvider, CClientLeaveActivity::TUpdatePriorityForControlProvider, CoreStates::TAwaitingJoinComplete, CClientLeaveActivity::TNoTagOrSendPriorityToServProvider)
NODEACTIVITY_ENTRY(CprStates::KSendPriorityToServProvider, CClientLeaveActivity::TUpdatePriorityForServiceProviders, CoreStates::TAwaitingJoinComplete, MeshMachine::TNoTag)
@@ -286,10 +295,16 @@
namespace CprClientLeaveActivity
{
-EXPORT_C MeshMachine::CNodeActivityBase* CClientLeaveActivity::NewL( const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode )
+EXPORT_C MeshMachine::CNodeActivityBase* CClientLeaveActivity::New( const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::TNodeContextBase& aContext )
{
- TUint c = GetNextActivityCountL(aActivitySig,aNode);
- return new(ELeave)CClientLeaveActivity(aActivitySig, aNode, c);
+ TUint c = GetNextActivityCount(aActivitySig,aContext.Node());
+
+ // Instantiate using memory preallocated and stored in the RCFNodeInterface
+ TAny* preallocatedSpace = aContext.iPeer->ClaimPreallocatedSpace(sizeof(CClientLeaveActivity));
+ __ASSERT_ALWAYS(preallocatedSpace != NULL,User::Panic(KCoreCPRActivityPanic,EPanicNoPrealloc));
+
+ CClientLeaveActivity* self = new(preallocatedSpace)CClientLeaveActivity(aActivitySig, aContext.Node(), c);
+ return self;
}
CClientLeaveActivity::CClientLeaveActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode, TUint aActivitiesCount)