Skip to content

完善rpc功能 #3

@RFoe

Description

@RFoe

template <typename execution_context> struct __rpc_client

template <typename execution_context> struct __rpc_server

rpc功能还是过于简单

  • 设置请求超时,或许是这样:
co_await client.call<int>("add", 888, 999) | timeout(3s);
  • 设置连接/通信异常触发动作,或许是这样:
net::rpc::rpc_server server {std::move(acceptor), [](std::error_code& ec) {...;} };
co_await server.start() | on_error{[](std::error_code& ec) {...;}};

co_await client.call<int>("add", 888, 999) | on_error([](std::error_code& ec) {...;});
  • 优雅的抑制响应/断开连接
// common definition
enum option_set {
	suppress_response_requested = 0,
	shut_down_requested,
}
// server side
rpc_server.bind("generic_control", [] (net::rpc::control_token token, int option) -> void
{
	if(option == shut_down_requested) token.request_close();
	else if (option == shut_down_requested) token.request_noresponse();
	return;
});
// client side
co_await rpc_client.call_nonblock<void>("generic_control", option_set::suppress_response_requested);
co_await rpc_client.call_nonblock<void>("generic_control", option_set::shut_down_requested);
  • 注册中心/分布式服务发现和负载均衡(还不太了解,先不做)

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions