comparison Framework/Messages/IMessage.h @ 619:9cd19b28f011

test: refactoring oracle
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 07 May 2019 11:13:24 +0200
parents b70e9be013e4
children f0008c55e5f7
comparison
equal deleted inserted replaced
618:0925b27e8750 619:9cd19b28f011
29 { 29 {
30 // base message that are exchanged between IObservable and IObserver 30 // base message that are exchanged between IObservable and IObserver
31 class IMessage : public boost::noncopyable 31 class IMessage : public boost::noncopyable
32 { 32 {
33 private: 33 private:
34 int messageType_; 34 MessageType messageType_;
35 35
36 protected: 36 protected:
37 IMessage(const int& messageType) : 37 IMessage(MessageType messageType) :
38 messageType_(messageType) 38 messageType_(messageType)
39 { 39 {
40 } 40 }
41 41
42 public: 42 public:
43 virtual ~IMessage() 43 virtual ~IMessage()
44 { 44 {
45 } 45 }
46 46
47 virtual int GetType() const 47 virtual MessageType GetType() const
48 { 48 {
49 return messageType_; 49 return messageType_;
50 } 50 }
51 }; 51 };
52 52
53 53
54 // base class to derive from to implement your own messages 54 // base class to derive from to implement your own messages
55 // it handles the message type for you 55 // it handles the message type for you
56 template <int type> 56 template <MessageType type>
57 class BaseMessage : public IMessage 57 class BaseMessage : public IMessage
58 { 58 {
59 public: 59 public:
60 enum 60 enum
61 { 61 {
62 Type = type 62 Type = type
63 }; 63 };
64 64
65 BaseMessage() : 65 BaseMessage() :
66 IMessage(static_cast<int>(Type)) 66 IMessage(static_cast<MessageType>(Type))
67 { 67 {
68 } 68 }
69 }; 69 };
70 70
71 71
72 // simple message implementation when no payload is needed 72 // simple message implementation when no payload is needed
73 // sample usage: 73 // sample usage:
74 // typedef NoPayloadMessage<MessageType_VolumeSlicer_GeometryReady> GeometryReadyMessage; 74 // typedef NoPayloadMessage<MessageType_VolumeSlicer_GeometryReady> GeometryReadyMessage;
75 template <int type> 75 template <MessageType type>
76 class NoPayloadMessage : public BaseMessage<type> 76 class NoPayloadMessage : public BaseMessage<type>
77 { 77 {
78 public: 78 public:
79 NoPayloadMessage() : 79 NoPayloadMessage() :
80 BaseMessage<type>() 80 BaseMessage<type>()
83 }; 83 };
84 84
85 // simple message implementation when no payload is needed but the origin is required 85 // simple message implementation when no payload is needed but the origin is required
86 // sample usage: 86 // sample usage:
87 // typedef OriginMessage<MessageType_SliceLoader_GeometryError, OrthancSlicesLoader> SliceGeometryErrorMessage; 87 // typedef OriginMessage<MessageType_SliceLoader_GeometryError, OrthancSlicesLoader> SliceGeometryErrorMessage;
88 template <int type, typename TOrigin> 88 template <MessageType type, typename TOrigin>
89 class OriginMessage : public BaseMessage<type> 89 class OriginMessage : public BaseMessage<type>
90 { 90 {
91 private: 91 private:
92 const TOrigin& origin_; 92 const TOrigin& origin_;
93 93