public bool unadvertise(string topic, SubscriberCallbacks callbacks) { Publication pub = null; lock (advertised_topics_mutex) { foreach (Publication p in advertised_topics) { if (p.Name == topic && !p.Dropped) { pub = p; break; } } } if (pub == null) { return(false); } pub.removeCallbacks(callbacks); lock (advertised_topics_mutex) { if (pub.NumCallbacks == 0) { unregisterPublisher(pub.Name); pub.drop(); advertised_topics.Remove(pub); } } return(true); }