comparison Framework/Messages/IObservable.h @ 1064:af4b9cba905f broker

simplify how observers are regsitered, and how callables are created
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 15 Oct 2019 13:46:01 +0200
parents e713f1a99861
children 9d42f89b8c3c
comparison
equal deleted inserted replaced
1063:3e8f59cefec6 1064:af4b9cba905f
42 Forwarders forwarders_; 42 Forwarders forwarders_;
43 43
44 void EmitMessageInternal(const IObserver* receiver, 44 void EmitMessageInternal(const IObserver* receiver,
45 const IMessage& message); 45 const IMessage& message);
46 46
47 // Takes ownsership of the callable
48 void RegisterObserverCallback(ICallable* callable);
49
47 public: 50 public:
48 virtual ~IObservable(); 51 virtual ~IObservable();
49
50 // Takes ownsership
51 void RegisterObserverCallback(ICallable* callable);
52 52
53 // TODO - Remove this? 53 // TODO - Remove this?
54 void Unregister(IObserver* observer); 54 void Unregister(IObserver* observer);
55 55
56 void BroadcastMessage(const IMessage& message); 56 void BroadcastMessage(const IMessage& message);
58 void EmitMessage(const IObserver& observer, 58 void EmitMessage(const IObserver& observer,
59 const IMessage& message); 59 const IMessage& message);
60 60
61 // Takes ownsership 61 // Takes ownsership
62 void RegisterForwarder(IMessageForwarder* forwarder); 62 void RegisterForwarder(IMessageForwarder* forwarder);
63
64 template<typename TObserver,
65 typename TMessage>
66 void RegisterObserver(TObserver& observer,
67 void (TObserver::* MemberMethod) (const TMessage&))
68 {
69 RegisterObserverCallback(new Callable<TObserver, TMessage>(observer.GetSharedObserver(), MemberMethod));
70 }
63 }; 71 };
64 } 72 }