Overview of asio-grpc
masterasio-grpc provides an Executor, Networking TS, and std::execution interface to grpc::CompletionQueue. It allows developers to write asynchronous gRPC clients and servers using modern C++ concurrency patterns, including C++20 coroutines, Boost.Coroutines, Asio's stackless coroutines, callbacks, and sender/receiver models.
Key features include:
- Asio Compatibility: An
ExecutionContextcompatible wrapper aroundgrpc::CompletionQueue. - RPC Support: Supports unary, client-streaming, server-streaming, and bidirectional-streaming RPCs.
- Flexible Completion Tokens: Works with any Asio
CompletionTokenorSender, including allocator customization. - Alarm Support: Asynchronous waiting for
grpc::Alarmswith support forcancellation_slotsandStopTokens. - Sender/Receiver Support: Compatible with
libunifexorstdexec. - No Extra Codegen: Works with the standard vanilla gRPC C++ plugin (
grpc_cpp_plugin). - Flexible Dependencies: Offers a No-Boost version (using standalone Asio) and a No-Asio version (using
libunifexorstdexec).