50 //We reserve space for two preallocated activities that may start concurrently on the CPR |
50 //We reserve space for two preallocated activities that may start concurrently on the CPR |
51 //node: destroy and data client stop. |
51 //node: destroy and data client stop. |
52 static const TUint KDefaultMaxPreallocatedActivityCount = 2; |
52 static const TUint KDefaultMaxPreallocatedActivityCount = 2; |
53 static const TUint KMaxPreallocatedActivitySize = sizeof(MeshMachine::CNodeRetryParallelActivity) + sizeof(MeshMachine::APreallocatedOriginators<4>); |
53 static const TUint KMaxPreallocatedActivitySize = sizeof(MeshMachine::CNodeRetryParallelActivity) + sizeof(MeshMachine::APreallocatedOriginators<4>); |
54 static const TUint KDummyCPRPreallocatedActivityBufferSize = KDefaultMaxPreallocatedActivityCount * KMaxPreallocatedActivitySize; |
54 static const TUint KDummyCPRPreallocatedActivityBufferSize = KDefaultMaxPreallocatedActivityCount * KMaxPreallocatedActivitySize; |
55 static const TUint KDestroyDelay = 3; |
55 static const TUint KDestroyDelay = 3000; |
56 static const TUint KMillion = 1000000; |
|
57 //-================================================ |
56 //-================================================ |
58 // |
57 // |
59 // States and Transitions |
58 // States and Transitions |
60 // |
59 // |
61 //-================================================ |
60 //-================================================ |
62 CDelayTimer* CDelayTimer::NewL( Messages::RNodeInterface* aSender, const Messages::TNodeId& aRecipient, const Messages::TNodeSignal::TMessageId& aMessageId ) |
61 CDelayTimer* CDelayTimer::NewL( const Messages::TNodeId& aSender, const Messages::TNodeId& aRecipient, const Messages::TNodeSignal::TMessageId& aMessageId ) |
63 { |
62 { |
64 CDelayTimer* timer = new(ELeave) CDelayTimer( aSender, aRecipient, aMessageId ); |
63 CDelayTimer* timer = new(ELeave) CDelayTimer( aSender, aRecipient, aMessageId ); |
65 CleanupStack::PushL( timer ); |
64 CleanupStack::PushL( timer ); |
66 timer->ConstructL(); |
65 timer->ConstructL(); |
67 CleanupStack::Pop(); |
66 CleanupStack::Pop(); |
71 CDelayTimer::~CDelayTimer() |
70 CDelayTimer::~CDelayTimer() |
72 { |
71 { |
73 Cancel(); |
72 Cancel(); |
74 } |
73 } |
75 |
74 |
76 CDelayTimer::CDelayTimer( Messages::RNodeInterface* aSender, const Messages::TNodeId& aRecipient, const Messages::TNodeSignal::TMessageId& aMessageId ) : |
75 CDelayTimer::CDelayTimer( const Messages::TNodeId& aSender, const Messages::TNodeId& aRecipient, const Messages::TNodeSignal::TMessageId& aMessageId ) : |
77 CTimer( EPriorityStandard ), |
76 CTimer( EPriorityStandard ), |
78 iSender(aSender), |
77 iSender(aSender), |
79 iRecipient(aRecipient), |
78 iRecipient(aRecipient), |
80 iMessageId(aMessageId) |
79 iMessageId(aMessageId) |
81 { |
80 { |
88 } |
87 } |
89 |
88 |
90 void CDelayTimer::RunL() |
89 void CDelayTimer::RunL() |
91 { |
90 { |
92 CDelayTimer::TDelayMessage msg(iMessageId); |
91 CDelayTimer::TDelayMessage msg(iMessageId); |
93 Messages::RClientInterface::OpenPostMessageClose(iSender->RecipientId() , iRecipient, msg ); |
92 Messages::RClientInterface::OpenPostMessageClose(iSender, iRecipient, msg ); |
94 delete this; |
93 delete this; |
95 } |
94 } |
96 |
95 |
97 void CDelayTimer::Start( TInt aIntervalInSecs ) |
96 void CDelayTimer::Start( TInt aIntervalInMSecs ) |
98 { |
97 { |
99 After( TTimeIntervalMicroSeconds32( aIntervalInSecs * KMillion ) ); |
98 After( TTimeIntervalMicroSeconds32( aIntervalInMSecs * 1000 ) ); |
100 } |
99 } |
101 |
100 |
102 CDelayTimer::TDelayMessage::TDelayMessage() |
101 CDelayTimer::TDelayMessage::TDelayMessage() |
103 { |
102 { |
104 } |
103 } |
106 CDelayTimer::TDelayMessage::TDelayMessage(const TNodeSignal::TMessageId& aMessageId) |
105 CDelayTimer::TDelayMessage::TDelayMessage(const TNodeSignal::TMessageId& aMessageId) |
107 : TSignatureBase(aMessageId) |
106 : TSignatureBase(aMessageId) |
108 { |
107 { |
109 } |
108 } |
110 |
109 |
|
110 |
|
111 DEFINE_SMELEMENT(CDelayTimer::TAwaitingTimerExpired, NetStateMachine::MState, CDelayTimer::TContext) |
|
112 TBool CDelayTimer::TAwaitingTimerExpired::Accept() |
|
113 { |
|
114 return iContext.iMessage.IsMessage<Messages::TEBase::TNull>(); |
|
115 } |
111 |
116 |
112 namespace DummyCPRStates |
117 namespace DummyCPRStates |
113 { |
118 { |
114 DEFINE_SMELEMENT(TSetClientAsIncoming, NetStateMachine::MStateTransition, DummyCPRStates::TContext) |
119 DEFINE_SMELEMENT(TSetClientAsIncoming, NetStateMachine::MStateTransition, DummyCPRStates::TContext) |
115 void TSetClientAsIncoming::DoL() |
120 void TSetClientAsIncoming::DoL() |
139 } |
144 } |
140 |
145 |
141 DEFINE_SMELEMENT(TThreeSecDelayAndPostToSelf, NetStateMachine::MStateTransition, DummyCPRStates::TContext) |
146 DEFINE_SMELEMENT(TThreeSecDelayAndPostToSelf, NetStateMachine::MStateTransition, DummyCPRStates::TContext) |
142 void TThreeSecDelayAndPostToSelf::DoL() |
147 void TThreeSecDelayAndPostToSelf::DoL() |
143 { |
148 { |
144 CDelayTimer* delay = CDelayTimer::NewL(iContext.Node().ControlProvider(), iContext.NodeId(), iContext.iMessage.MessageId() ); |
149 CDelayTimer* delay = CDelayTimer::NewL(iContext.Node().ControlProvider()->RecipientId(), iContext.NodeId(), iContext.iMessage.MessageId() ); |
145 delay->Start(KDestroyDelay); |
150 delay->Start(KDestroyDelay); |
146 } |
151 } |
147 |
152 |
148 DEFINE_SMELEMENT(TAwaitingStart, NetStateMachine::MState, DummyCPRStates::TContext) |
153 DEFINE_SMELEMENT(TAwaitingStart, NetStateMachine::MState, DummyCPRStates::TContext) |
149 TBool TAwaitingStart::Accept() |
154 TBool TAwaitingStart::Accept() |