datacommsserver/esockserver/ssock/ss_connstates.cpp
branchRCL_3
changeset 29 9644881fedd0
parent 24 51722b10598b
child 48 07656293a99c
equal deleted inserted replaced
28:9ddb1d67ebaf 29:9644881fedd0
   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()