Mercurial > hg > orthanc-stone
comparison Framework/Messages/IMessage.h @ 302:4a79193ffb58 am-callable-and-promise
support for custom messages + no leaks in unit-tests
author | am@osimis.io |
---|---|
date | Tue, 18 Sep 2018 18:04:53 +0200 |
parents | 3897f9f28cfa |
children | 6c22e0506587 |
comparison
equal
deleted
inserted
replaced
301:547e1cf7aa7b | 302:4a79193ffb58 |
---|---|
29 | 29 |
30 | 30 |
31 // base message that are exchanged between IObservable and IObserver | 31 // base message that are exchanged between IObservable and IObserver |
32 struct IMessage : public boost::noncopyable | 32 struct IMessage : public boost::noncopyable |
33 { | 33 { |
34 MessageType messageType_; | 34 int messageType_; |
35 protected: | 35 protected: |
36 IMessage(const MessageType& messageType) | 36 IMessage(const int& messageType) |
37 : messageType_(messageType) | 37 : messageType_(messageType) |
38 {} | 38 {} |
39 public: | 39 public: |
40 virtual ~IMessage() {} | 40 virtual ~IMessage() {} |
41 | 41 |
42 MessageType GetType() const {return messageType_;} | 42 virtual int GetType() const {return messageType_;} |
43 }; | 43 }; |
44 | 44 |
45 | 45 |
46 // base class to derive from to implement your own messages | 46 // base class to derive from to implement your own messages |
47 // it handles the message type for you | 47 // it handles the message type for you |
48 template <MessageType type> | 48 template <int type> |
49 struct BaseMessage : public IMessage | 49 struct BaseMessage : public IMessage |
50 { | 50 { |
51 enum | 51 enum |
52 { | 52 { |
53 Type = type | 53 Type = type |
54 }; | 54 }; |
55 | 55 |
56 BaseMessage() | 56 BaseMessage() |
57 : IMessage(static_cast<MessageType>(Type)) | 57 : IMessage(static_cast<int>(Type)) |
58 {} | 58 {} |
59 }; | 59 }; |
60 | 60 |
61 // simple message implementation when no payload is needed | 61 // simple message implementation when no payload is needed |
62 // sample usage: | 62 // sample usage: |