|
1 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
2 // All rights reserved. |
|
3 // This component and the accompanying materials are made available |
|
4 // under the terms of "Eclipse Public License v1.0" |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // |
|
15 |
|
16 #ifndef NETMCPR_ACTIVITIES_H_INCLUDED |
|
17 #define NETMCPR_ACTIVITIES_H_INCLUDED |
|
18 |
|
19 #define SYMBIAN_NETWORKING_UPS |
|
20 |
|
21 #include <comms-infras/mobilitymcpractivities.h> |
|
22 |
|
23 #ifdef SYMBIAN_NETWORKING_UPS |
|
24 #include <comms-infras/upsmcpractivities.h> |
|
25 #endif //SYMBIAN_NETWORKING_UPS |
|
26 |
|
27 class CNetworkMetaConnectionProvider; |
|
28 |
|
29 namespace NetMCprActivities |
|
30 { |
|
31 |
|
32 #ifdef DUMMY_MOBILITY_MCPR |
|
33 // [TODO] IK remove me when we have a proper mobility mcpr |
|
34 enum { |
|
35 ECFActivityDummyMobilityActivity = ESock::ECFActivityCustom |
|
36 |
|
37 #ifdef SYMBIAN_NETWORKING_UPS |
|
38 , ECFActivityUpsNoBearer, ECFActivityUpsProviderStatus |
|
39 #endif //SYMBIAN_NETWORKING_UPS |
|
40 |
|
41 }; |
|
42 |
|
43 #endif //DUMMY_MOBILITY_MCPR |
|
44 |
|
45 #ifdef SYMBIAN_NETWORKING_UPS |
|
46 |
|
47 #ifndef DUMMY_MOBILITY_MCPR |
|
48 enum { |
|
49 ECFActivityUpsNoBearer = ESock::ECFActivityCustom, ECFActivityUpsProviderStatus, ECFActivityUpsStatusChange |
|
50 }; |
|
51 #endif //DUMMY_MOBILITY_MCPR |
|
52 |
|
53 #endif //SYMBIAN_NETWORKING_UPS |
|
54 |
|
55 DECLARE_ACTIVITY_MAP(netMCprActivities) |
|
56 } // namespace NetMCprActivities |
|
57 |
|
58 namespace NetMCprLegacyActivities |
|
59 { |
|
60 |
|
61 NONSHARABLE_CLASS(CDeferredSelectionActivity) : public MeshMachine::CNodeActivityBase, |
|
62 protected MeshMachine::AContextStore |
|
63 { |
|
64 public: |
|
65 static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode); |
|
66 void ParkReConnectRequestL(const MeshMachine::TNodeContextBase& aContext); |
|
67 void ReDispatchReConnectRequestL(const MeshMachine::TNodeContextBase& aContext); |
|
68 void ReplyToOriginators(Messages::TEErrorRecovery::TErrorRecoveryResponse& aCFMessageSig); |
|
69 ~CDeferredSelectionActivity(); |
|
70 |
|
71 protected: |
|
72 CDeferredSelectionActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode); |
|
73 |
|
74 public: |
|
75 Messages::TErrContext iOriginalErrContext; //Error context on which this activity started |
|
76 Messages::TNodeId iSelectedMcpr; |
|
77 Messages::TNodeId iTierManager; |
|
78 |
|
79 protected: |
|
80 typedef MeshMachine::TNodeContext<CCoreMetaConnectionProvider, MCprStates::TContext> TContext; |
|
81 |
|
82 public: |
|
83 |
|
84 // |
|
85 // Default Error handling for mcpr states of CReConnectionActivity |
|
86 template<class TSTATE, class TCONTEXT = TContext> |
|
87 NONSHARABLE_CLASS(TState) : public TSTATE |
|
88 { |
|
89 public: |
|
90 NETSM_TPL_DECLARE_CTR(TState, NetStateMachine::MState, TCONTEXT) |
|
91 |
|
92 explicit TState(TCONTEXT& aContext) |
|
93 : TSTATE(aContext) |
|
94 { |
|
95 } |
|
96 |
|
97 virtual TBool Accept() |
|
98 { |
|
99 Messages::TEBase::TError* msg = Messages::message_cast<Messages::TEBase::TError>(&this->iContext.iMessage); |
|
100 if(msg && this->iContext.iNodeActivity != NULL) |
|
101 { |
|
102 CDeferredSelectionActivity& ac = static_cast<CDeferredSelectionActivity&>(*this->iContext.iNodeActivity); |
|
103 Messages::TEErrorRecovery::TErrorRecoveryResponse errResp(Messages::TErrResponse(Messages::TErrResponse::EPropagate,ac.iOriginalErrContext.iStateChange.iError,ac.iOriginalErrContext.iMessageId)); |
|
104 ac.ReplyToOriginators(errResp); |
|
105 ac.SetIdle(); |
|
106 this->iContext.iMessage.ClearMessageId(); |
|
107 return EFalse; |
|
108 } |
|
109 return TSTATE::Accept(); |
|
110 } |
|
111 }; |
|
112 |
|
113 DECLARE_SMELEMENT_HEADER( TAwaitingConnectionStartRecoveryRequest, MCprStates::TAwaitingConnectionStartRecoveryRequest, NetStateMachine::MState, CDeferredSelectionActivity::TContext ) |
|
114 virtual TBool Accept(); |
|
115 DECLARE_SMELEMENT_FOOTER( TAwaitingConnectionStartRecoveryRequest ) |
|
116 |
|
117 DECLARE_SMELEMENT_HEADER( TParkReConnectRequestAndFindOrCreateTierManager, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CDeferredSelectionActivity::TContext ) |
|
118 virtual void DoL(); |
|
119 DECLARE_SMELEMENT_FOOTER( TParkReConnectRequestAndFindOrCreateTierManager ) |
|
120 |
|
121 DECLARE_SMELEMENT_HEADER( TCompleteDeferredSelection, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CDeferredSelectionActivity::TContext ) |
|
122 virtual void DoL(); |
|
123 DECLARE_SMELEMENT_FOOTER( TCompleteDeferredSelection ) |
|
124 |
|
125 DECLARE_SMELEMENT_HEADER( TProcessSelectComplete, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CDeferredSelectionActivity::TContext ) |
|
126 virtual void DoL(); |
|
127 DECLARE_SMELEMENT_FOOTER( TProcessSelectComplete ) |
|
128 |
|
129 DECLARE_SMELEMENT_HEADER( TJoinServiceProvider, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CDeferredSelectionActivity::TContext ) |
|
130 virtual void DoL(); |
|
131 DECLARE_SMELEMENT_FOOTER( TJoinServiceProvider ) |
|
132 |
|
133 DECLARE_SMELEMENT_HEADER( TReDispatchReConnectRequest, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CDeferredSelectionActivity::TContext ) |
|
134 virtual void DoL(); |
|
135 DECLARE_SMELEMENT_FOOTER( TReDispatchReConnectRequest ) |
|
136 |
|
137 DECLARE_SMELEMENT_HEADER( TJoinTierManager, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CDeferredSelectionActivity::TContext ) |
|
138 virtual void DoL(); |
|
139 DECLARE_SMELEMENT_FOOTER( TJoinTierManager ) |
|
140 }; |
|
141 |
|
142 } //NetMCprLegacyActivities |
|
143 |
|
144 namespace NetMCprActivities |
|
145 { |
|
146 NONSHARABLE_CLASS(CPromptingReSelectActivity) : public MeshMachine::CNodeActivityBase, |
|
147 protected MeshMachine::AContextStore |
|
148 { |
|
149 public: |
|
150 static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode); |
|
151 void ParkReConnectRequestL(const MeshMachine::TNodeContextBase& aContext); |
|
152 void ReDispatchReConnectRequestL(const MeshMachine::TNodeContextBase& aContext); |
|
153 void ReplyToOriginators(Messages::TEErrorRecovery::TErrorRecoveryResponse& aCFMessageSig); |
|
154 ~CPromptingReSelectActivity(); |
|
155 |
|
156 protected: |
|
157 CPromptingReSelectActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode); |
|
158 |
|
159 public: |
|
160 Messages::TErrContext iOriginalErrContext; //Error context on which this activity started |
|
161 Messages::TNodeId iSelectedMcpr; |
|
162 Messages::TNodeId iTierManager; |
|
163 |
|
164 protected: |
|
165 typedef MeshMachine::TNodeContext<CCoreMetaConnectionProvider, MCprStates::TContext> TContext; |
|
166 |
|
167 public: |
|
168 |
|
169 // |
|
170 // Default Error handling for mcpr states of CReConnectionActivity |
|
171 template<class TSTATE, class TCONTEXT = TContext> |
|
172 class TState : public TSTATE |
|
173 { |
|
174 public: |
|
175 NETSM_TPL_DECLARE_CTR(TState, NetStateMachine::MState, TCONTEXT) |
|
176 |
|
177 explicit TState(TCONTEXT& aContext) |
|
178 : TSTATE(aContext) |
|
179 { |
|
180 } |
|
181 |
|
182 virtual TBool Accept() |
|
183 { |
|
184 Messages::TEBase::TError* msg = Messages::message_cast<Messages::TEBase::TError>(&this->iContext.iMessage); |
|
185 if(msg && this->iContext.iNodeActivity != NULL) |
|
186 { |
|
187 CPromptingReSelectActivity& ac = static_cast<CPromptingReSelectActivity&>(*this->iContext.iNodeActivity); |
|
188 Messages::TEErrorRecovery::TErrorRecoveryResponse errResp(Messages::TErrResponse(Messages::TErrResponse::EPropagate,ac.iOriginalErrContext.iStateChange.iError,ac.iOriginalErrContext.iMessageId)); |
|
189 ac.ReplyToOriginators(errResp); |
|
190 ac.SetIdle(); |
|
191 this->iContext.iMessage.ClearMessageId(); |
|
192 return EFalse; |
|
193 } |
|
194 return TSTATE::Accept(); |
|
195 } |
|
196 }; |
|
197 |
|
198 DECLARE_SMELEMENT_HEADER( TAwaitingConnectionStartRecoveryRequest, MCprStates::TAwaitingConnectionStartRecoveryRequest, NetStateMachine::MState, CPromptingReSelectActivity::TContext ) |
|
199 virtual TBool Accept(); |
|
200 DECLARE_SMELEMENT_FOOTER( TAwaitingConnectionStartRecoveryRequest ) |
|
201 |
|
202 DECLARE_SMELEMENT_HEADER( TParkReConnectRequestAndFindOrCreateTierManager, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CPromptingReSelectActivity::TContext ) |
|
203 virtual void DoL(); |
|
204 DECLARE_SMELEMENT_FOOTER( TParkReConnectRequestAndFindOrCreateTierManager ) |
|
205 |
|
206 DECLARE_SMELEMENT_HEADER( TCompletePromptingReSelection, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CPromptingReSelectActivity::TContext ) |
|
207 virtual void DoL(); |
|
208 DECLARE_SMELEMENT_FOOTER( TCompletePromptingReSelection ) |
|
209 |
|
210 DECLARE_SMELEMENT_HEADER( TProcessSelectComplete, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CPromptingReSelectActivity::TContext ) |
|
211 virtual void DoL(); |
|
212 DECLARE_SMELEMENT_FOOTER( TProcessSelectComplete ) |
|
213 |
|
214 DECLARE_SMELEMENT_HEADER( TJoinServiceProvider, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CPromptingReSelectActivity::TContext ) |
|
215 virtual void DoL(); |
|
216 DECLARE_SMELEMENT_FOOTER( TJoinServiceProvider ) |
|
217 |
|
218 DECLARE_SMELEMENT_HEADER( TReDispatchReConnectRequest, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CPromptingReSelectActivity::TContext ) |
|
219 virtual void DoL(); |
|
220 DECLARE_SMELEMENT_FOOTER( TReDispatchReConnectRequest ) |
|
221 |
|
222 DECLARE_SMELEMENT_HEADER( TJoinTierManager, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CPromptingReSelectActivity::TContext ) |
|
223 virtual void DoL(); |
|
224 DECLARE_SMELEMENT_FOOTER( TJoinTierManager ) |
|
225 }; |
|
226 |
|
227 } //NetMCprActivities |
|
228 |
|
229 #endif // NETMCPR_ACTIVITIES_H_INCLUDED |