datacommsserver/esockserver/ssock/ss_tiermanager.cpp
branchRCL_3
changeset 14 4ccf8e394726
parent 0 dfb7c4ff071f
equal deleted inserted replaced
13:0b0e9fce0b58 14:4ccf8e394726
   111 void CTierManagerFactoryContainer::ReceivedL(const TRuntimeCtxId& aSender, const TNodeId& aRecipient, TSignatureBase& aMessage)
   111 void CTierManagerFactoryContainer::ReceivedL(const TRuntimeCtxId& aSender, const TNodeId& aRecipient, TSignatureBase& aMessage)
   112 	{	
   112 	{	
   113 	if (aMessage.IsMessage<TCFInternalEsock::TCreateCSR>())
   113 	if (aMessage.IsMessage<TCFInternalEsock::TCreateCSR>())
   114 		{
   114 		{
   115 		TCFInternalEsock::TCreateCSR& msg = message_cast<TCFInternalEsock::TCreateCSR>(aMessage);
   115 		TCFInternalEsock::TCreateCSR& msg = message_cast<TCFInternalEsock::TCreateCSR>(aMessage);
   116 		// Maps Tier to ImplId For ECOM since ImplId is used in Factory
   116 		TTierTypeIdFactoryQuery tierTypeQuery(msg.iUid);
   117 		CommsDat::CMDBSession* dbs = CommsDat::CMDBSession::NewLC(KCDVersion1_2);
   117 		ACommsFactoryNodeId* obj = Find(tierTypeQuery);   // match the address family to tierTypeId in factory container
   118 		msg.iUid= TierManagerUtils::MapTierIdtoTierImplIdL(msg.iUid, *dbs);
   118 		if (!obj)
   119 		CleanupStack::PopAndDestroy(dbs);
   119 	        {
   120 		CCommsFactoryBase* factory = static_cast<CCommsFactoryBase*>(FindOrCreateFactoryL(msg.iUid));
   120             // object not found, use the commsdat to find the Tier Manager
   121 		TAlwaysFindFactoryQuery query;
   121             CommsDat::CMDBSession* dbs = CommsDat::CMDBSession::NewLC(KCDVersion1_2);
   122 		CSelectionRequest* sr = CSelectionRequest::NewL(address_cast<TNodeId>(aSender), factory->FindOrCreateObjectL(query)->Id());
   122             // Maps Tier to ImplId For ECOM since ImplId is used in Factory
       
   123             msg.iUid= TierManagerUtils::MapTierIdtoTierImplIdL(msg.iUid, *dbs);
       
   124             CleanupStack::PopAndDestroy(dbs);
       
   125             CCommsFactoryBase* factory = static_cast<CCommsFactoryBase*>(FindOrCreateFactoryL(msg.iUid));
       
   126             TAlwaysFindFactoryQuery query;  // since there is only one Tier Manager per Tier Manager factory, return the first one
       
   127             obj = factory->FindOrCreateObjectL(query);
       
   128 	        }
       
   129 		
       
   130 		CSelectionRequest* sr = CSelectionRequest::NewL(address_cast<TNodeId>(aSender), obj->Id());
   123 		RClientInterface::OpenPostMessageClose(Id(), aSender, TCFInternalEsock::TCSRCreated(sr->Id()).CRef());
   131 		RClientInterface::OpenPostMessageClose(Id(), aSender, TCFInternalEsock::TCSRCreated(sr->Id()).CRef());
   124 		aMessage.ClearMessageId();
   132 		aMessage.ClearMessageId();
   125 		}
   133 		}
   126 	else if (aMessage.IsMessage<TCFFactory::TFindOrCreatePeer>())
   134 	else if (aMessage.IsMessage<TCFFactory::TFindOrCreatePeer>())
   127 		{
   135 		{