comparison Framework/Messages/MessageBroker.h @ 299:3897f9f28cfa am-callable-and-promise

backup work in progress: updated messaging framework with ICallable
author am@osimis.io
date Fri, 14 Sep 2018 16:44:01 +0200
parents 5bd4161bf11b
children 99e31898910e
comparison
equal deleted inserted replaced
298:f58bfb7bbcc9 299:3897f9f28cfa
19 **/ 19 **/
20 20
21 21
22 #pragma once 22 #pragma once
23 23
24 #include "../StoneEnumerations.h"
25
26 #include "boost/noncopyable.hpp" 24 #include "boost/noncopyable.hpp"
27 #include <map>
28 #include <list>
29 #include <set> 25 #include <set>
30 26
31 namespace OrthancStone 27 namespace OrthancStone
32 { 28 {
33 class IObserver; 29 class IObserver;
34 class IObservable; 30 class IObservable;
35 class IMessage;
36 31
37 /* 32 /*
38 * This is a central message broker. It keeps track of all observers and knows 33 * This is a central message broker. It keeps track of all observers and knows
39 * when an observer is deleted. 34 * when an observer is deleted.
40 * This way, it can prevent an observable to send a message to a dead observer. 35 * This way, it can prevent an observable to send a message to a deleted observer.
41 */ 36 */
42 class MessageBroker : public boost::noncopyable 37 class MessageBroker : public boost::noncopyable
43 { 38 {
44 39
45 std::set<IObserver*> activeObservers_; // the list of observers that are currently alive (that have not been deleted) 40 std::set<IObserver*> activeObservers_; // the list of observers that are currently alive (that have not been deleted)
54 void Unregister(IObserver& observer) 49 void Unregister(IObserver& observer)
55 { 50 {
56 activeObservers_.erase(&observer); 51 activeObservers_.erase(&observer);
57 } 52 }
58 53
59 void EmitMessage(IObservable& from, std::set<IObserver*> observers, const IMessage& message); 54 bool IsActive(IObserver* observer)
55 {
56 return activeObservers_.find(observer) != activeObservers_.end();
57 }
60 }; 58 };
61 59
62 } 60 }