summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudius 'keldu' Holeksa <mail@keldu.de>2024-08-08 17:24:24 +0200
committerClaudius 'keldu' Holeksa <mail@keldu.de>2024-08-08 17:24:24 +0200
commit139b727e1b60bb309d40260b9577dcec7ce3bf53 (patch)
treea0adc6ac4cbbb5638c1da98472176d7b0a3c97c6
parent8fd1eaa255ff71e325eded82740e0942494f7264 (diff)
wip debug
-rw-r--r--modules/codec/tests/transport.cpp8
-rw-r--r--modules/core/c++/buffer.hpp2
-rw-r--r--modules/io_codec/c++/io_peer.hpp2
-rw-r--r--modules/io_codec/c++/io_peer.tmpl.hpp59
-rw-r--r--modules/io_codec/examples/peer_echo_server.cpp5
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();