comparison Framework/Messages/IObserver.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 e146743f6cdc
comparison
equal deleted inserted replaced
1058:a36c47487a70 1059:e713f1a99861
19 **/ 19 **/
20 20
21 21
22 #pragma once 22 #pragma once
23 23
24 #include "MessageBroker.h" 24 #include <boost/noncopyable.hpp>
25 #include <boost/enable_shared_from_this.hpp>
25 26
26 namespace OrthancStone 27 namespace OrthancStone
27 { 28 {
29 class MessageBroker; // TODO - Remove
30
28 class IObserver : public boost::noncopyable 31 class IObserver : public boost::noncopyable
29 { 32 {
30 private:
31 MessageBroker& broker_;
32 // the following is a UUID that is used to disambiguate different observers
33 // that may have the same address
34 char fingerprint_[37];
35
36 public: 33 public:
37 IObserver(MessageBroker& broker); 34 IObserver()
38
39 virtual ~IObserver();
40
41 const char* GetFingerprint() const
42 { 35 {
43 return fingerprint_;
44 } 36 }
45 37
46 bool DoesFingerprintLookGood() const; 38 // TODO - Remove
39 IObserver(MessageBroker& broker)
40 {
41 }
47 42
48 MessageBroker& GetBroker() const 43 virtual ~IObserver()
49 { 44 {
50 return broker_;
51 } 45 }
52 }; 46 };
47
48 template <typename T>
49 class ObserverBase :
50 public IObserver,
51 public boost::enable_shared_from_this<T>
52 {
53 };
53 } 54 }