Mercurial > hg > orthanc-stone
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 |