yaLanTingLibs
coro_rpc::coro_rpc_client类 参考

#include <coro_rpc_doc.hpp>

Public 成员函数

 coro_rpc_client ()
 
 coro_rpc_client (asio::io_context &io_context)
 
bool has_closed ()
 
async_simple::coro::Lazy< coro_rpc::err_code > connect (const std::string &host, const std::string &port, std::chrono::steady_clock::duration timeout_duration=std::chrono::seconds(5))
 
template<auto func, typename... Args>
async_simple::coro::Lazy< rpc_result< util::function_return_type_t< decltype(func)> > > call (Args &&...args)
 
template<auto func, typename... Args>
async_simple::coro::Lazy< rpc_result< util::function_return_type_t< decltype(func)> > > call_for (const auto &duration, Args &&...args)
 
auto & get_executor ()
 

详细描述

使用示例

{c++}
#include <ylt/coro_rpc/coro_rpc_client.hpp>
using namespace ylt::coro_rpc;
using namespace async_simple::coro;
Lazy<void> show_rpc_call(coro_rpc_client &client) {
auto ec = co_await client.connect("127.0.0.1", "8801");
assert(!ec);
auto result = co_await client.call<hello_coro_rpc>();
if (!result) {
std::cout << "err: " << result.error().msg << std::endl;
}
assert(result.value() == "hello coro_rpc"s);
}
int main() {
syncAwait(show_rpc_call(client));
}

构造及析构函数说明

◆ coro_rpc_client() [1/2]

coro_rpc::coro_rpc_client::coro_rpc_client ( )

创建client

◆ coro_rpc_client() [2/2]

coro_rpc::coro_rpc_client::coro_rpc_client ( asio::io_context &  io_context)

通过io_context创建client

参数
io_context异步事件处理器

成员函数说明

◆ call()

template<auto func, typename... Args>
async_simple::coro::Lazy< rpc_result<util::function_return_type_t<decltype(func)> > > coro_rpc::coro_rpc_client::call ( Args &&...  args)

client发起rpc调用,返回rpc_result,内部调用了call_for接口,超时时间为5秒。

模板参数
func服务端注册的rpc函数
Args
参数
args服务端rpc函数需要的参数
返回
rpc调用结果

◆ call_for()

template<auto func, typename... Args>
async_simple::coro::Lazy< rpc_result<util::function_return_type_t<decltype(func)> > > coro_rpc::coro_rpc_client::call_for ( const auto &  duration,
Args &&...  args 
)

client发起rpc调用,返回rpc_result,调用超时时间由用户设置

模板参数
func服务端注册的rpc函数
Args
参数
duration调用rpc的超时时间
args服务端rpc函数需要的参数
返回
rpc调用结果

◆ connect()

async_simple::coro::Lazy<coro_rpc::err_code> coro_rpc::coro_rpc_client::connect ( const std::string &  host,
const std::string &  port,
std::chrono::steady_clock::duration  timeout_duration = std::chrono::seconds(5) 
)

连接服务端,成功返回空err,否则失败并返回实际错误码,错误码可能是超时也可能是连接错误等。

参数
host服务端地址
port服务端监听端口
timeout_durationrpc调用超时时间
返回
连接错误码,为空表示连接失败

◆ get_executor()

auto& coro_rpc::coro_rpc_client::get_executor ( )

获取内部的调度器

返回

◆ has_closed()

bool coro_rpc::coro_rpc_client::has_closed ( )

client是否已经关闭。

返回
是否关闭

该类的文档由以下文件生成: