From df2e8e4463c9bc348e672fd894250a9cd6e13cfa Mon Sep 17 00:00:00 2001 From: Claudius 'keldu' Holeksa Date: Fri, 9 Aug 2024 18:54:09 +0200 Subject: wip --- modules/io_codec/examples/peer_echo_client.cpp | 39 +++++++++++++++++++++++--- modules/io_codec/examples/peer_echo_server.cpp | 3 +- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/modules/io_codec/examples/peer_echo_client.cpp b/modules/io_codec/examples/peer_echo_client.cpp index 3ae67ca..40f3aa3 100644 --- a/modules/io_codec/examples/peer_echo_client.cpp +++ b/modules/io_codec/examples/peer_echo_client.cpp @@ -3,12 +3,38 @@ #include "../c++/io_peer.hpp" #include +#include #include -int main(){ +namespace sch { +using namespace saw::schema; + +using EchoArgs = Args< + Struct<>, + Tuple +>; +} + +int main(int argc, char** argv){ using namespace saw; + data dat_args{ + argc, + argv + }; + + codec codec_args; + + data dat_nat; + auto eov = codec_args.decode(dat_args, dat_nat); + if(eov.is_error()){ + return -1; + } + + auto& tup = dat_nat.template get<"positionals">(); + auto& nat_echo = tup.template get<0>(); + auto eo_aio = saw::setup_async_io(); if(eo_aio.is_error()){ auto& err = eo_aio.get_error(); @@ -34,7 +60,6 @@ int main(){ } auto& addr = eo_addr.get_value(); - data nat_echo{"hello"}; codec simple_codec; network.connect(*addr).then([&](saw::own client){ @@ -65,20 +90,26 @@ int main(){ echo_peer_stream_p.second.then([&](auto simp_resp){ data nat_resp; auto eov = simple_codec.decode(simp_resp, nat_resp); + if(nat_resp.size() != nat_echo.size()){ + exit(-1); + } std::cout<<"Answer:\n"; for(uint64_t i = 0u; i < nat_resp.size(); ++i){ + if (nat_resp.at(i) != nat_echo.at(i)){ + exit(-2); + } std::cout<on_disconnected().attach(std::move(echo_peer_stream_p.first)).then([&]() -> error_or{ keep_running = false; - std::cout<<"disconnect"<("Destroy pipeline on purpose :>"); }).detach(); diff --git a/modules/io_codec/examples/peer_echo_server.cpp b/modules/io_codec/examples/peer_echo_server.cpp index d579622..1849517 100644 --- a/modules/io_codec/examples/peer_echo_server.cpp +++ b/modules/io_codec/examples/peer_echo_server.cpp @@ -58,11 +58,10 @@ int main(){ auto echo_stream = saw::heap(std::move(client)); auto echo_peer_stream_p = saw::new_streaming_io_peer, encode::KelSimple, ring_buffer>(std::move(echo_stream)); - std::cout<<"Got client"< error_or { - std::cout<<"Request\n"; data nat_resp; { auto eov = simple_codec.decode(simp_resp, nat_resp); -- cgit v1.2.3