From 3cf0b600ca18893a747514a1879befc006fbec30 Mon Sep 17 00:00:00 2001 From: saipubw Date: Wed, 16 Aug 2023 15:37:16 +0800 Subject: [PATCH] fix example client (#411) --- include/ylt/coro_io/client_pool.hpp | 6 ++++-- .../examples/base_examples/client.cpp | 19 ++++++++++--------- .../examples/base_examples/server.cpp | 16 ++++++++++++---- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/include/ylt/coro_io/client_pool.hpp b/include/ylt/coro_io/client_pool.hpp index d4281a250..0c33e3815 100644 --- a/include/ylt/coro_io/client_pool.hpp +++ b/include/ylt/coro_io/client_pool.hpp @@ -133,7 +133,8 @@ class client_pool : public std::enable_shared_from_this< std::this_thread::yield(); ++cnt; if (cnt % 10000 == 0) { - ELOG_WARN << "spinlock of client{" << client.get() + ELOG_WARN << "spinlock of client{" << client.get() << "},host:{" + << client->get_host() << ":" << client->get_port() << "}cost too much time, spin count: " << cnt; } } @@ -167,7 +168,8 @@ class client_pool : public std::enable_shared_from_this< if (wait_time.count() > 0) co_await coro_io::sleep_for(wait_time); } - ELOG_WARN << "reconnect client{" << client.get() + ELOG_WARN << "reconnect client{" << client.get() << "},host:{" + << client->get_host() << ":" << client->get_port() << "} out of max limit, stop retry. connect failed"; client = nullptr; } diff --git a/src/coro_rpc/examples/base_examples/client.cpp b/src/coro_rpc/examples/base_examples/client.cpp index 33ddbadd4..4435ac3bb 100644 --- a/src/coro_rpc/examples/base_examples/client.cpp +++ b/src/coro_rpc/examples/base_examples/client.cpp @@ -31,44 +31,45 @@ Lazy show_rpc_call() { assert(ec == std::errc{}); auto ret = co_await client.call(); if (!ret) { - std::cout << "err: " << ret.error().msg << std::endl; + std::cout << "hello_world err: " << ret.error().msg << std::endl; } assert(ret.value() == "hello_world"s); auto ret_int = co_await client.call(12, 30); if (!ret_int) { - std::cout << "err: " << ret_int.error().msg << std::endl; + std::cout << "A_add_B err: " << ret_int.error().msg << std::endl; } assert(ret_int.value() == 42); ret = co_await client.call("coro_echo"); if (!ret) { - std::cout << "err: " << ret.error().msg << std::endl; + std::cout << "coro_echo err: " << ret.error().msg << std::endl; } assert(ret.value() == "coro_echo"s); ret = co_await client.call("hello_with_delay"s); if (!ret) { - std::cout << "err: " << ret.error().msg << std::endl; + std::cout << "hello_with_delay err: " << ret.error().msg << std::endl; } assert(ret.value() == "hello_with_delay"s); - ret = co_await client.call("hello_with_delay"s); + ret = co_await client.call("nested_echo"s); if (!ret) { - std::cout << "err: " << ret.error().msg << std::endl; + std::cout << "nested_echo err: " << ret.error().msg << std::endl; } - assert(ret.value() == "hello_with_delay"s); + assert(ret.value() == "nested_echo"s); ret = co_await client.call<&HelloService::hello>(); if (!ret) { - std::cout << "err: " << ret.error().msg << std::endl; + std::cout << "HelloService::hello err: " << ret.error().msg << std::endl; } assert(ret.value() == "HelloService::hello"s); ret = co_await client.call<&HelloService::hello_with_delay>( "HelloService::hello_with_delay"s); if (!ret) { - std::cout << "err: " << ret.error().msg << std::endl; + std::cout << "HelloService::hello_with_delay err: " << ret.error().msg + << std::endl; } assert(ret.value() == "HelloService::hello_with_delay"s); } diff --git a/src/coro_rpc/examples/base_examples/server.cpp b/src/coro_rpc/examples/base_examples/server.cpp index ad0fe29fc..23ad38551 100644 --- a/src/coro_rpc/examples/base_examples/server.cpp +++ b/src/coro_rpc/examples/base_examples/server.cpp @@ -20,12 +20,15 @@ using namespace coro_rpc; using namespace async_simple; using namespace async_simple::coro; int main() { - // start rpc server - coro_rpc_server server(std::thread::hardware_concurrency(), 8801); + // init rpc server + coro_rpc_server server(/*thread=*/std::thread::hardware_concurrency(), + /*port=*/8801); + + coro_rpc_server server2{/*thread=*/1, /*port=*/8802}; // regist normal function for rpc server.register_handler(); + nested_echo, coro_echo>(); // regist member function for rpc HelloService hello_service; @@ -33,6 +36,11 @@ int main() { .register_handler<&HelloService::hello, &HelloService::hello_with_delay>( &hello_service); - // start server + server2.register_handler(); + // async start server + auto res = server2.async_start(); + assert(res.has_value()); + + // sync start server & sync await server stop return server.start() == std::errc{}; } \ No newline at end of file