|
1 // Copyright (c) 1997-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 SYMBIAN_SS_CONNSTATES_H |
|
17 #define SYMBIAN_SS_CONNSTATES_H |
|
18 |
|
19 #define SYMBIAN_NETWORKING_UPS |
|
20 |
|
21 #include <comms-infras/ss_esockstates.h> |
|
22 #include <comms-infras/ss_esockactivities.h> |
|
23 #include <comms-infras/ss_corepractivities.h> |
|
24 #include "SS_conn.H" |
|
25 #include <comms-infras/esock_params_internal.h> |
|
26 #include "ss_internal_activities.h" |
|
27 |
|
28 #include <comms-infras/ss_nodemessages_selector.h> // for TSelectionPrefs |
|
29 |
|
30 namespace ConnStates |
|
31 { |
|
32 typedef MeshMachine::TNodeContext<ESock::CConnection, SubSessStates::TContext> TContext; |
|
33 |
|
34 |
|
35 // |
|
36 //Mutex checking the progress queue |
|
37 class TEmptyProgressQueueMutex |
|
38 { |
|
39 public: |
|
40 static TBool IsBlocked(TContext& aContext) |
|
41 { |
|
42 return aContext.Node().iProgressQueue.IsEmpty(); |
|
43 } |
|
44 }; |
|
45 |
|
46 typedef MeshMachine::TActivitiesIdMutex<ESock::ECFActivityStart,ESock::ECFActivityConnectionAttach> TStartAttachMutex; |
|
47 |
|
48 // |
|
49 //Start |
|
50 |
|
51 |
|
52 DECLARE_SMELEMENT_HEADER( TErrorIfAlreadyStartedAttached, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
53 virtual void DoL(); |
|
54 DECLARE_SMELEMENT_FOOTER( TErrorIfAlreadyStartedAttached ) |
|
55 |
|
56 DECLARE_SMELEMENT_HEADER( TClearProgressQueue, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
57 virtual void DoL(); |
|
58 DECLARE_SMELEMENT_FOOTER( TClearProgressQueue ) |
|
59 |
|
60 DECLARE_SMELEMENT_HEADER( TParseECNStart, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
61 virtual void DoL(); |
|
62 DECLARE_SMELEMENT_FOOTER( TParseECNStart ) |
|
63 |
|
64 DECLARE_SMELEMENT_HEADER( TSendStartingSelectionStateChange, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
65 virtual void DoL(); |
|
66 DECLARE_SMELEMENT_FOOTER( TSendStartingSelectionStateChange ) |
|
67 |
|
68 DECLARE_SMELEMENT_HEADER( TRequestCSRCreation, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
69 virtual void DoL(); |
|
70 DECLARE_SMELEMENT_FOOTER( TRequestCSRCreation ) |
|
71 |
|
72 DECLARE_SMELEMENT_HEADER( TProcessCSRCreation, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
73 virtual void DoL(); |
|
74 DECLARE_SMELEMENT_FOOTER( TProcessCSRCreation ) |
|
75 |
|
76 |
|
77 DECLARE_SERIALIZABLE_TRANSITION( |
|
78 TProcessStartBlockedByStop, |
|
79 MeshMachine::TActivityIdMutex<ESock::ECFActivityStop>, |
|
80 ConnStates::TParseECNStart |
|
81 ) |
|
82 |
|
83 DECLARE_SMELEMENT_HEADER( TSelectMetaPlane, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
84 virtual void DoL(); |
|
85 DECLARE_SMELEMENT_FOOTER( TSelectMetaPlane ) |
|
86 |
|
87 DECLARE_SMELEMENT_HEADER( TJoinReceivedCpr, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
88 virtual void DoL(); |
|
89 DECLARE_SMELEMENT_FOOTER( TJoinReceivedCpr ) |
|
90 |
|
91 DECLARE_SMELEMENT_HEADER( TSendFinishedSelectionStateChange, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
92 virtual void DoL(); |
|
93 DECLARE_SMELEMENT_FOOTER( TSendFinishedSelectionStateChange ) |
|
94 |
|
95 |
|
96 DECLARE_SMELEMENT_HEADER( TJoinReceivedSCpr, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
97 virtual void DoL(); |
|
98 DECLARE_SMELEMENT_FOOTER( TJoinReceivedSCpr ) |
|
99 |
|
100 DECLARE_SMELEMENT_HEADER( TJoinReceivedMcpr, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
101 virtual void DoL(); |
|
102 DECLARE_SMELEMENT_FOOTER( TJoinReceivedMcpr ) |
|
103 |
|
104 |
|
105 DECLARE_SMELEMENT_HEADER( TRequestCommsBinder, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
106 virtual void DoL(); |
|
107 DECLARE_SMELEMENT_FOOTER( TRequestCommsBinder ) |
|
108 |
|
109 DECLARE_SMELEMENT_HEADER( TRequestCommsBinderFromMcpr, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
110 virtual void DoL(); |
|
111 DECLARE_SMELEMENT_FOOTER( TRequestCommsBinderFromMcpr ) |
|
112 |
|
113 DECLARE_SMELEMENT_HEADER( TProcessBinderResponseForCpr, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
114 virtual void DoL(); |
|
115 DECLARE_SMELEMENT_FOOTER( TProcessBinderResponseForCpr ) |
|
116 |
|
117 DECLARE_SMELEMENT_HEADER( TStartConnection, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
118 virtual void DoL(); |
|
119 DECLARE_SMELEMENT_FOOTER( TStartConnection ) |
|
120 |
|
121 DECLARE_AGGREGATED_TRANSITION2( |
|
122 TSendFinishedSelectionAndJoinReceivedCpr, |
|
123 ConnStates::TSendFinishedSelectionStateChange, |
|
124 ConnStates::TJoinReceivedCpr |
|
125 ) |
|
126 |
|
127 DECLARE_SMELEMENT_HEADER( TErrorOrCancel, MeshMachine::TStateFork<ConnStates::TContext>, NetStateMachine::MStateFork, ConnStates::TContext ) |
|
128 virtual TInt TransitionTag(); |
|
129 DECLARE_SMELEMENT_FOOTER( TErrorOrCancel ) |
|
130 |
|
131 // |
|
132 //Attach |
|
133 DECLARE_SMELEMENT_HEADER( TParseECNAttach, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
134 virtual void DoL(); |
|
135 DECLARE_SMELEMENT_FOOTER( TParseECNAttach ) |
|
136 |
|
137 DECLARE_AGGREGATED_TRANSITION4( |
|
138 TProcessAttach, |
|
139 ConnStates::TErrorIfAlreadyStartedAttached, |
|
140 ConnStates::TParseECNAttach, |
|
141 ConnStates::TClearProgressQueue, |
|
142 ConnStates::TRequestCSRCreation |
|
143 ) |
|
144 |
|
145 DECLARE_SERIALIZABLE_TRANSITION( |
|
146 TProcessAttachBlockedByStop, |
|
147 MeshMachine::TActivityIdMutex<ESock::ECFActivityStop>, |
|
148 ConnStates::TProcessAttach |
|
149 ) |
|
150 |
|
151 DECLARE_SMELEMENT_HEADER( TCompleteLegacyAttach, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
152 virtual void DoL(); |
|
153 DECLARE_SMELEMENT_FOOTER( TCompleteLegacyAttach ) |
|
154 |
|
155 // |
|
156 //WaitForIncoming |
|
157 DECLARE_SMELEMENT_HEADER( TRequestIncomingConnection, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
158 virtual void DoL(); |
|
159 DECLARE_SMELEMENT_FOOTER( TRequestIncomingConnection ) |
|
160 |
|
161 DECLARE_SMELEMENT_HEADER( TProcessIncomingConnection, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
162 virtual void DoL(); |
|
163 DECLARE_SMELEMENT_FOOTER( TProcessIncomingConnection ) |
|
164 |
|
165 DECLARE_SERIALIZABLE_TRANSITION( |
|
166 TRequestIncomingConnectionBlockedByStartAttach, |
|
167 TStartAttachMutex, |
|
168 ConnStates::TRequestIncomingConnection |
|
169 ) |
|
170 |
|
171 // |
|
172 //Stop |
|
173 DECLARE_SMELEMENT_HEADER( TSendStopConnection, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
174 virtual void DoL(); |
|
175 DECLARE_SMELEMENT_FOOTER( TSendStopConnection ) |
|
176 |
|
177 DECLARE_SMELEMENT_HEADER( TCancelStartOrAttachConnection, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
178 virtual void DoL(); |
|
179 DECLARE_SMELEMENT_FOOTER( TCancelStartOrAttachConnection ) |
|
180 |
|
181 DECLARE_SMELEMENT_HEADER( TConnectionSendStopSCPR, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
182 virtual void DoL(); |
|
183 DECLARE_SMELEMENT_FOOTER( TConnectionSendStopSCPR ) |
|
184 |
|
185 DECLARE_SMELEMENT_HEADER( TAwaitingGoneDown, CoreNetStates::TAwaitingGoneDown, NetStateMachine::MState, TContext ) |
|
186 virtual TBool Accept(); |
|
187 DECLARE_SMELEMENT_FOOTER( TAwaitingGoneDown ) |
|
188 |
|
189 typedef MeshMachine::TActivitiesIdMutex<ESock::ECFActivityStart,ESock::ECFActivityConnectionAttach> TStartAttachMutex; |
|
190 |
|
191 DECLARE_SERIALIZABLE_STATE( |
|
192 TNoTagOrNoBearerBlockedByStartOrAttach, |
|
193 TStartAttachMutex, |
|
194 CoreNetStates::TNoTagOrNoBearer |
|
195 ) |
|
196 |
|
197 // |
|
198 //Close |
|
199 |
|
200 const TInt KCancelAllInterfaceWorker = 10000; |
|
201 |
|
202 DECLARE_SMELEMENT_HEADER(TDetachDataClients, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext) |
|
203 virtual void DoL(); |
|
204 DECLARE_SMELEMENT_FOOTER(TDetachDataClients) |
|
205 |
|
206 DECLARE_SMELEMENT_HEADER( TStartOrAttachActive, MeshMachine::TStateFork<ConnStates::TContext>, NetStateMachine::MStateFork, ConnStates::TContext ) |
|
207 virtual TInt TransitionTag(); |
|
208 DECLARE_SMELEMENT_FOOTER( TStartOrAttachActive ) |
|
209 |
|
210 DECLARE_SMELEMENT_HEADER( TNoTagOrCancelAllInterfaceWorker, MeshMachine::TStateFork<ConnStates::TContext>, NetStateMachine::MStateFork, ConnStates::TContext ) |
|
211 virtual TInt TransitionTag(); |
|
212 DECLARE_SMELEMENT_FOOTER( TNoTagOrCancelAllInterfaceWorker ) |
|
213 |
|
214 DECLARE_SMELEMENT_HEADER( TCancelAllInterfaceNotificationWorker, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
215 virtual void DoL(); |
|
216 DECLARE_SMELEMENT_FOOTER( TCancelAllInterfaceNotificationWorker ) |
|
217 |
|
218 DECLARE_SERIALIZABLE_STATE( |
|
219 TActiveOrNoTagBlockedByStopOrGoneDown, |
|
220 CoreNetStates::TActivityStopAndGoneDownMutex, |
|
221 TStartOrAttachActive |
|
222 ) |
|
223 |
|
224 DECLARE_SERIALIZABLE_STATE( |
|
225 TNoTagBlockedByStartOrAttach, |
|
226 TStartAttachMutex, |
|
227 MeshMachine::TNoTag |
|
228 ) |
|
229 |
|
230 DECLARE_AGGREGATED_TRANSITION2( |
|
231 TProcessClose, |
|
232 SubSessStates::TProcessClose, |
|
233 TDetachDataClients |
|
234 ) |
|
235 |
|
236 // |
|
237 //Progress & Progress Request |
|
238 DECLARE_SMELEMENT_HEADER( TProcessStateChange, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext ) //From the framework |
|
239 virtual void DoL(); |
|
240 DECLARE_SMELEMENT_FOOTER( TProcessStateChange ) |
|
241 |
|
242 DECLARE_SMELEMENT_HEADER( TProcessProgressRequest, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) //From the client |
|
243 virtual void DoL(); |
|
244 DECLARE_SMELEMENT_FOOTER( TProcessProgressRequest ) |
|
245 |
|
246 DECLARE_SERIALIZABLE_TRANSITION( |
|
247 ProcessProgressRequestBlockedByEmptyProgressQueue, |
|
248 TEmptyProgressQueueMutex, |
|
249 ConnStates::TProcessProgressRequest |
|
250 ) |
|
251 |
|
252 |
|
253 DECLARE_SMELEMENT_HEADER( TGenerateConnectionUpProgress, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext ) //From the framework |
|
254 virtual void DoL(); |
|
255 DECLARE_SMELEMENT_FOOTER( TGenerateConnectionUpProgress ) |
|
256 |
|
257 DECLARE_SMELEMENT_HEADER( TGenerateConnectionDownProgress, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext ) //From the framework |
|
258 virtual void DoL(); |
|
259 DECLARE_SMELEMENT_FOOTER( TGenerateConnectionDownProgress ) |
|
260 |
|
261 |
|
262 |
|
263 |
|
264 |
|
265 // |
|
266 // Legacy enumeration support |
|
267 DECLARE_SMELEMENT_HEADER( TAwaitingEnumResponse, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext ) |
|
268 virtual TBool Accept(); |
|
269 DECLARE_SMELEMENT_FOOTER( TAwaitingEnumResponse ) |
|
270 |
|
271 DECLARE_SMELEMENT_HEADER( TProcessEnumResponse, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
272 virtual void DoL(); |
|
273 DECLARE_SMELEMENT_FOOTER( TProcessEnumResponse ) |
|
274 |
|
275 // |
|
276 // Legacy RMessage2 handling |
|
277 |
|
278 DECLARE_SMELEMENT_HEADER( TProcessLegacyRMessage2, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
279 virtual void DoL(); |
|
280 DECLARE_SMELEMENT_FOOTER( TProcessLegacyRMessage2 ) |
|
281 |
|
282 DECLARE_SMELEMENT_HEADER( TCompleteRMessage2, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
283 virtual void DoL(); |
|
284 DECLARE_SMELEMENT_FOOTER( TCompleteRMessage2 ) |
|
285 |
|
286 DECLARE_SMELEMENT_HEADER( THandleRMessage2Error, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
287 virtual void DoL(); |
|
288 DECLARE_SMELEMENT_FOOTER( THandleRMessage2Error ) |
|
289 |
|
290 DECLARE_SMELEMENT_HEADER( TCancelAllLegacyRMessage2Activities, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
291 virtual void DoL(); |
|
292 DECLARE_SMELEMENT_FOOTER( TCancelAllLegacyRMessage2Activities ) |
|
293 |
|
294 typedef MeshMachine::TActivityIdMutex<ESock::ECFActivityConnectionLegacyRMessage2Handler> TLegacyRMessage2ActivitiesMutex; |
|
295 |
|
296 DECLARE_SERIALIZABLE_STATE( |
|
297 TNoTagBlockedByLegacyRMessage2Activities, |
|
298 TLegacyRMessage2ActivitiesMutex, |
|
299 MeshMachine::TNoTag |
|
300 ) |
|
301 |
|
302 } // namespace ConnStates |
|
303 |
|
304 |
|
305 namespace AllInterfaceNotificationActivity |
|
306 { |
|
307 class TAddClient; |
|
308 class TFindTierManager; |
|
309 class TAwaitingTierManager; |
|
310 class TJoinTierManager; |
|
311 class TStartLinkNotification; |
|
312 class TAwaitingLinkNotification; |
|
313 class TAwaitingLinkNotificationError; |
|
314 class TEnqueueNotification; |
|
315 class TCancelLinkNotification; |
|
316 class TLeaveTierManager; |
|
317 } |
|
318 |
|
319 namespace EnumerateConnectionsActivity |
|
320 { |
|
321 class TAwaitingTierStatus; |
|
322 class TQueryTierStatus; |
|
323 } |
|
324 |
|
325 namespace ConnActivities |
|
326 { |
|
327 |
|
328 // |
|
329 //CStartAttachActivity |
|
330 class CStartAttachActivity : public SubSessActivities::CESockClientActivityBase, public CoreActivities::ABindingActivity, |
|
331 public ITFHIERARCHY_LINK_1(CStartAttachActivity, SubSessActivities::CESockClientActivityBase, CoreActivities::ABindingActivity) |
|
332 { |
|
333 friend class ConnStates::TParseECNStart; |
|
334 |
|
335 public: |
|
336 typedef ITFHIERARCHY_LINK_1(CStartAttachActivity, SubSessActivities::CESockClientActivityBase, CoreActivities::ABindingActivity) TIfStaticFetcherNearestInHierarchy; |
|
337 |
|
338 public: |
|
339 //Transition Tags |
|
340 static const TInt KExecuteLegacyAttach = 1; |
|
341 static const TInt KWaitAvailable = 2; |
|
342 static const TInt KCancelTag = 3; |
|
343 static const TInt KStartPrefsSetTag = 4; |
|
344 |
|
345 static const TInt KUpsErrorTag = 10011; |
|
346 |
|
347 |
|
348 public: |
|
349 void SetSelectionScope(TUint aSelectionScope) { iConnPrefs.SetScope(aSelectionScope); } |
|
350 void SetSelectionFlags(TUint aSelectionScope) { iConnPrefs.SetFlags(aSelectionScope); } |
|
351 ESock::TSelectionPrefs& SelectionPrefs() { return iConnPrefs; } |
|
352 |
|
353 void SetCSRPreferences(TConnCSRPref* aCustomPrefs) { iCSRPreferences = aCustomPrefs; } |
|
354 TConnCSRPref* CSRPreferences() { return iCSRPreferences; } |
|
355 |
|
356 TConnPrefList* ConnPrefList() { return iConnPrefList; } |
|
357 void SetConnPrefList(TConnPrefList* aConnPrefList){ iConnPrefList = aConnPrefList; } |
|
358 void SetCSR(const Messages::TNodeId& aCSR) { iCSR = aCSR; } |
|
359 const Messages::TNodeId& CSR() const { return iCSR; } |
|
360 static MeshMachine::CNodeActivityBase* NewStartConnectionActivityL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode); |
|
361 static MeshMachine::CNodeActivityBase* NewWaitForIncomingConnectionActivityL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode); |
|
362 |
|
363 virtual ~CStartAttachActivity(); |
|
364 |
|
365 virtual TBool Next(MeshMachine::TNodeContextBase& aContext); |
|
366 |
|
367 void ReturnInterfacePtrL(CoreActivities::ABindingActivity*& aInterface) |
|
368 { |
|
369 aInterface = this; |
|
370 } |
|
371 TBool& AutoStartPresent() |
|
372 { |
|
373 return iIsAutoStartPresent; |
|
374 } |
|
375 |
|
376 protected: |
|
377 CStartAttachActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode) |
|
378 : CESockClientActivityBase(aActivitySig, aNode), |
|
379 CoreActivities::ABindingActivity(aNode.Id()), |
|
380 TIfStaticFetcherNearestInHierarchy(this), |
|
381 iConnPrefs() |
|
382 { |
|
383 } |
|
384 |
|
385 private: |
|
386 ESock::TSelectionPrefs iConnPrefs; |
|
387 Messages::TNodeId iCSR; |
|
388 TConnPrefList* iConnPrefList; |
|
389 TConnCSRPref* iCSRPreferences; |
|
390 TBool iIsAutoStartPresent; |
|
391 |
|
392 protected: |
|
393 typedef MeshMachine::TNodeContext<ESock::CConnection, SubSessStates::TContext> TContext; |
|
394 |
|
395 //States, StateForks & StateTransitions |
|
396 public: |
|
397 DECLARE_SMELEMENT_HEADER( TNoTagOrStartPrefsSetTag, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext ) |
|
398 virtual TInt TransitionTag(); |
|
399 DECLARE_SMELEMENT_FOOTER( TNoTagOrStartPrefsSetTag ) |
|
400 |
|
401 typedef MeshMachine::TTag<ConnActivities::CStartAttachActivity::KStartPrefsSetTag> TStartPrefsSetTag; |
|
402 |
|
403 //Not the first state fork on the ECAB, so just normal state fork |
|
404 DECLARE_SMELEMENT_HEADER( TNoTagOrLegacyAttach, MeshMachine::TStateFork<ConnStates::TContext>, NetStateMachine::MStateFork, ConnStates::TContext ) |
|
405 virtual TInt TransitionTag(); |
|
406 DECLARE_SMELEMENT_FOOTER( TNoTagOrLegacyAttach ) |
|
407 |
|
408 DECLARE_SMELEMENT_HEADER( TNoTagOrWaitAvailable, MeshMachine::TStateFork<ConnStates::TContext>, NetStateMachine::MStateFork, ConnStates::TContext ) |
|
409 virtual TInt TransitionTag(); |
|
410 DECLARE_SMELEMENT_FOOTER( TNoTagOrWaitAvailable ) |
|
411 |
|
412 DECLARE_SMELEMENT_HEADER( TErrorTagOrWaitAvailableBackward, MeshMachine::TStateFork<ConnStates::TContext>, NetStateMachine::MStateFork, ConnStates::TContext ) |
|
413 virtual TInt TransitionTag(); |
|
414 DECLARE_SMELEMENT_FOOTER( TErrorTagOrWaitAvailableBackward ) |
|
415 |
|
416 DECLARE_SMELEMENT_HEADER( TAwaitingAvailableOrError, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext ) |
|
417 virtual TBool Accept(); |
|
418 DECLARE_SMELEMENT_FOOTER( TAwaitingAvailableOrError ) |
|
419 |
|
420 DECLARE_SMELEMENT_HEADER( TSubscribeForAvailability, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext) |
|
421 virtual void DoL(); |
|
422 DECLARE_SMELEMENT_FOOTER( TSubscribeForAvailability ) |
|
423 |
|
424 DECLARE_SMELEMENT_HEADER(TAwaitingSelectCompleteOrError, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext) |
|
425 virtual TBool Accept(); |
|
426 DECLARE_SMELEMENT_FOOTER(TAwaitingSelectCompleteOrError) |
|
427 |
|
428 |
|
429 DECLARE_AGGREGATED_TRANSITION2( |
|
430 TSendBindToCompleteAndCompleteLegacyAttach, |
|
431 TSendBindToComplete, |
|
432 ConnStates::TCompleteLegacyAttach |
|
433 ) |
|
434 |
|
435 #ifdef SYMBIAN_NETWORKING_UPS |
|
436 DECLARE_SMELEMENT_HEADER(TSendPolicyCheckRequestToServiceProvider, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, ConnStates::TContext) |
|
437 virtual void DoL(); |
|
438 DECLARE_SMELEMENT_FOOTER(TSendPolicyCheckRequestToServiceProvider) |
|
439 |
|
440 DECLARE_SMELEMENT_HEADER(TNoTagOrUpsErrorTag, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, ConnStates::TContext) |
|
441 virtual TInt TransitionTag(); |
|
442 DECLARE_SMELEMENT_FOOTER(TNoTagOrUpsErrorTag) |
|
443 #endif |
|
444 |
|
445 }; |
|
446 |
|
447 /** |
|
448 A base activity for activities wishing to interact with a tier manager. |
|
449 */ |
|
450 class CTierManagerActivity : public SubSessActivities::CESockClientActivityBase |
|
451 { |
|
452 public: |
|
453 typedef MeshMachine::TNodeContext<ESock::CConnection, SubSessStates::TContext, CTierManagerActivity> TContext; |
|
454 |
|
455 public: |
|
456 static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode); |
|
457 |
|
458 // States |
|
459 DECLARE_SMELEMENT_HEADER(TAwaitingTierManager, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext) |
|
460 virtual TBool Accept(); |
|
461 DECLARE_SMELEMENT_FOOTER(TAwaitingTierManager) |
|
462 |
|
463 DECLARE_SMELEMENT_HEADER(TAwaitingJoinComplete, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext) |
|
464 virtual TBool Accept(); |
|
465 DECLARE_SMELEMENT_FOOTER(TAwaitingJoinComplete) |
|
466 |
|
467 // Transitions |
|
468 DECLARE_SMELEMENT_HEADER(TFindTierManager, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext) |
|
469 virtual void DoL(); |
|
470 DECLARE_SMELEMENT_FOOTER(TFindTierManager) |
|
471 |
|
472 DECLARE_SMELEMENT_HEADER(TJoinTierManager, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext) |
|
473 virtual void DoL(); |
|
474 DECLARE_SMELEMENT_FOOTER(TJoinTierManager) |
|
475 |
|
476 DECLARE_SMELEMENT_HEADER(TLeaveTierManager, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext) |
|
477 virtual void DoL(); |
|
478 DECLARE_SMELEMENT_FOOTER(TLeaveTierManager) |
|
479 |
|
480 protected: |
|
481 CTierManagerActivity (const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode) : |
|
482 CESockClientActivityBase(aActivitySig, aNode) |
|
483 { |
|
484 iTierUid = TUid::Null(); |
|
485 } |
|
486 |
|
487 protected: |
|
488 TUid iTierUid; |
|
489 Messages::TNodeId iTierManager; |
|
490 }; |
|
491 |
|
492 const TInt KIPProtoTierId = 0x10281DF0; |
|
493 |
|
494 /** |
|
495 An activity supporting the legacy RConnection::AllInterfaceNotification method. |
|
496 */ |
|
497 NONSHARABLE_CLASS(CAllInterfaceNotificationActivity) : public MeshMachine::CNodeActivityBase |
|
498 { |
|
499 friend class AllInterfaceNotificationActivity::TAddClient; |
|
500 friend class AllInterfaceNotificationActivity::TFindTierManager; |
|
501 friend class AllInterfaceNotificationActivity::TAwaitingTierManager; |
|
502 friend class AllInterfaceNotificationActivity::TJoinTierManager; |
|
503 friend class AllInterfaceNotificationActivity::TStartLinkNotification; |
|
504 friend class AllInterfaceNotificationActivity::TAwaitingLinkNotification; |
|
505 friend class AllInterfaceNotificationActivity::TAwaitingLinkNotificationError; |
|
506 friend class AllInterfaceNotificationActivity::TEnqueueNotification; |
|
507 friend class AllInterfaceNotificationActivity::TCancelLinkNotification; |
|
508 friend class AllInterfaceNotificationActivity::TLeaveTierManager; |
|
509 |
|
510 public: |
|
511 static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode); |
|
512 |
|
513 private: |
|
514 CAllInterfaceNotificationActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode) : |
|
515 MeshMachine::CNodeActivityBase(aActivitySig, aNode) |
|
516 { |
|
517 iTierUid = TUid::Uid(KIPProtoTierId); // IPProto tier |
|
518 iAllInterfaceNotificationWorker = static_cast<const CAllInterfaceNotificationWorker*>(&aNode); |
|
519 } |
|
520 |
|
521 virtual ~CAllInterfaceNotificationActivity(); |
|
522 |
|
523 private: |
|
524 TUid iTierUid; |
|
525 Messages::TNodeId iTierManager; |
|
526 const CAllInterfaceNotificationWorker* iAllInterfaceNotificationWorker; |
|
527 }; |
|
528 |
|
529 /** |
|
530 An activity supporting the legacy RConnection::EnumerateConnections method. |
|
531 */ |
|
532 class CEnumerateConnectionsActivity : public CTierManagerActivity |
|
533 { |
|
534 friend class EnumerateConnectionsActivity::TAwaitingTierStatus; |
|
535 friend class EnumerateConnectionsActivity::TQueryTierStatus; |
|
536 |
|
537 public: |
|
538 static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode); |
|
539 |
|
540 private: |
|
541 CEnumerateConnectionsActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode) : |
|
542 CTierManagerActivity(aActivitySig, aNode) |
|
543 { |
|
544 iTierUid = TUid::Uid(KIPProtoTierId); // Link tier |
|
545 } |
|
546 }; |
|
547 |
|
548 /** |
|
549 An activity for handling legacy RMessage2 requests |
|
550 */ |
|
551 class CConnLegacyRMessage2Activity : public MeshMachine::CNodeParallelMessageStoreActivityBase |
|
552 { |
|
553 public: |
|
554 static CNodeActivityBase* NewL( const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode ); |
|
555 ~CConnLegacyRMessage2Activity(); |
|
556 |
|
557 void PanicClient(const TDesC& aCatagory, TInt aCode); |
|
558 void Complete(TInt aCode); |
|
559 |
|
560 void SetCancelRequest(const Den::RSafeMessage& aMessage); |
|
561 |
|
562 private: |
|
563 CConnLegacyRMessage2Activity( const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode, TUint aNextActivityCount); |
|
564 |
|
565 public: |
|
566 Den::RSafeMessage iSafeMessage; |
|
567 Den::RSafeMessage iCancelMessage; |
|
568 }; |
|
569 |
|
570 } //namespace ConnActivities |
|
571 |
|
572 |
|
573 /** |
|
574 Container for activity entities common to CConnection cleanup. |
|
575 */ |
|
576 namespace ConnectionCleanupActivities |
|
577 { |
|
578 typedef MeshMachine::TNodeContext<ESock::CConnection, SubSessStates::TContext> TContext; |
|
579 |
|
580 DECLARE_SMELEMENT_HEADER(TNoTagOrNoTagBackwards, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext) |
|
581 virtual TInt TransitionTag(); |
|
582 DECLARE_SMELEMENT_FOOTER(TNoTagOrNoTagBackwards) |
|
583 } |
|
584 |
|
585 namespace AllInterfaceNotificationActivity |
|
586 { |
|
587 typedef MeshMachine::TNodeContext<CAllInterfaceNotificationWorker, CoreStates::TContext, ConnActivities::CAllInterfaceNotificationActivity> TContext; |
|
588 |
|
589 // States |
|
590 DECLARE_SMELEMENT_HEADER(TAwaitingTierManager, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext) |
|
591 virtual TBool Accept(); |
|
592 DECLARE_SMELEMENT_FOOTER(TAwaitingTierManager) |
|
593 |
|
594 DECLARE_SMELEMENT_HEADER(TAwaitingJoinComplete, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext) |
|
595 virtual TBool Accept(); |
|
596 DECLARE_SMELEMENT_FOOTER(TAwaitingJoinComplete) |
|
597 |
|
598 DECLARE_SMELEMENT_HEADER(TAwaitingStart, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext) |
|
599 virtual TBool Accept(); |
|
600 DECLARE_SMELEMENT_FOOTER(TAwaitingStart) |
|
601 |
|
602 DECLARE_SMELEMENT_HEADER(TAwaitingLinkNotification, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext) |
|
603 virtual TBool Accept(); |
|
604 virtual void Cancel(); |
|
605 DECLARE_SMELEMENT_FOOTER(TAwaitingLinkNotification) |
|
606 |
|
607 DECLARE_SMELEMENT_HEADER(TAwaitingLinkNotificationError, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext) |
|
608 virtual TBool Accept(); |
|
609 DECLARE_SMELEMENT_FOOTER(TAwaitingLinkNotificationError) |
|
610 |
|
611 // Transitions |
|
612 DECLARE_SMELEMENT_HEADER(TAddClient, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext) |
|
613 virtual void DoL(); |
|
614 DECLARE_SMELEMENT_FOOTER(TAddClient) |
|
615 |
|
616 DECLARE_SMELEMENT_HEADER(TFindTierManager, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext) |
|
617 virtual void DoL(); |
|
618 DECLARE_SMELEMENT_FOOTER(TFindTierManager) |
|
619 |
|
620 DECLARE_SMELEMENT_HEADER(TJoinTierManager, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext) |
|
621 virtual void DoL(); |
|
622 DECLARE_SMELEMENT_FOOTER(TJoinTierManager) |
|
623 |
|
624 DECLARE_SMELEMENT_HEADER(TStartLinkNotification, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext) |
|
625 virtual void DoL(); |
|
626 DECLARE_SMELEMENT_FOOTER(TStartLinkNotification) |
|
627 |
|
628 DECLARE_SMELEMENT_HEADER(TEnqueueNotification, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext) |
|
629 virtual void DoL(); |
|
630 DECLARE_SMELEMENT_FOOTER(TEnqueueNotification) |
|
631 |
|
632 DECLARE_SMELEMENT_HEADER(TCancelLinkNotification, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext) |
|
633 virtual void DoL(); |
|
634 DECLARE_SMELEMENT_FOOTER(TCancelLinkNotification) |
|
635 |
|
636 DECLARE_SMELEMENT_HEADER(TLeaveTierManager, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext) |
|
637 virtual void DoL(); |
|
638 DECLARE_SMELEMENT_FOOTER(TLeaveTierManager) |
|
639 |
|
640 DECLARE_SMELEMENT_HEADER( TSendErrorToConnection, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
641 virtual void DoL(); |
|
642 DECLARE_SMELEMENT_FOOTER( TSendErrorToConnection ) |
|
643 } |
|
644 |
|
645 namespace ConnectionGoingDownActivity |
|
646 { |
|
647 typedef MeshMachine::TNodeContext<ESock::CConnection, CoreStates::TContext, PRActivities::CGoneDownActivity> TContext; |
|
648 |
|
649 DECLARE_SMELEMENT_HEADER(TStoreGoneDownError, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext) |
|
650 virtual void DoL(); |
|
651 DECLARE_SMELEMENT_FOOTER(TStoreGoneDownError) |
|
652 } |
|
653 |
|
654 namespace EnumerateConnectionsActivity |
|
655 { |
|
656 typedef MeshMachine::TNodeContext<ESock::CConnection, ConnActivities::CTierManagerActivity::TContext, ConnActivities::CEnumerateConnectionsActivity> TContext; |
|
657 |
|
658 // States |
|
659 DECLARE_SMELEMENT_HEADER(TAwaitingTierStatus, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext) |
|
660 virtual TBool Accept(); |
|
661 DECLARE_SMELEMENT_FOOTER(TAwaitingTierStatus) |
|
662 |
|
663 // Transitions |
|
664 DECLARE_SMELEMENT_HEADER(TQueryTierStatus, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext) |
|
665 virtual void DoL(); |
|
666 DECLARE_SMELEMENT_FOOTER(TQueryTierStatus) |
|
667 |
|
668 DECLARE_SMELEMENT_HEADER(TCacheConnectionInfo, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext) |
|
669 virtual void DoL(); |
|
670 DECLARE_SMELEMENT_FOOTER(TCacheConnectionInfo) |
|
671 |
|
672 DECLARE_SMELEMENT_HEADER(TCompleteClient, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext) |
|
673 virtual void DoL(); |
|
674 DECLARE_SMELEMENT_FOOTER(TCompleteClient) |
|
675 } |
|
676 |
|
677 |
|
678 namespace ConnSubConnEventsActivity |
|
679 { |
|
680 typedef MeshMachine::TNodeContext<ESock::CConnection, CoreStates::TContext> TContext; |
|
681 |
|
682 // States |
|
683 DECLARE_SMELEMENT_HEADER(TAwaitingSubConnEvent, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext) |
|
684 virtual TBool Accept(); |
|
685 DECLARE_SMELEMENT_FOOTER(TAwaitingSubConnEvent) |
|
686 |
|
687 // Transitions |
|
688 DECLARE_SMELEMENT_HEADER(TProcessSubConnEvent, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext) |
|
689 virtual void DoL(); |
|
690 DECLARE_SMELEMENT_FOOTER(TProcessSubConnEvent) |
|
691 } |
|
692 |
|
693 #endif |
|
694 // SYMBIAN_SS_CONNSTATES_H |
|
695 |