Mercurial > hg > orthanc-stone
diff Framework/Messages/IObservable.cpp @ 623:42dadae61fa9
renamed IObservable::EmitMessage() as BroadcastMessage()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 07 May 2019 14:16:08 +0200 |
parents | a750f11892ec |
children | f0008c55e5f7 |
line wrap: on
line diff
--- a/Framework/Messages/IObservable.cpp Tue May 07 12:32:21 2019 +0200 +++ b/Framework/Messages/IObservable.cpp Tue May 07 14:16:08 2019 +0200 @@ -84,7 +84,8 @@ } } - void IObservable::EmitMessage(const IMessage& message) + void IObservable::EmitMessageInternal(const IObserver* receiver, + const IMessage& message) { Callables::const_iterator found = callables_.find(message.GetType()); @@ -94,14 +95,33 @@ it = found->second.begin(); it != found->second.end(); ++it) { assert(*it != NULL); - if (broker_.IsActive(*(*it)->GetObserver())) + + const IObserver* observer = (*it)->GetObserver(); + if (broker_.IsActive(*observer)) { - (*it)->Apply(message); + if (receiver == NULL || // Are we broadcasting? + observer == receiver) // Not broadcasting, but this is the receiver + { + (*it)->Apply(message); + } } } } } + + void IObservable::BroadcastMessage(const IMessage& message) + { + EmitMessageInternal(NULL, message); + } + + + void IObservable::EmitMessage(const IObserver& observer, + const IMessage& message) + { + EmitMessageInternal(&observer, message); + } + void IObservable::RegisterForwarder(IMessageForwarder* forwarder) {