summaryrefslogtreecommitdiff
path: root/modules/codec
diff options
context:
space:
mode:
Diffstat (limited to 'modules/codec')
-rw-r--r--modules/codec/c++/transport.hpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/modules/codec/c++/transport.hpp b/modules/codec/c++/transport.hpp
index 0bb70eb..77baf36 100644
--- a/modules/codec/c++/transport.hpp
+++ b/modules/codec/c++/transport.hpp
@@ -22,9 +22,19 @@ 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};
- return make_error<err::not_implemented>();
+ auto eov = stream_value<schema::Primitive<schema::UnsignedInteger, Len>>::decode(val, view);
+ if(eov.is_error()){
+ return std::move(eov.get_error());
+ }
+
+ if(view.read_composite_length() < val){
+ return make_error<err::buffer_exhausted>();
+ }
+
+ return view;
}
error_or<array_buffer> chain_slice(chain_array_buffer& buff) const {