Mercurial > hg > orthanc-stone
comparison Framework/Messages/MessageBroker.h @ 1059:e713f1a99861 broker
replacing MessageBroker by weak_ptr
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 11 Oct 2019 17:08:34 +0200 |
parents | f6be9412e42a |
children |
comparison
equal
deleted
inserted
replaced
1058:a36c47487a70 | 1059:e713f1a99861 |
---|---|
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. | 18 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
19 **/ | 19 **/ |
20 | 20 |
21 #pragma once | 21 #pragma once |
22 | 22 |
23 #include "boost/noncopyable.hpp" | 23 #include <boost/noncopyable.hpp> |
24 | |
25 #include <set> | |
26 | 24 |
27 namespace OrthancStone | 25 namespace OrthancStone |
28 { | 26 { |
29 class IObserver; | 27 class IObserver; |
30 | 28 |
33 * when an observer is deleted. | 31 * when an observer is deleted. |
34 * This way, it can prevent an observable to send a message to a deleted observer. | 32 * This way, it can prevent an observable to send a message to a deleted observer. |
35 */ | 33 */ |
36 class MessageBroker : public boost::noncopyable | 34 class MessageBroker : public boost::noncopyable |
37 { | 35 { |
38 private: | |
39 std::set<const IObserver*> activeObservers_; // the list of observers that are currently alive (that have not been deleted) | |
40 | |
41 public: | 36 public: |
42 MessageBroker() | |
43 { | |
44 } | |
45 | |
46 void Register(const IObserver& observer) | 37 void Register(const IObserver& observer) |
47 { | 38 { |
48 activeObservers_.insert(&observer); | |
49 } | 39 } |
50 | 40 |
51 void Unregister(const IObserver& observer) | 41 void Unregister(const IObserver& observer) |
52 { | 42 { |
53 activeObservers_.erase(&observer); | |
54 } | 43 } |
55 | 44 |
56 bool IsActive(const IObserver& observer) | 45 bool IsActive(const IObserver& observer) |
57 { | 46 { |
58 return activeObservers_.find(&observer) != activeObservers_.end(); | 47 return false; |
59 } | 48 } |
60 }; | 49 }; |
61 } | 50 } |