Mercurial > hg > orthanc-stone
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 } |