Beispiel #1
0
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);
}
Beispiel #3
0
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);
}