summaryrefslogtreecommitdiff
path: root/modules/io
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2024-03-15 15:00:48 +0100
committerClaudius "keldu" Holeksa <mail@keldu.de>2024-03-15 15:00:48 +0100
commit7f486d6c8fad66f77daa8c3321aa078e01f4c718 (patch)
tree48c96c679e9bb3e248823f544c74665acf59d117 /modules/io
parentc0424e7a55250705579ee64c269892677fa86adf (diff)
io: Echo client example with async streams
Diffstat (limited to 'modules/io')
-rw-r--r--modules/io/examples/echo_client.cpp27
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();
}