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: