00001 #include <string> 00002 #include <map> 00003 00004 #ifndef MESSAGE_H 00005 #define MESSAGE_H 00006 namespace rwil { 00007 00009 class Message 00010 { 00011 public: 00013 00017 Message(std::string deviceName, std::string command); 00019 00024 Message(std::string deviceName, std::string command, time_t when); 00026 00029 Message(std::map<std::string,std::string> params); 00031 00035 Message(std::map<std::string,std::string> params, time_t when); 00037 00040 Message(const Message &msg); 00041 00043 00046 const std::string& GetDevice() const; 00048 00051 const std::string& GetCommand() const; 00052 00054 00059 bool operator<(const Message& rhs); 00060 00062 00066 void SetParam(std::string n, std::string param); 00068 00073 std::string GetParam(std::string n) const; 00075 00079 time_t GetWhen() const; 00081 00084 const std::map<std::string,std::string>& GetMap() const; 00085 00086 protected: 00087 private: 00089 mutable std::map<std::string,std::string> m_parameters; 00091 const time_t m_when; 00092 }; 00093 00095 class EncapsulatingMessage : public Message 00096 { 00097 public: 00099 00103 EncapsulatingMessage(std::string encapsulateCommand, const Message &oldMessage); 00105 00110 EncapsulatingMessage(std::string encapsulateCommand, const Message & oldMessage, time_t when); 00111 }; 00112 00114 class FailedAfterRetryingMessage : public EncapsulatingMessage 00115 { 00116 public: 00118 00121 FailedAfterRetryingMessage(const Message & oldMessage); 00122 }; 00123 00125 class SetRetriesMessage : public Message 00126 { 00127 public: 00129 00133 SetRetriesMessage(std::string deviceName, unsigned retries); 00134 }; 00135 } 00136 #endif