Block Packet::wireEncode() const { // If no header or trailer, return bare network packet Block::element_container elements = m_wire.elements(); if (elements.size() == 1 && elements.front().type() == FragmentField::TlvType::value) { elements.front().parse(); return elements.front().elements().front(); } m_wire.encode(); return m_wire; }
Block Packet::wireEncode() const { if (m_wire.hasWire()) { return m_wire; } // If no header or trailer, return bare network packet Block::element_container elements = m_wire.elements(); if (elements.size() == 1 && elements.front().type() == FragmentField::TlvType::value) { elements.front().parse(); elements.front().elements().front().parse(); return elements.front().elements().front(); } EncodingEstimator estimator; size_t estimatedSize = wireEncode(estimator); EncodingBuffer buffer(estimatedSize, 0); wireEncode(buffer); m_wire = buffer.block(); return m_wire; }