void PropertyUpdatesFlattened::RemoveSubscription(const Brx& aSid, TBool aExpired) { Brn sid(aSid); SubscriptionMap::iterator it = iSubscriptionMap.find(sid); if (it != iSubscriptionMap.end()) { // remove any pending updates for this subscription too UpdatesMap::iterator it2 = iUpdatesMap.find(sid); if (it2 != iUpdatesMap.end()) { delete it2->second; iUpdatesMap.erase(it2); } DviSubscription* subscription = it->second; iSubscriptionMap.erase(it); if (!aExpired) { subscription->Remove(); } } }
void PropertyWriterFactory::Disable() { Stack::Mutex().Wait(); iEnabled = false; Stack::Mutex().Signal(); iSubscriptionMapLock.Wait(); std::vector<DviSubscription*> subscriptions; SubscriptionMap::iterator it = iSubscriptionMap.begin(); if (it != iSubscriptionMap.end()) { DviSubscription* subscription = it->second; if (subscription->TryAddRef()) { subscriptions.push_back(subscription); } it++; } iSubscriptionMapLock.Signal(); for (TUint i=0; i<(TUint)subscriptions.size(); i++) { DviSubscription* subscription = subscriptions[i]; subscription->Remove(); subscription->RemoveRef(); } RemoveRef(); }