|
void | start (const std::string &method, grpc::GenericStub &stub, const grpc::ByteBuffer &req) |
| Start the rpc. More...
|
|
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>> |
auto | finish (grpc::ByteBuffer &response, CompletionToken &&token=detail::DefaultCompletionTokenT< Executor >{}) |
| Finish the rpc. More...
|
|
auto | read_initial_metadata (CompletionToken &&token=detail::DefaultCompletionTokenT< Executor >{}) |
| Read initial metadata. More...
|
|
const executor_type & | get_executor () const noexcept |
| Get the executor. More...
|
|
const executor_type & | get_scheduler () const noexcept |
| Get the scheduler. More...
|
|
grpc::ClientContext & | context () |
| Get the underlying grpc::ClientContext
|
|
const grpc::ClientContext & | context () const |
| Get the underlying grpc::ClientContext (const overload)
|
|
void | cancel () noexcept |
| Cancel this RPC. More...
|
|
|
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>> |
static auto | request (agrpc::GrpcContext &grpc_context, const std::string &method, grpc::GenericStub &stub, grpc::ClientContext &context, const grpc::ByteBuffer &request, grpc::ByteBuffer &response, CompletionToken &&token=detail::DefaultCompletionTokenT< Executor >{}) |
| Start a generic unary request. More...
|
|
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>> |
static auto | request (const Executor &executor, const std::string &method, grpc::GenericStub &stub, grpc::ClientContext &context, const grpc::ByteBuffer &request, grpc::ByteBuffer &response, CompletionToken &&token=detail::DefaultCompletionTokenT< Executor >{}) |
| Start a generic unary request (executor overload)
|
|
template<class Executor>
class agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >
I/O object for client-side, generic, unary rpcs.
Example:
asio::awaitable<void> client_rpc_generic_unary(
agrpc::GrpcContext& grpc_context, grpc::GenericStub& stub)
{
grpc::ClientContext client_context;
client_context.set_deadline(std::chrono::system_clock::now() + std::chrono::seconds(5));
grpc::ByteBuffer request_buffer;
bool own_buffer;
grpc::GenericSerialize<grpc::ProtoBufferWriter, example::v1::Request>(
request, &request_buffer, &own_buffer);
(void)own_buffer;
grpc::ByteBuffer response_buffer;
if (const grpc::Status status =
co_await RPC::request(grpc_context, "/example.v1.Example/Unary", stub, client_context, request_buffer,
response_buffer, asio::use_awaitable);
!status.ok())
{
std::cerr << "Rpc failed: " << status.error_message();
co_return;
}
example::v1::Response response;
if (const grpc::Status status =
grpc::GenericDeserialize<grpc::ProtoBufferReader, example::v1::Response>(&response_buffer, &response);
!status.ok())
{
std::cerr << "Rpc failed: unexpected response type";
co_return;
}
std::cout << "Response: " << response.integer();
}
static auto request(agrpc::GrpcContext &grpc_context, const std::string &method, grpc::GenericStub &stub, grpc::ClientContext &context, const grpc::ByteBuffer &request, grpc::ByteBuffer &response, CompletionToken &&token=detail::DefaultCompletionTokenT< Executor >{})
Start a generic unary request.
Definition: client_rpc.hpp:321
Execution context based on grpc::CompletionQueue
Definition: grpc_context.hpp:50
agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY > GenericUnaryClientRPC
I/O object for client-side, generic, unary rpcs (type alias)
Definition: client_rpc.hpp:395
Based on .proto
file:
syntax = "proto3";
package example.v1;
service Example {
rpc ServerStreaming(Request) returns (stream Response) {}
rpc ClientStreaming(stream Request) returns (Response) {}
rpc BidirectionalStreaming(stream Request) returns (stream Response) {}
rpc Unary(Request) returns (Response) {}
}
message Request {
int32 integer = 1;
}
message Response {
int32 integer = 1;
}
- Template Parameters
-
Per-Operation Cancellation
Terminal and partial. Cancellation is performed by invoking grpc::ClientContext::TryCancel. Operations are also cancelled when the deadline of the rpc has been reached (see grpc::ClientContext::set_deadline).
- Since
- 2.6.0