yaLanTingLibs
|
#include <coro_rpc_doc.hpp>
Public 成员函数 | |
coro_rpc_server (size_t thread_num, unsigned short port, size_t conn_timeout_seconds=0) | |
async_simple::coro::Lazy< coro_rpc::err_code > | async_start () noexcept |
coro_rpc::err_code | start () |
void | stop () |
uint16_t | port () |
auto & | get_executor () |
template<auto first, auto... func> | |
void | register_handler () |
template<auto first, auto... func> | |
void | register_handler (util::class_type_t< decltype(first)> *self) |
RPC Server 服务端使用示例
coro_rpc::coro_rpc_server::coro_rpc_server | ( | size_t | thread_num, |
unsigned short | port, | ||
size_t | conn_timeout_seconds = 0 |
||
) |
构造coro_rpc_server,需要传入线程数、端口和连接超时时间。服务端会根据线程数启动 io_context以充分利用多核的能力。 服务端在启动的时候会监听该端口 如果conn_timeout_seconds大于0的时候,服务端会启动心跳检查,默认不开启。 当超过conn_timeout_seconds时间内没有收到来自客户端的消息时,服务端会主动关闭客户端连接。
thread_num | |
port | |
conn_timeout_seconds |
|
noexcept |
启动server(协程),server启动后会监听端口等待连接到来,如果端口被占用会返回错误码; 如果accept失败也会返回错误码;客户端连接到来之后启动会话。
auto& coro_rpc::coro_rpc_server::get_executor | ( | ) |
获取内部的调度器
uint16_t coro_rpc::coro_rpc_server::port | ( | ) |
获取监听的端口
void coro_rpc::coro_rpc_server::register_handler | ( | ) |
注册rpc服务函数(非成员函数),服务端启动之前需要先注册rpc服务函数以对外提供rpc服务。 在模版参数中填入函数地址即可完成注册,如果注册的函数重复的话,程序会终止退出。
函数注册示例
first | 需要注册的非成员函数,至少注册一个,允许同时注册多个 |
func |
void coro_rpc::coro_rpc_server::register_handler | ( | util::class_type_t< decltype(first)> * | self | ) |
注册rpc服务函数(成员函数),服务端启动之前需要先注册rpc服务函数以对外提供rpc服务。 在模版参数中填入成员函数地址即可完成注册,如果注册的函数重复的话,程序会终止退出; 如果成员函数对应的对象指针为空程序会终止退出。
first | 需要注册的成员函数,至少注册一个,允许同时注册多个 |
func |
self | 成员函数对应的对象指针 |
coro_rpc::err_code coro_rpc::coro_rpc_server::start | ( | ) |
阻塞方式启动server, 如果端口被占用将会返回非空的错误码
void coro_rpc::coro_rpc_server::stop | ( | ) |
停止server,阻塞等待直到server停止;