comparison Framework/Messages/MessageBroker.h @ 1059:e713f1a99861 broker

replacing MessageBroker by weak_ptr
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 11 Oct 2019 17:08:34 +0200
parents f6be9412e42a
children
comparison
equal deleted inserted replaced
1058:a36c47487a70 1059:e713f1a99861
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 **/ 19 **/
20 20
21 #pragma once 21 #pragma once
22 22
23 #include "boost/noncopyable.hpp" 23 #include <boost/noncopyable.hpp>
24
25 #include <set>
26 24
27 namespace OrthancStone 25 namespace OrthancStone
28 { 26 {
29 class IObserver; 27 class IObserver;
30 28
33 * when an observer is deleted. 31 * when an observer is deleted.
34 * This way, it can prevent an observable to send a message to a deleted observer. 32 * This way, it can prevent an observable to send a message to a deleted observer.
35 */ 33 */
36 class MessageBroker : public boost::noncopyable 34 class MessageBroker : public boost::noncopyable
37 { 35 {
38 private:
39 std::set<const IObserver*> activeObservers_; // the list of observers that are currently alive (that have not been deleted)
40
41 public: 36 public:
42 MessageBroker()
43 {
44 }
45
46 void Register(const IObserver& observer) 37 void Register(const IObserver& observer)
47 { 38 {
48 activeObservers_.insert(&observer);
49 } 39 }
50 40
51 void Unregister(const IObserver& observer) 41 void Unregister(const IObserver& observer)
52 { 42 {
53 activeObservers_.erase(&observer);
54 } 43 }
55 44
56 bool IsActive(const IObserver& observer) 45 bool IsActive(const IObserver& observer)
57 { 46 {
58 return activeObservers_.find(&observer) != activeObservers_.end(); 47 return false;
59 } 48 }
60 }; 49 };
61 } 50 }