1 #include "MsgPayload.h"
3 namespace remote
{ namespace protocols
{
5 MsgPayload::MsgPayload(uint8_t*& buffer
, uint32_t& buflen
)
8 buffer
= this->read(buffer
,buflen
);
11 MsgPayload::MsgPayload()
17 MsgPayload::MsgPayload(const MsgPayload
& o
)
20 setPayload(o
.length
,o
.data
);
23 MsgPayload::MsgPayload(const std::string
& str
)
26 setPayload(str
.length(),(uint8_t*)(str
.c_str()));
29 MsgPayload::MsgPayload(BaseMsg
& baseMsg
)
31 length
= baseMsg
.getLength();
32 data
= new uint8_t[length
];
33 uint32_t len
= length
;
34 baseMsg
.write(data
,len
);
37 MsgPayload::~MsgPayload()
46 const MsgPayload
& MsgPayload::operator = (const MsgPayload
& o
)
48 setPayload(o
.length
,o
.data
);
52 const MsgPayload
& MsgPayload::operator = (const std::string
& s
)
54 setPayload(s
.length(),(uint8_t*)(s
.c_str()));
58 uint32_t MsgPayload::getLength()
60 return sizeof(length
)+length
;
63 uint8_t* MsgPayload::read(uint8_t* buffer
, uint32_t& buflen
)
65 buffer
= readvalue(length
,buffer
,buflen
);
68 log("Payload length %u greater than buffer length %u!\n",length
,buflen
);
69 __THROW__ ("Payload length greater than buffer length!");
80 data
= new uint8_t[length
];
82 memcpy(data
,buffer
,length
);
90 uint8_t* MsgPayload::write(uint8_t* buffer
, uint32_t& buflen
)
92 buffer
= writevalue(length
,buffer
,buflen
);
96 __THROW__ ("Payload length longer than buffer!");
101 memcpy(buffer
,data
,length
);
108 void MsgPayload::print(_IO_FILE
* s
)
110 fprintf(s
,"MESSAGE MsgPayload\n");
111 fprintf(s
,"length: %u\n",length
);
114 void MsgPayload::setPayload(uint32_t p_length
, const uint8_t* p_data
)
121 data
= new uint8_t[length
];
122 memcpy(data
,p_data
,length
);
125 std::string
MsgPayload::getString()
129 return std::string((char*)data
,length
);
133 return std::string("");
137 uint32_t MsgPayload::getDataLength()
142 const uint8_t* MsgPayload::getData()