Mercurial > hg > orthanc-stone
comparison Framework/Messages/IObservable.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 | f0008c55e5f7 |
children | af4b9cba905f |
comparison
equal
deleted
inserted
replaced
1058:a36c47487a70 | 1059:e713f1a99861 |
---|---|
22 #pragma once | 22 #pragma once |
23 | 23 |
24 #include "../StoneEnumerations.h" | 24 #include "../StoneEnumerations.h" |
25 #include "ICallable.h" | 25 #include "ICallable.h" |
26 #include "IObserver.h" | 26 #include "IObserver.h" |
27 #include "MessageBroker.h" | |
28 #include "MessageForwarder.h" | 27 #include "MessageForwarder.h" |
29 | 28 |
30 #include <set> | 29 #include <set> |
31 #include <map> | 30 #include <map> |
32 | 31 |
37 private: | 36 private: |
38 typedef std::map<MessageIdentifier, std::set<ICallable*> > Callables; | 37 typedef std::map<MessageIdentifier, std::set<ICallable*> > Callables; |
39 | 38 |
40 typedef std::set<IMessageForwarder*> Forwarders; | 39 typedef std::set<IMessageForwarder*> Forwarders; |
41 | 40 |
42 MessageBroker& broker_; | |
43 Callables callables_; | 41 Callables callables_; |
44 Forwarders forwarders_; | 42 Forwarders forwarders_; |
45 | 43 |
46 void EmitMessageInternal(const IObserver* receiver, | 44 void EmitMessageInternal(const IObserver* receiver, |
47 const IMessage& message); | 45 const IMessage& message); |
48 | 46 |
49 public: | 47 public: |
50 IObservable(MessageBroker& broker) : | |
51 broker_(broker) | |
52 { | |
53 } | |
54 | |
55 virtual ~IObservable(); | 48 virtual ~IObservable(); |
56 | |
57 MessageBroker& GetBroker() const | |
58 { | |
59 return broker_; | |
60 } | |
61 | 49 |
62 // Takes ownsership | 50 // Takes ownsership |
63 void RegisterObserverCallback(ICallable* callable); | 51 void RegisterObserverCallback(ICallable* callable); |
64 | 52 |
53 // TODO - Remove this? | |
65 void Unregister(IObserver* observer); | 54 void Unregister(IObserver* observer); |
66 | 55 |
67 void BroadcastMessage(const IMessage& message); | 56 void BroadcastMessage(const IMessage& message); |
68 | 57 |
69 void EmitMessage(const IObserver& observer, | 58 void EmitMessage(const IObserver& observer, |