diff options
author | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-08-03 16:20:39 +0200 |
---|---|---|
committer | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-08-03 16:20:39 +0200 |
commit | 738bc442f680bda95667e4fd1ae743c6f6afeab0 (patch) | |
tree | c518bb64f401501f11e45e1ec9536e1dee2d5187 /modules/codec/c++ | |
parent | 95145a733d15bef84aa294f31d5cf8cefc66a1e0 (diff) |
Made transport slicing possible
Diffstat (limited to 'modules/codec/c++')
-rw-r--r-- | modules/codec/c++/transport.hpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/modules/codec/c++/transport.hpp b/modules/codec/c++/transport.hpp index 86079a2..6116497 100644 --- a/modules/codec/c++/transport.hpp +++ b/modules/codec/c++/transport.hpp @@ -4,7 +4,7 @@ #include "data.hpp" namespace saw { -namespace transport { +namespace trans { template<uint64_t Len = 8u> struct FixedLength {}; @@ -15,13 +15,14 @@ struct NewLine {}; struct CarriageReturnNewLine {}; } -template<typename Schema, uint64_t Len> -struct codec<Schema, transport::FixedLength<Len>> { +template<typename T> +class transport; + +template<uint64_t Len> +class transport<trans::FixedLength<Len>> { private: public: error_or<buffer_view> view_slice(buffer& buff) const { - (void) buff; - typename native_data_type<schema::Primitive<schema::UnsignedInteger, Len>>::type val{}; buffer_view view{buff}; @@ -33,10 +34,9 @@ public: if(view.read_composite_length() < val){ return make_error<err::buffer_exhausted>(); } + buff.read_advance(Len); - buffer_view data_view{buff, val + Len, 0u}; - data_view.read_advance(Len); - + buffer_view data_view{buff, val, 0u}; return data_view; } |