diff options
author | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-08-08 17:24:24 +0200 |
---|---|---|
committer | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-08-08 17:24:24 +0200 |
commit | 139b727e1b60bb309d40260b9577dcec7ce3bf53 (patch) | |
tree | a0adc6ac4cbbb5638c1da98472176d7b0a3c97c6 | |
parent | 8fd1eaa255ff71e325eded82740e0942494f7264 (diff) |
wip debug
-rw-r--r-- | modules/codec/tests/transport.cpp | 8 | ||||
-rw-r--r-- | modules/core/c++/buffer.hpp | 2 | ||||
-rw-r--r-- | modules/io_codec/c++/io_peer.hpp | 2 | ||||
-rw-r--r-- | modules/io_codec/c++/io_peer.tmpl.hpp | 59 | ||||
-rw-r--r-- | modules/io_codec/examples/peer_echo_server.cpp | 5 |
5 files changed, 62 insertions, 14 deletions
diff --git a/modules/codec/tests/transport.cpp b/modules/codec/tests/transport.cpp index f5943dd..8c786e9 100644 --- a/modules/codec/tests/transport.cpp +++ b/modules/codec/tests/transport.cpp @@ -49,7 +49,7 @@ SAW_TEST("Transport FixedLen Struct write and slice"){ { auto eov = stream_value<schema::UInt64>::encode(rd_buff.read_composite_length(), buff); - SAW_EXPECT(eov.is_value(), "Buffer write length error."); + SAW_EXPECT(eov.is_value(), "Buffer first write length error."); } { auto eov = buff.write_from(rd_buff); @@ -81,7 +81,7 @@ SAW_TEST("Transport FixedLen Struct write and slice"){ { auto eov = stream_value<schema::UInt64>::encode(rd_buff.read_composite_length(), buff); - SAW_EXPECT(eov.is_value(), "Buffer write length error."); + SAW_EXPECT(eov.is_value(), "Buffer second write length error."); } { auto eov = buff.write_from(rd_buff); @@ -96,7 +96,7 @@ SAW_TEST("Transport FixedLen Struct write and slice"){ { auto eo_slice = trans.view_slice(buff); - SAW_EXPECT(eo_slice.is_value(), "Buffer write length error."); + SAW_EXPECT(eo_slice.is_value(), "Buffer third write length error."); auto& slice = eo_slice.get_value(); auto arr_buff = heap<array_buffer>(1024u); @@ -126,7 +126,7 @@ SAW_TEST("Transport FixedLen Struct write and slice"){ { auto eo_slice = trans.view_slice(buff); - SAW_EXPECT(eo_slice.is_value(), "Buffer write length error."); + SAW_EXPECT(eo_slice.is_value(), std::string{"Buffer fourth write length error: "} + std::string{eo_slice.get_error().get_category()}); auto& slice = eo_slice.get_value(); auto arr_buff = heap<array_buffer>(1024u); diff --git a/modules/core/c++/buffer.hpp b/modules/core/c++/buffer.hpp index 8b62131..74c287e 100644 --- a/modules/core/c++/buffer.hpp +++ b/modules/core/c++/buffer.hpp @@ -114,6 +114,8 @@ private: size_t write_position_; bool write_reached_read_ = false; + SAW_FORBID_COPY(ring_buffer); + SAW_FORBID_MOVE(ring_buffer); public: ring_buffer(); ring_buffer(size_t size); diff --git a/modules/io_codec/c++/io_peer.hpp b/modules/io_codec/c++/io_peer.hpp index 2fd7877..f8b986f 100644 --- a/modules/io_codec/c++/io_peer.hpp +++ b/modules/io_codec/c++/io_peer.hpp @@ -20,7 +20,7 @@ public: */ streaming_io_peer( own<conveyor_feeder<data<Incoming, ContentEncoding>>> feed, - own<async_io_stream> stream, transport<TransportEncoding> in_codec, BufferT in, BufferT out); + own<async_io_stream> stream, transport<TransportEncoding> in_codec); /** * Constructor with mostly default assignements diff --git a/modules/io_codec/c++/io_peer.tmpl.hpp b/modules/io_codec/c++/io_peer.tmpl.hpp index a9f942d..967a8ab 100644 --- a/modules/io_codec/c++/io_peer.tmpl.hpp +++ b/modules/io_codec/c++/io_peer.tmpl.hpp @@ -1,5 +1,10 @@ namespace saw { +} +#include <iostream> +namespace saw { + + template <typename Incoming, typename Outgoing, typename TransportEncoding, typename ContentEncoding, typename BufferT> streaming_io_peer<Incoming, Outgoing, TransportEncoding, ContentEncoding, @@ -7,23 +12,46 @@ streaming_io_peer<Incoming, Outgoing, TransportEncoding, ContentEncoding, streaming_io_peer( own<conveyor_feeder<data<Incoming, ContentEncoding>>> feed, own<async_io_stream> str) - : streaming_io_peer{std::move(feed), std::move(str), {}, {}, {}} {} + : streaming_io_peer{std::move(feed), std::move(str), {}} {} template <typename Incoming, typename Outgoing, typename TransportEncoding, typename ContentEncoding, typename BufferT> streaming_io_peer<Incoming, Outgoing, TransportEncoding, ContentEncoding, BufferT>:: streaming_io_peer( own<conveyor_feeder<data<Incoming, ContentEncoding>>> feed, - own<async_io_stream> stream, transport<TransportEncoding> in_codec, BufferT in, BufferT out) + own<async_io_stream> stream, transport<TransportEncoding> in_codec) : incoming_feeder_{std::move(feed)}, io_stream_{std::move(stream)}, in_codec_{std::move(in_codec)}, - in_buffer_{std::move(in)}, out_buffer_{std::move(out)}, + in_buffer_{}, + out_buffer_{}, sink_read_{ io_stream_->read_done() .then([this](size_t bytes) -> error_or<void> { + + std::cout<<"Read done start: "<<bytes<<std::endl; in_buffer_.write_advance(bytes); + std::cout<<"buff state: "; + std::cout<<in_buffer_.read_composite_length(); + std::cout<<" "; + std::cout<<in_buffer_.read_segment_length(); + std::cout<<" "; + std::cout<<in_buffer_.write_composite_length(); + std::cout<<" "; + std::cout<<in_buffer_.write_segment_length(); + std::cout<<std::endl; + + std::cout<<"buff state: "; + std::cout<<out_buffer_.read_composite_length(); + std::cout<<" "; + std::cout<<out_buffer_.read_segment_length(); + std::cout<<" "; + std::cout<<out_buffer_.write_composite_length(); + std::cout<<" "; + std::cout<<out_buffer_.write_segment_length(); + std::cout<<std::endl; + if (in_buffer_.write_segment_length() == 0) { return make_error<err::critical>("Message too long"); } @@ -51,8 +79,28 @@ streaming_io_peer<Incoming, Outgoing, TransportEncoding, ContentEncoding, return std::move(eo_len.get_error()); } auto& len_val = eo_len.get_value(); - in_buffer_.write_advance(len_val); + in_buffer_.read_advance(len_val); in_buff->write_advance(len_val); + + std::cout<<"read buff state: "; + std::cout<<in_buffer_.read_composite_length(); + std::cout<<" "; + std::cout<<in_buffer_.read_segment_length(); + std::cout<<" "; + std::cout<<in_buffer_.write_composite_length(); + std::cout<<" "; + std::cout<<in_buffer_.write_segment_length(); + std::cout<<std::endl; + + std::cout<<"write buff state: "; + std::cout<<out_buffer_.read_composite_length(); + std::cout<<" "; + std::cout<<out_buffer_.read_segment_length(); + std::cout<<" "; + std::cout<<out_buffer_.write_composite_length(); + std::cout<<" "; + std::cout<<out_buffer_.write_segment_length(); + std::cout<<std::endl; data<Incoming, ContentEncoding> in_data{std::move(in_buff)}; incoming_feeder_->feed(std::move(in_data)); @@ -85,9 +133,6 @@ streaming_io_peer<Incoming, Outgoing, TransportEncoding, ContentEncoding, io_stream_->read(&in_buffer_.write(), 1, in_buffer_.write_segment_length()); } -} -#include <iostream> -namespace saw { template <typename Incoming, typename Outgoing, typename TransportEncoding, typename ContentEncoding, typename BufferT> diff --git a/modules/io_codec/examples/peer_echo_server.cpp b/modules/io_codec/examples/peer_echo_server.cpp index 279db92..02a7272 100644 --- a/modules/io_codec/examples/peer_echo_server.cpp +++ b/modules/io_codec/examples/peer_echo_server.cpp @@ -84,8 +84,9 @@ int main(){ } return make_void(); }).detach(); - - echo_peer_stream_p.first->on_read_disconnected().attach(std::move(echo_peer_stream_p.first)).then([]() -> error_or<void>{ + + auto peer_str = echo_peer_stream_p.first.get(); + peer_str->on_read_disconnected().attach(std::move(echo_peer_stream_p.first)).then([]() -> error_or<void>{ return make_error<err::critical>("Destroy pipeline on purpose :>"); }).detach(); }).detach(); |