bool Message::send(Client& client) { uint32_t variable_header_len = variable_header_length(); uint32_t remaining_length = variable_header_len + payload_length(); uint32_t packet_length = fixed_header_length(remaining_length); if (_payload_callback == NULL) packet_length += remaining_length; else packet_length += variable_header_len; uint8_t *packet = new uint8_t[packet_length]; uint32_t pos = 0; write_fixed_header(packet, pos, remaining_length); write_variable_header(packet, pos); write_payload(packet, pos); uint32_t sent = client.write(const_cast<const uint8_t*>(packet), packet_length); delete [] packet; if (sent != packet_length) return false; if (_payload_callback != NULL) return _payload_callback(client); return true; }
bool Message::send(Client& client) { uint32_t remaining_length = variable_header_length() + payload_length(); uint32_t packet_length = fixed_header_length(remaining_length) + remaining_length; uint8_t *packet = new uint8_t[packet_length]; uint32_t pos = 0; write_fixed_header(packet, pos, remaining_length); write_variable_header(packet, pos); write_payload(packet, pos); uint32_t sent = client.write(const_cast<const uint8_t*>(packet), packet_length); delete [] packet; return (sent == packet_length); }