41 using namespace PRActivities; |
41 using namespace PRActivities; |
42 using namespace CoreNetStates; |
42 using namespace CoreNetStates; |
43 using namespace MeshMachine; |
43 using namespace MeshMachine; |
44 using namespace Messages; |
44 using namespace Messages; |
45 |
45 |
46 |
46 //-========================================================= |
|
47 // |
|
48 //Panics |
|
49 // |
|
50 //-========================================================= |
|
51 _LIT (KCoreCPRActivityPanic,"CoreCPRActivityPanic"); |
|
52 enum |
|
53 { |
|
54 EPanicNoPrealloc = 1 |
|
55 }; |
47 |
56 |
48 //-========================================================= |
57 //-========================================================= |
49 // |
58 // |
50 // Activities |
59 // Activities |
51 // |
60 // |
200 NODEACTIVITY_END() |
209 NODEACTIVITY_END() |
201 } |
210 } |
202 |
211 |
203 namespace CprClientLeaveActivity |
212 namespace CprClientLeaveActivity |
204 { |
213 { |
205 DECLARE_DEFINE_CUSTOM_NODEACTIVITY(ECFActivityClientLeave, CprClientLeave, TNodeSignal::TNullMessageId, CClientLeaveActivity::NewL) |
214 DECLARE_DEFINE_RESERVED_CUSTOM_NODEACTIVITY(ECFActivityClientLeave, CprClientLeave, TCFServiceProvider::TLeaveRequest, CClientLeaveActivity::New) |
206 FIRST_NODEACTIVITY_ENTRY(CoreStates::TAwaitingClientLeave, MeshMachine::TNoTag) |
215 FIRST_NODEACTIVITY_ENTRY(MeshMachine::TAwaitingMessageState<TCFServiceProvider::TLeaveRequest>, MeshMachine::TNoTag) |
207 THROUGH_NODEACTIVITY_ENTRY(KNoTag, CClientLeaveActivity::TRemoveClientAndDestroyOrphanedDataClients, CClientLeaveActivity::TNoTagOrSendPriorityToCtrlProvider) |
216 THROUGH_NODEACTIVITY_ENTRY(KNoTag, CClientLeaveActivity::TRemoveClientAndDestroyOrphanedDataClients, CClientLeaveActivity::TNoTagOrSendPriorityToCtrlProvider) |
208 NODEACTIVITY_ENTRY(CprStates::KSendPriorityToCtrlProvider, CClientLeaveActivity::TUpdatePriorityForControlProvider, CoreStates::TAwaitingJoinComplete, CClientLeaveActivity::TNoTagOrSendPriorityToServProvider) |
217 NODEACTIVITY_ENTRY(CprStates::KSendPriorityToCtrlProvider, CClientLeaveActivity::TUpdatePriorityForControlProvider, CoreStates::TAwaitingJoinComplete, CClientLeaveActivity::TNoTagOrSendPriorityToServProvider) |
209 NODEACTIVITY_ENTRY(CprStates::KSendPriorityToServProvider, CClientLeaveActivity::TUpdatePriorityForServiceProviders, CoreStates::TAwaitingJoinComplete, MeshMachine::TNoTag) |
218 NODEACTIVITY_ENTRY(CprStates::KSendPriorityToServProvider, CClientLeaveActivity::TUpdatePriorityForServiceProviders, CoreStates::TAwaitingJoinComplete, MeshMachine::TNoTag) |
210 THROUGH_NODEACTIVITY_ENTRY(KNoTag, CClientLeaveActivity::TSendLeaveCompleteAndSendDataClientIdleIfNeeded, MeshMachine::TNoTag) |
219 THROUGH_NODEACTIVITY_ENTRY(KNoTag, CClientLeaveActivity::TSendLeaveCompleteAndSendDataClientIdleIfNeeded, MeshMachine::TNoTag) |
211 LAST_NODEACTIVITY_ENTRY(KNoTag, CprStates::TSendDataClientStatusStoppedIfNoControlClient) |
220 LAST_NODEACTIVITY_ENTRY(KNoTag, CprStates::TSendDataClientStatusStoppedIfNoControlClient) |
284 } |
293 } |
285 } |
294 } |
286 |
295 |
287 namespace CprClientLeaveActivity |
296 namespace CprClientLeaveActivity |
288 { |
297 { |
289 EXPORT_C MeshMachine::CNodeActivityBase* CClientLeaveActivity::NewL( const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode ) |
298 EXPORT_C MeshMachine::CNodeActivityBase* CClientLeaveActivity::New( const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::TNodeContextBase& aContext ) |
290 { |
299 { |
291 TUint c = GetNextActivityCountL(aActivitySig,aNode); |
300 TUint c = GetNextActivityCount(aActivitySig,aContext.Node()); |
292 return new(ELeave)CClientLeaveActivity(aActivitySig, aNode, c); |
301 |
|
302 // Instantiate using memory preallocated and stored in the RCFNodeInterface |
|
303 TAny* preallocatedSpace = aContext.iPeer->ClaimPreallocatedSpace(sizeof(CClientLeaveActivity)); |
|
304 __ASSERT_ALWAYS(preallocatedSpace != NULL,User::Panic(KCoreCPRActivityPanic,EPanicNoPrealloc)); |
|
305 |
|
306 CClientLeaveActivity* self = new(preallocatedSpace)CClientLeaveActivity(aActivitySig, aContext.Node(), c); |
|
307 return self; |
293 } |
308 } |
294 |
309 |
295 CClientLeaveActivity::CClientLeaveActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode, TUint aActivitiesCount) |
310 CClientLeaveActivity::CClientLeaveActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode, TUint aActivitiesCount) |
296 : CprPriorityUpdateActivity::CPriorityUpdateActivity(aActivitySig, aNode, aActivitiesCount) |
311 : CprPriorityUpdateActivity::CPriorityUpdateActivity(aActivitySig, aNode, aActivitiesCount) |
297 { |
312 { |