|
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_SUBCONNSTATES_H |
|
17 #define SYMBIAN_SS_SUBCONNSTATES_H |
|
18 |
|
19 #include <comms-infras/ss_esockstates.h> |
|
20 #include <comms-infras/ss_esockactivities.h> |
|
21 #include <comms-infras/ss_corepractivities.h> |
|
22 #include <comms-infras/sockmes.h> |
|
23 #include "ss_subconn.h" |
|
24 |
|
25 |
|
26 #ifdef _DEBUG |
|
27 // Panic category for "absolutely impossible!" vanilla ASSERT()-type panics from this module |
|
28 // (if it could happen through user error then you should give it an explicit, documented, category + code) |
|
29 _LIT(KSpecAssert_ESocks_sbcnsts, "ESocks_sbcnsts."); |
|
30 #endif |
|
31 |
|
32 //-========================================================= |
|
33 // |
|
34 //Activities |
|
35 // |
|
36 //-========================================================= |
|
37 namespace SubConnActivities |
|
38 { |
|
39 class CSubConnBindingActivityBase : public SubSessActivities::CESockClientActivityBase, public CoreActivities::ABindingActivity, |
|
40 public ITFHIERARCHY_LINK_1(CSubConnBindingActivityBase, SubSessActivities::CESockClientActivityBase, CoreActivities::ABindingActivity) |
|
41 { |
|
42 public: |
|
43 typedef ITFHIERARCHY_LINK_1(CSubConnBindingActivityBase, SubSessActivities::CESockClientActivityBase, CoreActivities::ABindingActivity) TIfStaticFetcherNearestInHierarchy; |
|
44 |
|
45 public: |
|
46 static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode); |
|
47 virtual ~CSubConnBindingActivityBase() {} |
|
48 |
|
49 void ReturnInterfacePtrL(CoreActivities::ABindingActivity*& aInterface) |
|
50 { |
|
51 aInterface = this; |
|
52 } |
|
53 |
|
54 void CompleteMessage(); |
|
55 |
|
56 protected: |
|
57 CSubConnBindingActivityBase( const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode ) |
|
58 : SubSessActivities::CESockClientActivityBase(aActivitySig, aNode), |
|
59 CoreActivities::ABindingActivity(aNode.Id()), |
|
60 TIfStaticFetcherNearestInHierarchy(this) |
|
61 { |
|
62 } |
|
63 }; |
|
64 |
|
65 |
|
66 //-========================================================= |
|
67 //CNoBearer |
|
68 //-========================================================= |
|
69 /** |
|
70 @internalComponent |
|
71 */ |
|
72 class CNoBearer : public CSubConnBindingActivityBase |
|
73 { |
|
74 public: |
|
75 typedef ITFHIERARCHY_LINK_1(CNoBearer, SubSessActivities::CESockClientActivityBase, CoreActivities::ABindingActivity) TIfStaticFetcherNearestInHierarchy; |
|
76 |
|
77 public: |
|
78 static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode); |
|
79 virtual ~CNoBearer(); |
|
80 |
|
81 inline ESock::RCFParameterFamilyBundleC& GetFlowRequestParameters() |
|
82 {return iFlowRequestBundle;} |
|
83 |
|
84 void SetFlowRequestParameters(const ESock::RCFParameterFamilyBundleC& aParams); |
|
85 |
|
86 void ReturnInterfacePtrL(CoreActivities::ABindingActivity*& aInterface) |
|
87 {aInterface = this;} |
|
88 |
|
89 DECLARE_SMELEMENT_HEADER( TStoreFlowParams, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
90 virtual void DoL(); |
|
91 DECLARE_SMELEMENT_FOOTER( TStoreFlowParams ) |
|
92 |
|
93 protected: |
|
94 CNoBearer( const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode ) |
|
95 : CSubConnBindingActivityBase(aActivitySig, aNode) |
|
96 { |
|
97 } |
|
98 private: |
|
99 ESock::RCFParameterFamilyBundleC iFlowRequestBundle; |
|
100 }; |
|
101 |
|
102 |
|
103 //-========================================================= |
|
104 //CBuildStack |
|
105 //-========================================================= |
|
106 class CBuildStack : public MeshMachine::CNodeActivityBase, public CoreActivities::ABindingActivity, |
|
107 public ITFHIERARCHY_1(CBuildStack, CoreActivities::ABindingActivity) |
|
108 { |
|
109 public: |
|
110 typedef ITFHIERARCHY_1(CBuildStack, CoreActivities::ABindingActivity) TIfStaticFetcherNearestInHierarchy; |
|
111 |
|
112 void ReturnInterfacePtrL(CoreActivities::ABindingActivity*& aInterface) |
|
113 { |
|
114 aInterface = this; |
|
115 } |
|
116 |
|
117 public: |
|
118 static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode); |
|
119 virtual ~CBuildStack(); |
|
120 |
|
121 protected: |
|
122 CBuildStack(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode); |
|
123 |
|
124 public: |
|
125 typedef MeshMachine::TNodeContext<ESock::CSubConnection, SubSessStates::TContext> TContext; |
|
126 DECLARE_SMELEMENT_HEADER( TSendBuildStackResponse, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
127 virtual void DoL(); |
|
128 DECLARE_SMELEMENT_FOOTER( TSendBuildStackResponse ) |
|
129 |
|
130 DECLARE_SMELEMENT_HEADER( TAwaitingBuildStack, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext ) |
|
131 virtual TBool Accept(); |
|
132 DECLARE_SMELEMENT_FOOTER( TAwaitingBuildStack ) |
|
133 |
|
134 DECLARE_SMELEMENT_HEADER( TRequestServiceProviderFromCPR, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
135 virtual void DoL(); |
|
136 DECLARE_SMELEMENT_FOOTER( TRequestServiceProviderFromCPR ) |
|
137 |
|
138 private: |
|
139 void RequestServiceProviderFromCPRL(TContext& aContext); |
|
140 }; |
|
141 |
|
142 |
|
143 //-========================================================= |
|
144 //CCreate |
|
145 //-========================================================= |
|
146 class CCreate : public CSubConnBindingActivityBase |
|
147 { |
|
148 public: |
|
149 typedef ITFHIERARCHY_LINK_1(CCreate, SubSessActivities::CESockClientActivityBase, CoreActivities::ABindingActivity) TIfStaticFetcherNearestInHierarchy; |
|
150 |
|
151 public: |
|
152 static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode); |
|
153 virtual ~CCreate(); |
|
154 |
|
155 protected: |
|
156 CCreate(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode) |
|
157 : CSubConnBindingActivityBase(aActivitySig, aNode), |
|
158 iSubConnectionNode(aNode.Id()) |
|
159 { |
|
160 } |
|
161 private: |
|
162 //We are taking ownership of the sub session for the duration of this activity |
|
163 //If something goes wrong, we need to destroy this subsession. |
|
164 Messages::TNodeId iSubConnectionNode; |
|
165 }; |
|
166 |
|
167 //-========================================================= |
|
168 //CRejoin |
|
169 //-========================================================= |
|
170 class ESock::CSubConnection; |
|
171 class CRejoin : public SubSessActivities::CESockClientActivityBase |
|
172 /* |
|
173 |
|
174 */ |
|
175 { |
|
176 public: |
|
177 static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode); |
|
178 virtual ~CRejoin(); |
|
179 const Messages::TNodeId& OldOwner() |
|
180 { |
|
181 __ASSERT_DEBUG(!iOldOwner.IsNull(), User::Panic(KSpecAssert_ESocks_sbcnsts, 1)); |
|
182 return iOldOwner; |
|
183 } |
|
184 |
|
185 const Messages::TNodeId& NewOwner() |
|
186 { |
|
187 __ASSERT_DEBUG(!iNewOwner.IsNull(), User::Panic(KSpecAssert_ESocks_sbcnsts, 2)); |
|
188 return iNewOwner; |
|
189 } |
|
190 |
|
191 const Messages::TNodeId& TheOtherOwner() |
|
192 { |
|
193 __ASSERT_DEBUG(!iOldOwner.IsNull() && !iNewOwner.IsNull(), User::Panic(KSpecAssert_ESocks_sbcnsts, 3)); |
|
194 return iMessage.Function() == ESCAddSocket ? iOldOwner : iNewOwner; |
|
195 } |
|
196 |
|
197 const Messages::TNodeId& Flow() |
|
198 { |
|
199 __ASSERT_DEBUG(!iFlow.IsNull(), User::Panic(KSpecAssert_ESocks_sbcnsts, 4)); |
|
200 return iFlow; |
|
201 } |
|
202 |
|
203 void InitialiseL(ESock::CSubConnection& aSC); |
|
204 |
|
205 void SetOldOwnerIntf(Messages::RNodeInterface * aIntf) |
|
206 { |
|
207 iOldOwnerIntf = aIntf; |
|
208 } |
|
209 |
|
210 Messages::RNodeInterface* OldOwnerIntf() |
|
211 { |
|
212 __ASSERT_DEBUG(iOldOwnerIntf != NULL, User::Panic(KSpecAssert_ESocks_sbcnsts, 1)); |
|
213 return iOldOwnerIntf; |
|
214 } |
|
215 |
|
216 protected: |
|
217 CRejoin( const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode ) |
|
218 : SubSessActivities::CESockClientActivityBase(aActivitySig, aNode) |
|
219 { |
|
220 } |
|
221 |
|
222 |
|
223 private: |
|
224 Messages::TNodeId iOldOwner; |
|
225 Messages::TNodeId iNewOwner; |
|
226 Messages::TNodeId iFlow; |
|
227 |
|
228 Messages::RNodeInterface * iOldOwnerIntf; |
|
229 }; |
|
230 |
|
231 //-========================================================= |
|
232 //CSetParameters |
|
233 //-========================================================= |
|
234 class CSetParameters : public SubSessActivities::CESockClientActivityBase |
|
235 /* |
|
236 |
|
237 */ |
|
238 { |
|
239 public: |
|
240 typedef MeshMachine::TNodeContext<ESock::CSubConnection, SubSessStates::TContext> TContext; |
|
241 static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode); |
|
242 virtual ~CSetParameters(); |
|
243 |
|
244 ESock::RCFParameterFamilyBundleC& GetParameterBundleL(); |
|
245 void CompleteMessage(); |
|
246 |
|
247 protected: |
|
248 CSetParameters( const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode ) |
|
249 : SubSessActivities::CESockClientActivityBase(aActivitySig, aNode) |
|
250 { |
|
251 } |
|
252 private: |
|
253 void StoreParametersInSubConn(TContext& aContext); |
|
254 |
|
255 ESock::RCFParameterFamilyBundleC iParameterBundle; |
|
256 |
|
257 public: |
|
258 DECLARE_SMELEMENT_HEADER( TCompleteClient, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
259 virtual void DoL(); |
|
260 DECLARE_SMELEMENT_FOOTER( TCompleteClient ) |
|
261 |
|
262 DECLARE_SMELEMENT_HEADER( TStoreNewParams, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
263 virtual void DoL(); |
|
264 DECLARE_SMELEMENT_FOOTER( TStoreNewParams ) |
|
265 |
|
266 }; |
|
267 |
|
268 //-========================================================= |
|
269 //CEventNotification |
|
270 //-========================================================= |
|
271 class CEventNotification : public SubSessActivities::CESockClientActivityBase |
|
272 /* |
|
273 |
|
274 */ |
|
275 { |
|
276 public: |
|
277 static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode); |
|
278 virtual ~CEventNotification(); |
|
279 |
|
280 void RequestEventNotificationSetupL(); |
|
281 void RequestAllEventNotificationsL(); |
|
282 TBool FillInEvent(const CSubConNotificationEvent& aEvent); |
|
283 |
|
284 protected: |
|
285 CEventNotification( const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode ) |
|
286 : SubSessActivities::CESockClientActivityBase(aActivitySig, aNode) |
|
287 { |
|
288 } |
|
289 private: |
|
290 RSubConnection::TEventFilter iEventUidFilterList[KMaxUidFilterListLen]; |
|
291 TUint iEventUidFilterListLength; |
|
292 }; |
|
293 |
|
294 } //namespace SubConnActivities |
|
295 |
|
296 |
|
297 //-========================================================= |
|
298 // |
|
299 //States |
|
300 // |
|
301 //-========================================================= |
|
302 namespace SubConnStates |
|
303 { |
|
304 typedef MeshMachine::TNodeContext<ESock::CSubConnection, SubSessStates::TContext> TContext; |
|
305 |
|
306 //-========================================================= |
|
307 //Create |
|
308 //-========================================================= |
|
309 DECLARE_SMELEMENT_HEADER( TNoTagOrWaitForIncoming, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext ) |
|
310 virtual TInt TransitionTag(); |
|
311 DECLARE_SMELEMENT_FOOTER( TNoTagOrWaitForIncoming ) |
|
312 |
|
313 DECLARE_SMELEMENT_HEADER( TJoinCPR, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
314 virtual void DoL(); |
|
315 DECLARE_SMELEMENT_FOOTER( TJoinCPR ) |
|
316 |
|
317 DECLARE_SMELEMENT_HEADER( TRequestServiceProvider, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
318 virtual void DoL(); |
|
319 DECLARE_SMELEMENT_FOOTER( TRequestServiceProvider ) |
|
320 |
|
321 DECLARE_SMELEMENT_HEADER( TLeaveCPR, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
322 virtual void DoL(); |
|
323 DECLARE_SMELEMENT_FOOTER( TLeaveCPR ) |
|
324 |
|
325 DECLARE_SMELEMENT_HEADER( TNoTagOrAttachToDefaultOrWaitForIncoming, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext ) |
|
326 virtual TInt TransitionTag(); |
|
327 DECLARE_SMELEMENT_FOOTER( TNoTagOrAttachToDefaultOrWaitForIncoming ) |
|
328 |
|
329 //-========================================================= |
|
330 //Rejoin |
|
331 //-========================================================= |
|
332 DECLARE_SMELEMENT_HEADER( TJoinTheOtherOwner, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
333 virtual void DoL(); |
|
334 DECLARE_SMELEMENT_FOOTER( TJoinTheOtherOwner ) |
|
335 |
|
336 DECLARE_SMELEMENT_HEADER( TLeaveTheOtherOwner, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
337 virtual void DoL(); |
|
338 DECLARE_SMELEMENT_FOOTER( TLeaveTheOtherOwner ) |
|
339 |
|
340 DECLARE_SMELEMENT_HEADER( TSendRejoinDataClientRequestToOldOwner, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
341 virtual void DoL(); |
|
342 DECLARE_SMELEMENT_FOOTER( TSendRejoinDataClientRequestToOldOwner ) |
|
343 |
|
344 DECLARE_SMELEMENT_HEADER( TSendApplyToOldOwner, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
345 virtual void DoL(); |
|
346 DECLARE_SMELEMENT_FOOTER( TSendApplyToOldOwner ) |
|
347 |
|
348 DECLARE_SMELEMENT_HEADER( TSendApplyToNewOwner, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
349 virtual void DoL(); |
|
350 DECLARE_SMELEMENT_FOOTER( TSendApplyToNewOwner ) |
|
351 |
|
352 DECLARE_SMELEMENT_HEADER( TSendCancelToOldOwner, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
353 virtual void DoL(); |
|
354 DECLARE_SMELEMENT_FOOTER( TSendCancelToOldOwner ) |
|
355 |
|
356 //-========================================================= |
|
357 //Get/Set Params |
|
358 //-========================================================= |
|
359 DECLARE_SMELEMENT_HEADER( TSendParamsToServiceProvider, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
360 virtual void DoL(); |
|
361 DECLARE_SMELEMENT_FOOTER( TSendParamsToServiceProvider ) |
|
362 |
|
363 DECLARE_SMELEMENT_HEADER( TStoreParams, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
364 virtual void DoL(); |
|
365 DECLARE_SMELEMENT_FOOTER( TStoreParams ) |
|
366 |
|
367 DECLARE_AGGREGATED_TRANSITION2( |
|
368 TStoreParamsAndSendApply, |
|
369 SubConnStates::TStoreParams, |
|
370 CoreNetStates::TSendApplyRequest |
|
371 ) |
|
372 |
|
373 DECLARE_SMELEMENT_HEADER( TSendParamRequest, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
374 virtual void DoL(); |
|
375 DECLARE_SMELEMENT_FOOTER( TSendParamRequest ) |
|
376 |
|
377 DECLARE_SMELEMENT_HEADER( TNoTagOrParamsPresent, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext ) |
|
378 virtual TInt TransitionTag(); |
|
379 DECLARE_SMELEMENT_FOOTER( TNoTagOrParamsPresent ) |
|
380 |
|
381 DECLARE_SMELEMENT_HEADER( TWriteSubConnParamsLength, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
382 virtual void DoL(); |
|
383 DECLARE_SMELEMENT_FOOTER( TWriteSubConnParamsLength ) |
|
384 |
|
385 DECLARE_SMELEMENT_HEADER( TWriteSubConnParams, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
386 virtual void DoL(); |
|
387 DECLARE_SMELEMENT_FOOTER( TWriteSubConnParams ) |
|
388 |
|
389 DECLARE_SERIALIZABLE_STATE( |
|
390 TNoTagOrParamsPresentBlockedBySetParams, |
|
391 MeshMachine::TActivityIdMutex<ESock::ECFActivityParamRequest>, |
|
392 SubConnStates::TNoTagOrParamsPresent |
|
393 ) |
|
394 |
|
395 //-========================================================= |
|
396 //Events |
|
397 //-========================================================= |
|
398 DECLARE_SMELEMENT_HEADER( TAwaitingEventNotificationSubscription, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext ) |
|
399 virtual TBool Accept(); |
|
400 DECLARE_SMELEMENT_FOOTER( TAwaitingEventNotificationSubscription ) |
|
401 |
|
402 DECLARE_SMELEMENT_HEADER( TNoTagOrAllNotifications, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext ) |
|
403 virtual TInt TransitionTag(); |
|
404 DECLARE_SMELEMENT_FOOTER( TNoTagOrAllNotifications ) |
|
405 |
|
406 DECLARE_SMELEMENT_HEADER( TSetupFilteredEventNotification, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
407 virtual void DoL(); |
|
408 DECLARE_SMELEMENT_FOOTER( TSetupFilteredEventNotification ) |
|
409 |
|
410 DECLARE_SMELEMENT_HEADER( TSetupAllEventNotification, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
411 virtual void DoL(); |
|
412 DECLARE_SMELEMENT_FOOTER( TSetupAllEventNotification ) |
|
413 |
|
414 DECLARE_SMELEMENT_HEADER( TFillInEvent, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
415 virtual void DoL(); |
|
416 DECLARE_SMELEMENT_FOOTER( TFillInEvent ) |
|
417 |
|
418 DECLARE_SMELEMENT_HEADER( TEnqueueEvent, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
419 virtual void DoL(); |
|
420 protected: |
|
421 void CreateOrUpdateBundleL(CSubConGenEventParamsGranted* aEvent); |
|
422 DECLARE_SMELEMENT_FOOTER( TEnqueueEvent ) |
|
423 |
|
424 DECLARE_SMELEMENT_HEADER( TNoTagOrActiveWhenEventEnqued, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext ) |
|
425 virtual TInt TransitionTag(); |
|
426 DECLARE_SMELEMENT_FOOTER( TNoTagOrActiveWhenEventEnqued ) |
|
427 |
|
428 |
|
429 |
|
430 //-========================================================= |
|
431 //Start/Stop SubConnection |
|
432 //-========================================================= |
|
433 DECLARE_SMELEMENT_HEADER( TStartSubConnection, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
434 virtual void DoL(); |
|
435 DECLARE_SMELEMENT_FOOTER( TStartSubConnection ) |
|
436 |
|
437 DECLARE_SMELEMENT_HEADER( TStopSubConnection, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
438 virtual void DoL(); |
|
439 DECLARE_SMELEMENT_FOOTER( TStopSubConnection ) |
|
440 |
|
441 //-========================================================= |
|
442 //Close |
|
443 //-========================================================= |
|
444 DECLARE_SMELEMENT_HEADER( TDetachControlProvider, SubSessStates::TECABStateTransitionBase<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
445 virtual void DoL(); |
|
446 DECLARE_SMELEMENT_FOOTER( TDetachControlProvider ) |
|
447 |
|
448 DECLARE_AGGREGATED_TRANSITION2( |
|
449 TProcessClose, |
|
450 SubSessStates::TProcessClose, |
|
451 TDetachControlProvider |
|
452 ) |
|
453 |
|
454 //-========================================================= |
|
455 // Build stack |
|
456 //-========================================================= |
|
457 |
|
458 DECLARE_SMELEMENT_HEADER( TAwaitingBuildStackResponse, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext ) |
|
459 virtual TBool Accept(); |
|
460 DECLARE_SMELEMENT_FOOTER( TAwaitingBuildStackResponse ) |
|
461 |
|
462 DECLARE_SMELEMENT_HEADER( TSendBuildStack, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext ) |
|
463 virtual void DoL(); |
|
464 DECLARE_SMELEMENT_FOOTER( TSendBuildStack ) |
|
465 |
|
466 } //namespace SubConnStates |
|
467 |
|
468 |
|
469 #endif |
|
470 // SYMBIAN_SS_SUBCONNSTATES_H |
|
471 |