19 using std::string_view;
33 messageType = MessageType::MESSAGETYPE_ACKNOWLEDGEMENT;
42 Console::println(
"UDPClientMessage::parse(): invalid message type: '" + (
string() + message[0]) +
"' (" + to_string(message[0]) +
")");
47 auto clientId = Integer::viewDecode(string_view(&message[1], 6));
48 auto messageId = Integer::viewDecode(string_view(&message[7], 6));
49 auto retries = Integer::viewDecode(string_view(&message[13], 1));
55 packet->putBytes((
const uint8_t*)&message[14], bytes - 14);
84 auto clientIdEncoded = Integer::encode(
clientId);
85 auto messageIdEncoded = Integer::encode(
messageId);
86 auto retriesEncoded = Integer::encode(
retries);
87 generatedPacket.
putBytes((
const uint8_t*)clientIdEncoded.data(), clientIdEncoded.size());
88 generatedPacket.
putBytes((
const uint8_t*)messageIdEncoded.data(), messageIdEncoded.size());
89 generatedPacket.
putByte(retriesEncoded[retriesEncoded.size() - 1]);
92 memcpy(message, generatedPacket.
getData().data(), bytes);
const array< uint8_t, 512 > & getData() const
Get data.
uint16_t getPosition() const
Get position.
UDPPacket * putByte(uint8_t value)
Puts a byte into packet.
UDPPacket * putPacket(const UDPPacket *packet)
Puts another packet into this packet.
UDPPacket * putBytes(const uint8_t *bytes, uint16_t byteCount)
Puts raw bytes into packet.
UDPClientMessage(const MessageType messageType, const uint32_t clientId, const uint32_t messageId, const uint8_t retries, const UDPPacket *packet)
Public constructor.
unique_ptr< const UDPPacket > packet
@ MESSAGETYPE_ACKNOWLEDGEMENT
void generate(char message[512], uint16_t &bytes)
Generate datagram.
const int64_t getRetryTime()
static uint64_t getRetryTime(const uint8_t retries)
Get retry time for given retry count.