00001
00002 #include <time.h>
00003 #include "Utility.h"
00004 #include "Message.h"
00005
00006 namespace rwil {
00007 Message::Message(std::string deviceName, std::string command) : m_when(time(0))
00008 {
00009 m_parameters["device"] = deviceName;
00010 m_parameters["command"] = command;
00011 }
00012
00013 Message::Message(std::string deviceName, std::string command, time_t when) : m_when(when)
00014 {
00015 m_parameters["device"] = deviceName;
00016 m_parameters["command"] = command;
00017 }
00018
00019 Message::Message(std::map<std::string,std::string> params) : m_parameters(params), m_when(time(0))
00020 {
00021 }
00022
00023 Message::Message(std::map<std::string,std::string> params, time_t when) : m_parameters(params), m_when(when)
00024 {
00025 }
00026
00027 Message::Message(const Message &msg) : m_parameters(msg.m_parameters), m_when(msg.m_when) {}
00028
00029
00030 const std::string& Message::GetDevice() const { return m_parameters["device"]; }
00031 const std::string& Message::GetCommand() const { return m_parameters["command"]; }
00032
00033 bool Message::operator<(const Message& rhs)
00034 {
00035 return this->m_when < rhs.m_when;
00036 }
00037
00038 void Message::SetParam(std::string n, std::string param) { m_parameters[n] = param; }
00039 std::string Message::GetParam(std::string n) const { return m_parameters[n]; }
00040
00041 time_t Message::GetWhen() const { return m_when; }
00042 const std::map<std::string,std::string>& Message::GetMap() const { return m_parameters; }
00043
00044
00045 EncapsulatingMessage::EncapsulatingMessage(std::string encapsulateCommand, const Message &oldMessage) : Message(oldMessage.GetMap())
00046 {
00047 this->SetParam("message", encapsulateCommand);
00048 }
00049 EncapsulatingMessage::EncapsulatingMessage(std::string encapsulateCommand, const Message & oldMessage, time_t when) : Message(oldMessage.GetMap(), when)
00050 {
00051 this->SetParam("message", encapsulateCommand);
00052 }
00053
00054 FailedAfterRetryingMessage::FailedAfterRetryingMessage(const Message & oldMessage) : EncapsulatingMessage("Failed after retrying message", oldMessage) {}
00055
00056 SetRetriesMessage::SetRetriesMessage(std::string deviceName, unsigned retries) : Message(deviceName, "SetRetries")
00057 {
00058 this->SetParam("retries", IntToString(retries));
00059 }
00060 }