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 { |