Mercurial > hg > orthanc-stone
comparison Framework/Messages/MessageBroker.h @ 299:3897f9f28cfa am-callable-and-promise
backup work in progress: updated messaging framework with ICallable
author | am@osimis.io |
---|---|
date | Fri, 14 Sep 2018 16:44:01 +0200 |
parents | 5bd4161bf11b |
children | 99e31898910e |
comparison
equal
deleted
inserted
replaced
298:f58bfb7bbcc9 | 299:3897f9f28cfa |
---|---|
19 **/ | 19 **/ |
20 | 20 |
21 | 21 |
22 #pragma once | 22 #pragma once |
23 | 23 |
24 #include "../StoneEnumerations.h" | |
25 | |
26 #include "boost/noncopyable.hpp" | 24 #include "boost/noncopyable.hpp" |
27 #include <map> | |
28 #include <list> | |
29 #include <set> | 25 #include <set> |
30 | 26 |
31 namespace OrthancStone | 27 namespace OrthancStone |
32 { | 28 { |
33 class IObserver; | 29 class IObserver; |
34 class IObservable; | 30 class IObservable; |
35 class IMessage; | |
36 | 31 |
37 /* | 32 /* |
38 * This is a central message broker. It keeps track of all observers and knows | 33 * This is a central message broker. It keeps track of all observers and knows |
39 * when an observer is deleted. | 34 * when an observer is deleted. |
40 * This way, it can prevent an observable to send a message to a dead observer. | 35 * This way, it can prevent an observable to send a message to a deleted observer. |
41 */ | 36 */ |
42 class MessageBroker : public boost::noncopyable | 37 class MessageBroker : public boost::noncopyable |
43 { | 38 { |
44 | 39 |
45 std::set<IObserver*> activeObservers_; // the list of observers that are currently alive (that have not been deleted) | 40 std::set<IObserver*> activeObservers_; // the list of observers that are currently alive (that have not been deleted) |
54 void Unregister(IObserver& observer) | 49 void Unregister(IObserver& observer) |
55 { | 50 { |
56 activeObservers_.erase(&observer); | 51 activeObservers_.erase(&observer); |
57 } | 52 } |
58 | 53 |
59 void EmitMessage(IObservable& from, std::set<IObserver*> observers, const IMessage& message); | 54 bool IsActive(IObserver* observer) |
55 { | |
56 return activeObservers_.find(observer) != activeObservers_.end(); | |
57 } | |
60 }; | 58 }; |
61 | 59 |
62 } | 60 } |