//////////////////////////////////////////////////////////////////////////////////// /// /// \brief Reads message payload from the packet. /// /// Message contents are read from the packet following the JAUS standard. /// /// \param[in] packet Packet containing message payload data to read. /// /// \return -1 on error, otherwise number of bytes written. /// //////////////////////////////////////////////////////////////////////////////////// int ReportConfiguration::ReadMessageBody(const Packet& packet) { int total = 0; int expected = BYTE_SIZE; Byte count1 = 0; total += packet.Read(count1); for(Byte i = 0; i < count1; i++) { expected += BYTE_SIZE*2; Byte node = 0; Byte count2 = 0; Record::List components; total += packet.Read(node); total += packet.Read(count2); for(Byte j = 0; j < count2; j++) { expected += BYTE_SIZE*2; Record record; total += packet.Read(record.mComponent); total += packet.Read(record.mInstance); components.push_back(record); } mNodes[node] = components; } return total == expected ? total : -1; }
//////////////////////////////////////////////////////////////////////////////////// /// /// \brief Reads message payload from the packet. /// /// Message contents are read from the packet following the JAUS standard. /// /// \param[in] packet Packet containing message payload data to read. /// /// \return -1 on error, otherwise number of bytes written. /// //////////////////////////////////////////////////////////////////////////////////// int ReportServices::ReadMessageBody(const Packet& packet) { int total = 0; Byte count1 = 0; total += packet.Read(count1); for(Byte i = 0; i < count1; i++) { Byte node = 0; Byte count2 = 0; Record::List components; total += packet.Read(node); total += packet.Read(count2); for(Byte j = 0; j < count2; j++) { Byte count3 = 0; Record record; total += packet.Read(record.mComponent); total += packet.Read(record.mInstance); total += packet.Read(count3); for(Byte k = 0; k < count3; k++) { Service::ID id; total += id.Read(packet); record.mServices.insert(id); } components.push_back(record); } mServices[node] = components; } return total; }