29class PacketVisitor :
public boost::static_visitor<std::shared_ptr<const T>>
32 std::shared_ptr<const T> operator()(
const ChunkPacket& packet)
35 auto impl =
dynamic_cast<const byte_buffer_impl*
>(packet[OsiLayer::Application].ptr());
37 m_wrapper = impl->wrapper();
38 }
else if (m_deserialize_chunk) {
39 deserialize(create_byte_view(packet, m_start_layer, OsiLayer::Application));
48 deserialize(create_byte_view(packet, m_start_layer, OsiLayer::Application));
52 std::shared_ptr<const T> get_shared_wrapper()
const {
return m_wrapper; }
60 m_deserialize_chunk = flag;
70 m_start_layer = start;
76 auto tmp = std::make_shared<T>();
77 bool decoded = tmp->decode(range.begin().raw(), range.size());
78 m_wrapper = decoded ? tmp :
nullptr;
81 std::shared_ptr<const T> m_wrapper;
82 bool m_deserialize_chunk =
true;
83 OsiLayer m_start_layer = OsiLayer::Session;