comparison 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
comparison
equal deleted inserted replaced
622:8a3a25f2d42c 623:42dadae61fa9
82 ++itCallable; 82 ++itCallable;
83 } 83 }
84 } 84 }
85 } 85 }
86 86
87 void IObservable::EmitMessage(const IMessage& message) 87 void IObservable::EmitMessageInternal(const IObserver* receiver,
88 const IMessage& message)
88 { 89 {
89 Callables::const_iterator found = callables_.find(message.GetType()); 90 Callables::const_iterator found = callables_.find(message.GetType());
90 91
91 if (found != callables_.end()) 92 if (found != callables_.end())
92 { 93 {
93 for (std::set<ICallable*>::const_iterator 94 for (std::set<ICallable*>::const_iterator
94 it = found->second.begin(); it != found->second.end(); ++it) 95 it = found->second.begin(); it != found->second.end(); ++it)
95 { 96 {
96 assert(*it != NULL); 97 assert(*it != NULL);
97 if (broker_.IsActive(*(*it)->GetObserver())) 98
99 const IObserver* observer = (*it)->GetObserver();
100 if (broker_.IsActive(*observer))
98 { 101 {
99 (*it)->Apply(message); 102 if (receiver == NULL || // Are we broadcasting?
103 observer == receiver) // Not broadcasting, but this is the receiver
104 {
105 (*it)->Apply(message);
106 }
100 } 107 }
101 } 108 }
102 } 109 }
110 }
111
112
113 void IObservable::BroadcastMessage(const IMessage& message)
114 {
115 EmitMessageInternal(NULL, message);
116 }
117
118
119 void IObservable::EmitMessage(const IObserver& observer,
120 const IMessage& message)
121 {
122 EmitMessageInternal(&observer, message);
103 } 123 }
104 124
105 125
106 void IObservable::RegisterForwarder(IMessageForwarder* forwarder) 126 void IObservable::RegisterForwarder(IMessageForwarder* forwarder)
107 { 127 {