1202 void TSendGoneUp::DoL() |
1202 void TSendGoneUp::DoL() |
1203 { |
1203 { |
1204 TClientIter<TDefaultClientMatchPolicy> iter = iContext.Node().GetClientIter<TDefaultClientMatchPolicy>(TClientType(TCFClientType::ECtrl)); |
1204 TClientIter<TDefaultClientMatchPolicy> iter = iContext.Node().GetClientIter<TDefaultClientMatchPolicy>(TClientType(TCFClientType::ECtrl)); |
1205 for (TInt i = 0; iter[i]; i++) |
1205 for (TInt i = 0; iter[i]; i++) |
1206 { |
1206 { |
1207 //Send TGoneUp to every Ctrl client except the originator (who would be recieving TStarted) |
1207 // Send TGoneUp to every Ctrl client except the originator (who would be recieving TStarted) |
1208 if ((iContext.iNodeActivity && iContext.iNodeActivity->FindOriginator(*iter[i]) != KErrNone) |
1208 // (activity might be the GoneUp Activity rather than the Start Activity, but then the originator |
1209 && iter[i] != iContext.iPeer) |
1209 // would be a ServiceProvider, and so the ControlClient will not be found) |
|
1210 if (iContext.iNodeActivity && iContext.iNodeActivity->FindOriginator(*iter[i]) == KErrNotFound) |
1210 { |
1211 { |
1211 iter[i]->PostMessage(TNodeCtxId(iContext.ActivityId(), iContext.NodeId()), TCFControlClient::TGoneUp()); |
1212 iter[i]->PostMessage(TNodeCtxId(iContext.ActivityId(), iContext.NodeId()), TCFControlClient::TGoneUp()); |
1212 } |
1213 } |
1213 } |
1214 } |
1214 } |
1215 } |
1289 const TProviderInfo& providerInfo = static_cast<const TProviderInfoExt&>(iContext.Node().AccessPointConfig().FindExtensionL( |
1290 const TProviderInfo& providerInfo = static_cast<const TProviderInfoExt&>(iContext.Node().AccessPointConfig().FindExtensionL( |
1290 STypeId::CreateSTypeId(TProviderInfoExt::EUid, TProviderInfoExt::ETypeId))).iProviderInfo; |
1291 STypeId::CreateSTypeId(TProviderInfoExt::EUid, TProviderInfoExt::ETypeId))).iProviderInfo; |
1291 |
1292 |
1292 TCFControlClient::TGoneDown goneDown(stopCode, providerInfo.APId()); |
1293 TCFControlClient::TGoneDown goneDown(stopCode, providerInfo.APId()); |
1293 TClientIter<TDefaultClientMatchPolicy> iter = iContext.Node().GetClientIter<TDefaultClientMatchPolicy>(TClientType(TCFClientType::ECtrl)); |
1294 TClientIter<TDefaultClientMatchPolicy> iter = iContext.Node().GetClientIter<TDefaultClientMatchPolicy>(TClientType(TCFClientType::ECtrl)); |
1294 for (TInt i = 0; iter[i]; i++) |
1295 CNodeActivityBase* startActivity = iContext.Node().FindActivityById(ECFActivityStart); |
1295 { |
1296 |
1296 CNodeActivityBase* startActivity = iContext.Node().FindActivityById(ECFActivityStart); |
1297 for (TInt i = 0; iter[i]; i++) |
1297 |
1298 { |
1298 //Send TGoneDown to every Ctrl client except |
1299 //Send TGoneDown to every Ctrl client except |
1299 // * the originator (who would be recieving TStopped) |
1300 // * the originator (who would be recieving TStopped) |
1300 // * originators of the start activity (these will be errored separately) |
1301 // * originators of the start activity (these will be errored separately) |
1301 if (((iContext.iNodeActivity && iContext.iNodeActivity->FindOriginator(*iter[i]) != KErrNone) || |
1302 if (iContext.iNodeActivity && iContext.iNodeActivity->FindOriginator(*iter[i]) >= 0) |
1302 (iContext.iNodeActivity == NULL && iter[i] != iContext.iPeer)) |
1303 { |
1303 && (startActivity == NULL || startActivity->FindOriginator(*iter[i]) != KErrNone)) |
1304 continue; // ControlClient is a Stop originator |
|
1305 } |
|
1306 |
|
1307 // So far the control client is not a Stop originator |
|
1308 if (startActivity == NULL || startActivity->FindOriginator(*iter[i]) == KErrNotFound) |
1304 { |
1309 { |
|
1310 // ControlClient is not a Start originator |
1305 iter[i]->PostMessage(TNodeCtxId(iContext.ActivityId(), iContext.NodeId()), goneDown); |
1311 iter[i]->PostMessage(TNodeCtxId(iContext.ActivityId(), iContext.NodeId()), goneDown); |
1306 } |
1312 } |
1307 } |
1313 } |
1308 |
1314 |
1309 if (iContext.iNodeActivity) |
1315 if (iContext.iNodeActivity) |