257 { |
257 { |
258 __ASSERT_DEBUG(iContext.iNodeActivity, ConnPanic(KPanicNoActivity)); |
258 __ASSERT_DEBUG(iContext.iNodeActivity, ConnPanic(KPanicNoActivity)); |
259 __ASSERT_DEBUG(iContext.Node().ServiceProvider()==NULL, ConnPanic(KPanicExpectedNoServiceProvider)); |
259 __ASSERT_DEBUG(iContext.Node().ServiceProvider()==NULL, ConnPanic(KPanicExpectedNoServiceProvider)); |
260 |
260 |
261 TCFDataClient::TBindTo& bt = message_cast<TCFDataClient::TBindTo>(iContext.iMessage); |
261 TCFDataClient::TBindTo& bt = message_cast<TCFDataClient::TBindTo>(iContext.iMessage); |
262 iContext.Node().AddClientL(bt.iNodeId, TClientType(TCFClientType::EServProvider, TCFClientType::EActive)); |
262 RNodeInterface* newSP = iContext.Node().AddClientL(bt.iNodeId, TClientType(TCFClientType::EServProvider, TCFClientType::EActive)); |
|
263 __ASSERT_DEBUG(iContext.Node().ServiceProvider()==newSP, ConnPanic(KPanicNoServiceProvider)); //[RZ] revise this, possibly overdefensive |
263 |
264 |
264 //If this is attach, we need to see if we are a monitor or not |
265 //If this is attach, we need to see if we are a monitor or not |
265 TClientType clientType(TCFClientType::ECtrl); |
266 TClientType clientType(TCFClientType::ECtrl); |
266 |
267 |
267 TUint selPrefs = static_cast<ConnActivities::CStartAttachActivity&>(*iContext.iNodeActivity).SelectionPrefs().Flags(); |
268 TUint selPrefs = static_cast<ConnActivities::CStartAttachActivity&>(*iContext.iNodeActivity).SelectionPrefs().Flags(); |
274 // If it is an attach set the flag cause it is used by NetUPS to check if a JoinRequest comes from an RConnection::Attach |
275 // If it is an attach set the flag cause it is used by NetUPS to check if a JoinRequest comes from an RConnection::Attach |
275 if (selPrefs & TSelectionPrefs::EAttach) |
276 if (selPrefs & TSelectionPrefs::EAttach) |
276 { |
277 { |
277 clientType.SetFlags(TCFClientType::EAttach); |
278 clientType.SetFlags(TCFClientType::EAttach); |
278 } |
279 } |
279 iContext.iNodeActivity->PostRequestTo(bt.iNodeId, |
280 iContext.iNodeActivity->PostRequestTo(*newSP, |
280 TCFServiceProvider::TJoinRequest(iContext.NodeId(), clientType).CRef()); |
281 TCFServiceProvider::TJoinRequest(iContext.NodeId(), clientType).CRef()); |
281 } |
282 } |
282 |
283 |
283 DEFINE_SMELEMENT(ConnStates::TJoinReceivedSCpr, NetStateMachine::MStateTransition, ConnStates::TContext) |
284 DEFINE_SMELEMENT(ConnStates::TJoinReceivedSCpr, NetStateMachine::MStateTransition, ConnStates::TContext) |
284 void ConnStates::TJoinReceivedSCpr::DoL() |
285 void ConnStates::TJoinReceivedSCpr::DoL() |
285 { |
286 { |
286 __ASSERT_DEBUG(iContext.iNodeActivity, ConnPanic(KPanicNoActivity)); |
287 __ASSERT_DEBUG(iContext.iNodeActivity, ConnPanic(KPanicNoActivity)); |
287 __ASSERT_DEBUG(iContext.iPeer == iContext.Node().ServiceProvider(), ConnPanic(KPanicExpectedNoServiceProvider)); |
288 __ASSERT_DEBUG(iContext.iPeer == iContext.Node().ServiceProvider(), ConnPanic(KPanicExpectedNoServiceProvider)); |
288 |
289 |
289 TCFServiceProvider::TCommsBinderResponse& br = message_cast<TCFServiceProvider::TCommsBinderResponse>(iContext.iMessage); |
290 TCFServiceProvider::TCommsBinderResponse& br = message_cast<TCFServiceProvider::TCommsBinderResponse>(iContext.iMessage); |
290 iContext.Node().AddClientL(br.iNodeId, TClientType(TCFClientType::EServProvider, TCFClientType::EDefault)); |
291 RNodeInterface* scpr = iContext.Node().AddClientL(br.iNodeId, TClientType(TCFClientType::EServProvider, TCFClientType::EDefault)); |
291 |
292 |
292 //If this is attach, we need to see if we are a monitor or not |
293 //If this is attach, we need to see if we are a monitor or not |
293 TCFClientType clientType(TCFClientType::ECtrl); |
294 TCFClientType clientType(TCFClientType::ECtrl); |
294 |
295 |
295 TUint selPrefs = static_cast<ConnActivities::CStartAttachActivity&>(*iContext.iNodeActivity).SelectionPrefs().Flags(); |
296 TUint selPrefs = static_cast<ConnActivities::CStartAttachActivity&>(*iContext.iNodeActivity).SelectionPrefs().Flags(); |
302 if (selPrefs & TSelectionPrefs::EAttach) |
303 if (selPrefs & TSelectionPrefs::EAttach) |
303 { |
304 { |
304 clientType.SetFlags(TCFClientType::EAttach); |
305 clientType.SetFlags(TCFClientType::EAttach); |
305 } |
306 } |
306 |
307 |
307 iContext.iNodeActivity->PostRequestTo(br.iNodeId, |
308 iContext.iNodeActivity->PostRequestTo(*scpr, |
308 TCFServiceProvider::TJoinRequest(iContext.NodeId(), clientType).CRef()); |
309 TCFServiceProvider::TJoinRequest(iContext.NodeId(), clientType).CRef()); |
309 } |
310 } |
310 |
311 |
311 DEFINE_SMELEMENT(ConnStates::TJoinReceivedMcpr, NetStateMachine::MStateTransition, ConnStates::TContext) |
312 DEFINE_SMELEMENT(ConnStates::TJoinReceivedMcpr, NetStateMachine::MStateTransition, ConnStates::TContext) |
312 void ConnStates::TJoinReceivedMcpr::DoL() |
313 void ConnStates::TJoinReceivedMcpr::DoL() |
313 { |
314 { |
314 __ASSERT_DEBUG(iContext.iNodeActivity, ConnPanic(KPanicNoActivity)); |
315 __ASSERT_DEBUG(iContext.iNodeActivity, ConnPanic(KPanicNoActivity)); |
315 __ASSERT_DEBUG(iContext.Node().ServiceProvider()==NULL, ConnPanic(KPanicExpectedNoServiceProvider)); |
316 __ASSERT_DEBUG(iContext.Node().ServiceProvider()==NULL, ConnPanic(KPanicExpectedNoServiceProvider)); |
316 |
317 |
317 TCFSelector::TSelectComplete& sc = message_cast<TCFSelector::TSelectComplete>(iContext.iMessage); |
318 TCFSelector::TSelectComplete& sc = message_cast<TCFSelector::TSelectComplete>(iContext.iMessage); |
318 iContext.Node().AddClientL(sc.iNodeId,TClientType(TCFClientType::EServProvider, TCFClientType::EAvailabilityProvider)); |
319 RNodeInterface* mcpr = iContext.Node().AddClientL(sc.iNodeId,TClientType(TCFClientType::EServProvider, TCFClientType::EAvailabilityProvider)); |
319 |
320 |
320 |
321 |
321 iContext.iNodeActivity->PostRequestTo(sc.iNodeId, |
322 iContext.iNodeActivity->PostRequestTo(*mcpr, |
322 TCFServiceProvider::TJoinRequest(iContext.NodeId(), TCFClientType(TCFClientType::ECtrl)).CRef()); |
323 TCFServiceProvider::TJoinRequest(iContext.NodeId(), TCFClientType(TCFClientType::ECtrl)).CRef()); |
323 } |
324 } |
324 |
325 |
325 DEFINE_SMELEMENT(ConnStates::TRequestCommsBinder, NetStateMachine::MStateTransition, ConnStates::TContext) |
326 DEFINE_SMELEMENT(ConnStates::TRequestCommsBinder, NetStateMachine::MStateTransition, ConnStates::TContext) |
326 void ConnStates::TRequestCommsBinder::DoL() |
327 void ConnStates::TRequestCommsBinder::DoL() |
349 __ASSERT_DEBUG(iContext.iNodeActivity, ConnPanic(KPanicNoActivity)); |
350 __ASSERT_DEBUG(iContext.iNodeActivity, ConnPanic(KPanicNoActivity)); |
350 __ASSERT_DEBUG(iContext.Node().ServiceProvider()==NULL, ConnPanic(KPanicExpectedNoServiceProvider)); |
351 __ASSERT_DEBUG(iContext.Node().ServiceProvider()==NULL, ConnPanic(KPanicExpectedNoServiceProvider)); |
351 |
352 |
352 TCFServiceProvider::TCommsBinderResponse& br = message_cast<TCFServiceProvider::TCommsBinderResponse>(iContext.iMessage); |
353 TCFServiceProvider::TCommsBinderResponse& br = message_cast<TCFServiceProvider::TCommsBinderResponse>(iContext.iMessage); |
353 |
354 |
354 iContext.Node().AddClientL(br.iNodeId, TClientType(TCFClientType::EServProvider, TCFClientType::EActive)); |
355 RNodeInterface* sp = iContext.Node().AddClientL(br.iNodeId, TClientType(TCFClientType::EServProvider, TCFClientType::EActive)); |
|
356 __ASSERT_DEBUG(iContext.Node().ServiceProvider()==sp, ConnPanic(KPanicNoServiceProvider)); //[RZ] revise this, possibly overdefensive |
355 |
357 |
356 //If this is attach, we need to see if we are a monitor or not |
358 //If this is attach, we need to see if we are a monitor or not |
357 TCFClientType clientType; |
359 TCFClientType clientType; |
358 |
360 |
359 TUint selPrefs = static_cast<ConnActivities::CStartAttachActivity&>(*iContext.iNodeActivity).SelectionPrefs().Flags(); |
361 TUint selPrefs = static_cast<ConnActivities::CStartAttachActivity&>(*iContext.iNodeActivity).SelectionPrefs().Flags(); |
366 if (selPrefs & TSelectionPrefs::EAttach) |
368 if (selPrefs & TSelectionPrefs::EAttach) |
367 { |
369 { |
368 clientType.SetFlags(TCFClientType::EAttach); |
370 clientType.SetFlags(TCFClientType::EAttach); |
369 } |
371 } |
370 |
372 |
371 iContext.iNodeActivity->PostRequestTo(br.iNodeId, |
373 iContext.iNodeActivity->PostRequestTo(*sp, |
372 TCFServiceProvider::TJoinRequest(iContext.NodeId(), clientType).CRef()); |
374 TCFServiceProvider::TJoinRequest(iContext.NodeId(), clientType).CRef()); |
373 } |
375 } |
374 |
376 |
375 DEFINE_SMELEMENT(ConnStates::TStartConnection, NetStateMachine::MStateTransition, ConnStates::TContext) |
377 DEFINE_SMELEMENT(ConnStates::TStartConnection, NetStateMachine::MStateTransition, ConnStates::TContext) |
376 void ConnStates::TStartConnection::DoL() |
378 void ConnStates::TStartConnection::DoL() |