40 using grpc_metadata = std::vector<std::pair<std::string, std::string>>;
91 const std::
string& value) ->
void = 0;
110 -> std::optional<std::chrono::system_clock::time_point> = 0;
116 virtual auto
peer() const -> std::
string = 0;
137 const std::vector<uint8_t>& request)>;
166 const std::vector<uint8_t>& request,
309 auto start_tls(uint16_t port,
310 const std::
string& cert_path,
311 const std::
string& key_path,
312 const std::
string& ca_path = "") ->
VoidResult;
328 auto is_running() const ->
bool;
334 auto port() const -> uint16_t;
349 auto register_unary_method(const std::
string& full_method_name,
358 auto register_server_streaming_method(const std::
string& full_method_name,
367 auto register_client_streaming_method(const std::
string& full_method_name,
376 auto register_bidi_streaming_method(const std::
string& full_method_name,
gRPC server for handling RPC requests
~grpc_server()
Destructor.
grpc_server(grpc_server &&) noexcept
grpc_server(const grpc_server &)=delete
grpc_server & operator=(const grpc_server &)=delete
Base class for gRPC service implementations.
virtual auto service_name() const -> std::string_view=0
Get the full service name (e.g., "package.ServiceName")
Context for handling a single RPC request.
virtual auto client_metadata() const -> const grpc_metadata &=0
Get client metadata.
virtual auto peer() const -> std::string=0
Get peer address.
virtual auto is_cancelled() const -> bool=0
Check if the request has been cancelled.
virtual auto auth_context() const -> std::string=0
Get authentication context (for TLS)
virtual auto set_trailing_metadata(grpc_metadata metadata) -> void=0
Set trailing metadata.
virtual auto deadline() const -> std::optional< std::chrono::system_clock::time_point >=0
Get request deadline.
virtual auto add_trailing_metadata(const std::string &key, const std::string &value) -> void=0
Add trailing metadata.
Reader/writer interface for bidirectional streaming.
virtual auto has_more() const -> bool=0
virtual auto write(const std::vector< uint8_t > &message) -> VoidResult=0
virtual auto read() -> Result< std::vector< uint8_t > >=0
Reader interface for client streaming.
virtual auto has_more() const -> bool=0
Check if more messages are available.
virtual auto read() -> Result< std::vector< uint8_t > >=0
Read next message from stream.
Writer interface for server streaming.
virtual auto write(const std::vector< uint8_t > &message) -> VoidResult=0
Write a message to the stream.
virtual ~server_writer()=default
gRPC message framing and serialization.
gRPC protocol implementation
std::function< std::pair< grpc_status, std::vector< uint8_t > >( server_context &ctx, const std::vector< uint8_t > &request)> unary_handler
Handler function type for unary RPC.
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.
std::function< grpc_status( server_context &ctx, const std::vector< uint8_t > &request, server_writer &writer)> server_streaming_handler
Handler function type for server streaming RPC.
std::function< grpc_status( server_context &ctx, server_reader_writer &stream)> bidi_streaming_handler
Handler function type for bidirectional streaming RPC.
std::function< std::pair< grpc_status, std::vector< uint8_t > >( server_context &ctx, server_reader &reader)> client_streaming_handler
Handler function type for client streaming RPC.
Network-specific error and result type definitions.
gRPC status codes and error representation.
Configuration for gRPC server.
std::chrono::milliseconds max_connection_age
Maximum connection age.
std::chrono::milliseconds keepalive_time
Keepalive time (time between keepalive pings)
std::chrono::milliseconds keepalive_timeout
Keepalive timeout.
std::chrono::milliseconds max_connection_idle
Maximum connection idle time.
size_t max_concurrent_streams
Maximum number of concurrent streams per connection.
size_t num_threads
Number of worker threads (0 = auto-detect)
size_t max_message_size
Maximum message size in bytes.
gRPC status with code, message, and optional details