comparison Framework/Messages/IObservable.h @ 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
comparison
equal deleted inserted replaced
1066:b537002f83a9 1067:05b2e71ed145
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 "MessageForwarder.h"
28 27
29 #include <set> 28 #include <set>
30 #include <map> 29 #include <map>
31 30
32 namespace OrthancStone 31 namespace OrthancStone
34 class IObservable : public boost::noncopyable 33 class IObservable : public boost::noncopyable
35 { 34 {
36 private: 35 private:
37 typedef std::map<MessageIdentifier, std::set<ICallable*> > Callables; 36 typedef std::map<MessageIdentifier, std::set<ICallable*> > Callables;
38 37
39 typedef std::set<IMessageForwarder*> Forwarders;
40
41 Callables callables_; 38 Callables callables_;
42 Forwarders forwarders_;
43 39
44 void EmitMessageInternal(const IObserver* receiver, 40 void EmitMessageInternal(const IObserver* receiver,
45 const IMessage& message); 41 const IMessage& message);
46 42
47 public: 43 public:
48 virtual ~IObservable(); 44 virtual ~IObservable();
49 45
50 // Takes ownsership of the callable 46 // Takes ownsership of the callable
51 void RegisterCallable(ICallable* callable); 47 void RegisterCallable(ICallable* callable);
52 48
53 // TODO - Remove this?
54 void Unregister(IObserver* observer);
55
56 void BroadcastMessage(const IMessage& message); 49 void BroadcastMessage(const IMessage& message);
57 50
58 void EmitMessage(const IObserver& observer, 51 void EmitMessage(const IObserver& observer,
59 const IMessage& message); 52 const IMessage& message);
60
61 // Takes ownsership
62 void RegisterForwarder(IMessageForwarder* forwarder);
63 }; 53 };
64 } 54 }