81 std::optional<std::chrono::system_clock::time_point>
deadline;
96 template<
typename Duration>
99 deadline = std::chrono::system_clock::now() +
100 std::chrono::duration_cast<std::chrono::system_clock::duration>(timeout);
166 auto
target() const -> const std::
string&;
184 auto
call_raw(const std::
string& method,
185 const std::vector<uint8_t>& request,
196 const std::vector<uint8_t>& request,
236 const std::vector<uint8_t>& request,
277 ->
Result<std::unique_ptr<client_stream_writer>>;
322 ->
Result<std::unique_ptr<bidi_stream>>;
Bidirectional streaming RPC handle.
virtual auto read() -> Result< grpc_message >=0
Read next message from stream.
virtual auto write(const std::vector< uint8_t > &message) -> VoidResult=0
Write message to stream.
virtual ~bidi_stream()=default
virtual auto writes_done() -> VoidResult=0
Signal that writing is done.
virtual auto finish() -> grpc_status=0
Finish the call and get final status.
Writer for client streaming RPC.
virtual auto write(const std::vector< uint8_t > &message) -> VoidResult=0
Write message to stream.
virtual ~client_stream_writer()=default
virtual auto writes_done() -> VoidResult=0
Signal that writing is done.
virtual auto finish() -> Result< grpc_message >=0
Finish the call and get response.
Reader for server streaming RPC.
virtual auto finish() -> grpc_status=0
Get final status after stream ends.
virtual auto has_more() const -> bool=0
Check if stream has more messages.
virtual auto read() -> Result< grpc_message >=0
Read next message from stream.
gRPC client for making RPC calls
auto is_connected() const -> bool
Check if connected.
grpc_client & operator=(const grpc_client &)=delete
auto connect() -> VoidResult
Connect to the server.
grpc_client(const grpc_client &)=delete
auto client_stream_raw(const std::string &method, const call_options &options={}) -> Result< std::unique_ptr< client_stream_writer > >
Start a client streaming RPC call.
auto target() const -> const std::string &
Get the target address.
auto call_raw_async(const std::string &method, const std::vector< uint8_t > &request, std::function< void(Result< grpc_message >)> callback, const call_options &options={}) -> void
Make an async unary RPC call.
~grpc_client()
Destructor.
auto wait_for_connected(std::chrono::milliseconds timeout) -> bool
Wait for connection to be ready.
std::unique_ptr< impl > impl_
auto disconnect() -> void
Disconnect from the server.
auto call_raw(const std::string &method, const std::vector< uint8_t > &request, const call_options &options={}) -> Result< grpc_message >
Make a unary RPC call.
grpc_client(grpc_client &&) noexcept
auto server_stream_raw(const std::string &method, const std::vector< uint8_t > &request, const call_options &options={}) -> Result< std::unique_ptr< server_stream_reader > >
Start a server streaming RPC call.
auto bidi_stream_raw(const std::string &method, const call_options &options={}) -> Result< std::unique_ptr< bidi_stream > >
Start a bidirectional streaming RPC call.
grpc_client(const std::string &target, const grpc_channel_config &config={})
Construct gRPC client.
gRPC message framing and serialization.
gRPC protocol implementation
constexpr size_t default_max_message_size
Maximum gRPC message size (default 4MB)
std::vector< std::pair< std::string, std::string > > grpc_metadata
Metadata key-value pair for gRPC requests/responses.
Network-specific error and result type definitions.
gRPC status codes and error representation.
Options for individual RPC calls.
std::string compression_algorithm
Compression algorithm to use.
grpc_metadata metadata
Metadata to send with the request.
bool wait_for_ready
Whether to wait for the server to be ready.
std::optional< std::chrono::system_clock::time_point > deadline
Deadline for this call.
void set_timeout(Duration timeout)
Set deadline from timeout duration.
Configuration for gRPC channel.
std::string root_certificates
Root certificates for TLS (PEM format)
uint32_t max_retry_attempts
Maximum number of retry attempts.
std::optional< std::string > client_key
Client private key for mutual TLS (PEM format)
bool use_tls
Whether to use TLS.
std::chrono::milliseconds keepalive_time
Keepalive time in milliseconds (0 = disabled)
std::optional< std::string > client_certificate
Client certificate for mutual TLS (PEM format)
std::chrono::milliseconds default_timeout
Default timeout for RPC calls.
std::chrono::milliseconds keepalive_timeout
Keepalive timeout in milliseconds.
size_t max_message_size
Maximum message size in bytes.
gRPC status with code, message, and optional details