Mercurial > hg > orthanc-stone
diff Framework/Oracle/ThreadedOracle.cpp @ 1075:81b29bc7c3d4 broker
cont
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 17 Oct 2019 14:39:51 +0200 |
parents | 18d53a8b41b7 |
children | d7a18a3cd6f9 |
line wrap: on
line diff
--- a/Framework/Oracle/ThreadedOracle.cpp Thu Oct 17 13:48:52 2019 +0200 +++ b/Framework/Oracle/ThreadedOracle.cpp Thu Oct 17 14:39:51 2019 +0200 @@ -39,11 +39,11 @@ class ThreadedOracle::Item : public Orthanc::IDynamicObject { private: - const IObserver& receiver_; + boost::weak_ptr<IObserver> receiver_; std::auto_ptr<IOracleCommand> command_; public: - Item(const IObserver& receiver, + Item(boost::weak_ptr<IObserver> receiver, IOracleCommand* command) : receiver_(receiver), command_(command) @@ -54,7 +54,7 @@ } } - const IObserver& GetReceiver() const + boost::weak_ptr<IObserver>& GetReceiver() { return receiver_; } @@ -73,12 +73,12 @@ class Item { private: - const IObserver& receiver_; + boost::weak_ptr<IObserver> receiver_; std::auto_ptr<SleepOracleCommand> command_; boost::posix_time::ptime expiration_; public: - Item(const IObserver& receiver, + Item(boost::weak_ptr<IObserver>& receiver, SleepOracleCommand* command) : receiver_(receiver), command_(command) @@ -123,7 +123,7 @@ } } - void Add(const IObserver& receiver, + void Add(boost::weak_ptr<IObserver>& receiver, SleepOracleCommand* command) // Takes ownership { boost::mutex::scoped_lock lock(mutex_); @@ -213,7 +213,7 @@ static void Execute(IMessageEmitter& emitter, - const IObserver& receiver, + boost::weak_ptr<IObserver>& receiver, const HttpCommand& command) { Orthanc::HttpClient client; @@ -242,7 +242,7 @@ static void Execute(IMessageEmitter& emitter, const Orthanc::WebServiceParameters& orthanc, - const IObserver& receiver, + boost::weak_ptr<IObserver>& receiver, const OrthancRestApiCommand& command) { Orthanc::HttpClient client(orthanc, command.GetUri()); @@ -270,7 +270,7 @@ static void Execute(IMessageEmitter& emitter, const Orthanc::WebServiceParameters& orthanc, - const IObserver& receiver, + boost::weak_ptr<IObserver>& receiver, const GetOrthancImageCommand& command) { Orthanc::HttpClient client(orthanc, command.GetUri()); @@ -290,7 +290,7 @@ static void Execute(IMessageEmitter& emitter, const Orthanc::WebServiceParameters& orthanc, - const IObserver& receiver, + boost::weak_ptr<IObserver>& receiver, const GetOrthancWebViewerJpegCommand& command) { Orthanc::HttpClient client(orthanc, command.GetUri()); @@ -563,7 +563,7 @@ } - void ThreadedOracle::Schedule(const IObserver& receiver, + void ThreadedOracle::Schedule(boost::shared_ptr<IObserver>& receiver, IOracleCommand* command) { queue_.Enqueue(new Item(receiver, command));