size_t get_size(const Payload& payload) { size_t length = sizeof(PayloadType); const size_t data = size(payload.data, OsiLayer::Network, max_osi_layer()); length += data; length += length_coding_size(data); return length; }
void CohesivePacket::reset_iterators(OsiLayer ins_layer) { unsigned layer_idx = 0; const unsigned ins_layer_idx = layer_index(ins_layer); for (unsigned i = 0; i < ins_layer_idx; ++i) { m_iterators[layer_idx++] = m_buffer.begin(); } const unsigned max_layer_idx = layer_index(max_osi_layer()); for (unsigned i = ins_layer_idx; i <= max_layer_idx; ++i) { m_iterators[layer_idx++] = m_buffer.end(); } assert(m_iterators.size() == layer_idx); }
void serialize(OutputArchive& ar, const Payload& payload) { serialize(ar, payload.type); serialize_length(ar, size(payload.data, OsiLayer::Network, max_osi_layer())); serialize(ar, payload.data); }