From 738bc442f680bda95667e4fd1ae743c6f6afeab0 Mon Sep 17 00:00:00 2001 From: Claudius 'keldu' Holeksa Date: Sat, 3 Aug 2024 16:20:39 +0200 Subject: Made transport slicing possible --- modules/core/c++/buffer.cpp | 13 +++++++++++++ modules/core/c++/buffer.hpp | 4 ++++ 2 files changed, 17 insertions(+) (limited to 'modules/core/c++') diff --git a/modules/core/c++/buffer.cpp b/modules/core/c++/buffer.cpp index 0e28524..5312e86 100644 --- a/modules/core/c++/buffer.cpp +++ b/modules/core/c++/buffer.cpp @@ -60,6 +60,19 @@ error buffer::pop(uint8_t &buffer, size_t size) { return no_error(); } +error_or buffer::write_from(const buffer& read_buff){ + uint64_t read_len = read_buff.read_composite_length(); + + error err = write_require_length(read_len); + if(err.failed()){ + return err; + } + for(uint64_t i = 0u; i < read_len; ++i){ + write(i) = read_buff.read(i); + } + return read_len; +} + /* std::string buffer::to_hex() const { std::ostringstream oss; diff --git a/modules/core/c++/buffer.hpp b/modules/core/c++/buffer.hpp index e871459..8b62131 100644 --- a/modules/core/c++/buffer.hpp +++ b/modules/core/c++/buffer.hpp @@ -46,6 +46,10 @@ public: error pop(uint8_t &value); error pop(uint8_t &buffer, size_t size); + /** + * Read from other buffer and write into this buffer + */ + error_or write_from(const buffer& buff); }; /** -- cgit v1.2.3