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,