#pragma once #include #include "data.hpp" namespace saw { namespace trans { template struct FixedLength {}; template struct VarLength {}; struct NewLine {}; struct CarriageReturnNewLine {}; } template class transport; template class transport> { private: public: error_or view_slice(buffer& buff) const { typename native_data_type>::type val{}; buffer_view view{buff}; auto eov = stream_value>::decode(val, view); if(eov.is_error()){ return std::move(eov.get_error()); } if(view.read_composite_length() < val){ return make_error(); } buff.read_advance(Len); buffer_view data_view{buff, val, 0u}; return data_view; } error_or wrap(buffer& out_buff, buffer& in_buff){ using trans_type = typename native_data_type>::type; trans_type val{}; val = static_cast(in_buff.read_composite_length()); auto eov = stream_value>::encode(val, out_buff); if(eov.is_error()){ auto& err = eov.get_error(); return std::move(err); } return Len; } error_or chain_slice(chain_array_buffer& buff) const { (void) buff; return make_error(); } }; }