75 |
75 |
76 |
76 |
77 class CDelayTimer: public CTimer |
77 class CDelayTimer: public CTimer |
78 { |
78 { |
79 public: |
79 public: |
80 static CDelayTimer* NewL( Messages::RNodeInterface* aSender, const Messages::TNodeId& aRecipient, const Messages::TNodeSignal::TMessageId& aMessageId ); |
80 static CDelayTimer* NewL( const Messages::TNodeId& aSender, const Messages::TNodeId& aRecipient, const Messages::TNodeSignal::TMessageId& aMessageId ); |
81 |
81 |
82 virtual ~CDelayTimer(); |
82 virtual ~CDelayTimer(); |
83 void Start( TInt aIntervalInSecs ); |
83 void Start( TInt aIntervalInSecs ); |
84 |
84 |
85 public: |
85 public: |
89 TDelayMessage(); |
89 TDelayMessage(); |
90 TDelayMessage(const TNodeSignal::TMessageId& aMessageId); |
90 TDelayMessage(const TNodeSignal::TMessageId& aMessageId); |
91 }; |
91 }; |
92 |
92 |
93 private: |
93 private: |
94 CDelayTimer( Messages::RNodeInterface* aSender, const Messages::TNodeId& aRecipient, const Messages::TNodeSignal::TMessageId& aMessageId ); |
94 CDelayTimer( const Messages::TNodeId& aSender, const Messages::TNodeId& aRecipient, const Messages::TNodeSignal::TMessageId& aMessageId ); |
95 void ConstructL(); |
95 void ConstructL(); |
96 |
96 |
97 protected: // From CTimer (CActive) |
97 protected: // From CTimer (CActive) |
98 void RunL(); |
98 void RunL(); |
99 |
99 |
100 private: |
100 private: |
101 Messages::RNodeInterface* iSender; |
101 Messages::TNodeId iSender; |
102 Messages::TNodeId iRecipient; |
102 Messages::TNodeId iRecipient; |
103 Messages::TNodeSignal::TMessageId iMessageId; |
103 Messages::TNodeSignal::TMessageId iMessageId; |
|
104 |
|
105 public: |
|
106 //States and Transitions |
|
107 typedef MeshMachine::TNodeContext<ESock::CMMCommsProviderBase, CoreNetStates::TContext> TContext; |
|
108 |
|
109 template <TInt IntervalMs> |
|
110 class TSetTimerMs : public MeshMachine::TStateTransition<TContext> |
|
111 { |
|
112 public: |
|
113 NETSM_TPL_DECLARE_CTR(TSetTimerMs, NetStateMachine::MStateTransition, TContext) |
|
114 |
|
115 TSetTimerMs(TContext& aContext) |
|
116 :TStateTransition<TContext>(aContext) |
|
117 { |
|
118 } |
|
119 |
|
120 virtual void DoL() |
|
121 { |
|
122 CDelayTimer* delay = CDelayTimer::NewL(iContext.NodeId(), iContext.NodeId(), Messages::TEBase::TNull::Id()); |
|
123 delay->Start(IntervalMs); |
|
124 } |
|
125 }; |
|
126 |
|
127 |
|
128 DECLARE_SMELEMENT_HEADER( TAwaitingTimerExpired, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext ) |
|
129 virtual TBool Accept(); |
|
130 DECLARE_SMELEMENT_FOOTER( TAwaitingTimerExpired ) |
104 }; |
131 }; |
105 |
132 |
106 |
133 |
107 //-================================================ |
134 //-================================================ |
108 // |
135 // |