diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-03-15 15:00:48 +0100 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-03-15 15:00:48 +0100 |
commit | 7f486d6c8fad66f77daa8c3321aa078e01f4c718 (patch) | |
tree | 48c96c679e9bb3e248823f544c74665acf59d117 /modules/io | |
parent | c0424e7a55250705579ee64c269892677fa86adf (diff) |
io: Echo client example with async streams
Diffstat (limited to 'modules/io')
-rw-r--r-- | modules/io/examples/echo_client.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/modules/io/examples/echo_client.cpp b/modules/io/examples/echo_client.cpp index ad03779..fa9781d 100644 --- a/modules/io/examples/echo_client.cpp +++ b/modules/io/examples/echo_client.cpp @@ -1,5 +1,6 @@ #include "../c++/io.hpp" +#include <array> #include <iostream> #include "echo.hpp" @@ -27,6 +28,32 @@ int main(){ keep_running = false; }).detach(); + saw::own<saw::network_address> net_addr = nullptr; + saw::own<saw::async_io_stream> async_rmt = nullptr; + + std::array<uint8_t, 32> read_data; + uint64_t read_bytes = 0; + auto& network = aio.io->get_network(); + network.resolve_address("127.0.0.1", 4322).then([&](auto addr){ + net_addr = std::move(addr); + network.connect(*net_addr).then([&](auto rmt_srv){ + async_rmt = saw::heap<saw::async_io_stream>(std::move(rmt_srv)); + async_rmt->write("foo", 3); + + async_rmt->read(&read_data[0], 3, read_data.size()-1); + + async_rmt->read_done().then([&](size_t b){ + for(uint64_t i = 0; i < b; ++i){ + std::cout<<static_cast<char>(read_data[i]); + } + std::cout<<std::endl; + + keep_running = false; + }).detach(); + }).detach(); + }).detach(); + + wait_scope.poll(); while(keep_running){ wait_scope.wait(); } |