diff Framework/Messages/IObservable.cpp @ 1067:05b2e71ed145 broker

removed MessageForwarder, unit tests are ok
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 15 Oct 2019 18:11:40 +0200
parents 9d42f89b8c3c
children 81b29bc7c3d4
line wrap: on
line diff
--- a/Framework/Messages/IObservable.cpp	Tue Oct 15 15:39:39 2019 +0200
+++ b/Framework/Messages/IObservable.cpp	Tue Oct 15 18:11:40 2019 +0200
@@ -40,19 +40,6 @@
         delete *it2;
       }
     }
-
-    // unregister the forwarders but don't delete them (they'll be
-    // deleted by the observable they are observing as any other
-    // callable)
-    for (Forwarders::iterator it = forwarders_.begin();
-         it != forwarders_.end(); ++it)
-    {
-      IMessageForwarder* fw = *it;
-
-      // TODO - What to do with forwarders?
-      
-      //broker_.Unregister(dynamic_cast<IObserver&>(*fw));
-    }
   }
   
 
@@ -67,33 +54,6 @@
     callables_[id].insert(callable);
   }
 
-  void IObservable::Unregister(IObserver *observer)
-  {
-    LOG(TRACE) << "IObservable::Unregister for IObserver at addr: "
-      << std::hex << observer << std::dec;
-    // delete all callables from this observer
-    for (Callables::iterator itCallableSet = callables_.begin();
-         itCallableSet != callables_.end(); ++itCallableSet)
-    {
-      for (std::set<ICallable*>::const_iterator
-             itCallable = itCallableSet->second.begin(); itCallable != itCallableSet->second.end(); )
-      {
-        boost::shared_ptr<IObserver> shared((*itCallable)->GetObserver());
-
-        if (shared &&
-            shared.get() == observer)
-        {
-          LOG(TRACE) << "  ** IObservable::Unregister : deleting callable: "
-            << std::hex << (*itCallable) << std::dec;
-          delete *itCallable;
-          itCallableSet->second.erase(itCallable++);
-        }
-        else
-          ++itCallable;
-      }
-    }
-  }
-  
   void IObservable::EmitMessageInternal(const IObserver* receiver,
                                         const IMessage& message)
   {
@@ -108,7 +68,7 @@
       {
         assert(*it != NULL);
 
-        boost::shared_ptr<IObserver> observer((*it)->GetObserver());
+        boost::shared_ptr<IObserver> observer((*it)->GetObserver().lock());
 
         if (observer)
         {
@@ -141,14 +101,4 @@
       << std::hex << &observer << std::dec;
     EmitMessageInternal(&observer, message);
   }
-  
-  void IObservable::RegisterForwarder(IMessageForwarder* forwarder)
-  {
-    if (forwarder == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-    
-    forwarders_.insert(forwarder);
-  }
 }