Network System 0.1.1
High-performance modular networking library for scalable client-server applications
Loading...
Searching...
No Matches
kcenon::network::protocols::grpc::grpc_server Class Reference

gRPC server for handling RPC requests More...

#include <server.h>

Collaboration diagram for kcenon::network::protocols::grpc::grpc_server:
Collaboration graph

Classes

class  impl
 

Public Member Functions

 grpc_server (const grpc_server_config &config={})
 Construct gRPC server.
 
 ~grpc_server ()
 Destructor.
 
 grpc_server (const grpc_server &)=delete
 
grpc_serveroperator= (const grpc_server &)=delete
 
 grpc_server (grpc_server &&) noexcept
 
grpc_serveroperator= (grpc_server &&) noexcept
 
auto start (uint16_t port) -> VoidResult
 Start the server on specified port.
 
auto start_tls (uint16_t port, const std::string &cert_path, const std::string &key_path, const std::string &ca_path="") -> VoidResult
 Start the server with TLS.
 
auto stop () -> void
 Stop the server.
 
auto wait () -> void
 Wait for server to finish (blocks)
 
auto is_running () const -> bool
 Check if server is running.
 
auto port () const -> uint16_t
 Get the port the server is listening on.
 
auto register_service (grpc_service *service) -> VoidResult
 Register a service.
 
auto register_unary_method (const std::string &full_method_name, unary_handler handler) -> VoidResult
 Register a unary RPC method handler.
 
auto register_server_streaming_method (const std::string &full_method_name, server_streaming_handler handler) -> VoidResult
 Register a server streaming RPC method handler.
 
auto register_client_streaming_method (const std::string &full_method_name, client_streaming_handler handler) -> VoidResult
 Register a client streaming RPC method handler.
 
auto register_bidi_streaming_method (const std::string &full_method_name, bidi_streaming_handler handler) -> VoidResult
 Register a bidirectional streaming RPC method handler.
 

Private Attributes

std::unique_ptr< implimpl_
 

Detailed Description

gRPC server for handling RPC requests

This class provides a server for handling gRPC requests over HTTP/2 transport.

Note
This is a prototype implementation. For production use, consider wrapping the official gRPC library.

Example usage:

grpc_server server;
server.register_unary_method("/package.Service/Method",
[](server_context& ctx, const std::vector<uint8_t>& request)
-> std::pair<grpc_status, std::vector<uint8_t>> {
// Handle request
return {grpc_status::ok_status(), response_data};
});
server.start(50051);
server.wait();
gRPC server for handling RPC requests
Definition server.h:273
Context for handling a single RPC request.
Definition server.h:77
gRPC status with code, message, and optional details
Definition status.h:95
static auto ok_status() -> grpc_status
Create OK status.
Definition status.h:154
Examples
grpc_service_example.cpp.

Definition at line 272 of file server.h.

Constructor & Destructor Documentation

◆ grpc_server() [1/3]

kcenon::network::protocols::grpc::grpc_server::grpc_server ( const grpc_server_config & config = {})
explicit

Construct gRPC server.

Parameters
configServer configuration

Definition at line 929 of file server.cpp.

930 : impl_(std::make_unique<impl>(config))
931{
932}

References config.

◆ ~grpc_server()

kcenon::network::protocols::grpc::grpc_server::~grpc_server ( )
default

Destructor.

◆ grpc_server() [2/3]

kcenon::network::protocols::grpc::grpc_server::grpc_server ( const grpc_server & )
delete

◆ grpc_server() [3/3]

kcenon::network::protocols::grpc::grpc_server::grpc_server ( grpc_server && )
defaultnoexcept

Member Function Documentation

◆ is_running()

auto kcenon::network::protocols::grpc::grpc_server::is_running ( ) const -> bool

Check if server is running.

Returns
True if running

Definition at line 962 of file server.cpp.

963{
964 return impl_->is_running();
965}

References impl_, and kcenon::network::protocols::grpc::grpc_server::impl::is_running().

Here is the call graph for this function:

◆ operator=() [1/2]

grpc_server & kcenon::network::protocols::grpc::grpc_server::operator= ( const grpc_server & )
delete

◆ operator=() [2/2]

grpc_server & kcenon::network::protocols::grpc::grpc_server::operator= ( grpc_server && )
defaultnoexcept

◆ port()

auto kcenon::network::protocols::grpc::grpc_server::port ( ) const -> uint16_t

Get the port the server is listening on.

Returns
Port number, or 0 if not running

Definition at line 967 of file server.cpp.

968{
969 return impl_->port();
970}

References impl_, and kcenon::network::protocols::grpc::grpc_server::impl::port().

Here is the call graph for this function:

◆ register_bidi_streaming_method()

auto kcenon::network::protocols::grpc::grpc_server::register_bidi_streaming_method ( const std::string & full_method_name,
bidi_streaming_handler handler ) -> VoidResult

Register a bidirectional streaming RPC method handler.

Parameters
full_method_nameFull method name
handlerHandler function
Returns
Success or error

Definition at line 995 of file server.cpp.

997{
998 return impl_->register_bidi_streaming_method(full_method_name, std::move(handler));
999}
auto register_bidi_streaming_method(const std::string &full_method_name, bidi_streaming_handler handler) -> VoidResult
Definition server.cpp:872

◆ register_client_streaming_method()

auto kcenon::network::protocols::grpc::grpc_server::register_client_streaming_method ( const std::string & full_method_name,
client_streaming_handler handler ) -> VoidResult

Register a client streaming RPC method handler.

Parameters
full_method_nameFull method name
handlerHandler function
Returns
Success or error

Definition at line 989 of file server.cpp.

991{
992 return impl_->register_client_streaming_method(full_method_name, std::move(handler));
993}
auto register_client_streaming_method(const std::string &full_method_name, client_streaming_handler handler) -> VoidResult
Definition server.cpp:835

◆ register_server_streaming_method()

auto kcenon::network::protocols::grpc::grpc_server::register_server_streaming_method ( const std::string & full_method_name,
server_streaming_handler handler ) -> VoidResult

Register a server streaming RPC method handler.

Parameters
full_method_nameFull method name
handlerHandler function
Returns
Success or error

Definition at line 983 of file server.cpp.

985{
986 return impl_->register_server_streaming_method(full_method_name, std::move(handler));
987}
auto register_server_streaming_method(const std::string &full_method_name, server_streaming_handler handler) -> VoidResult
Definition server.cpp:798

◆ register_service()

auto kcenon::network::protocols::grpc::grpc_server::register_service ( grpc_service * service) -> VoidResult

Register a service.

Parameters
serviceService to register
Returns
Success or error

Definition at line 972 of file server.cpp.

973{
974 return impl_->register_service(service);
975}
auto register_service(grpc_service *service) -> VoidResult
Definition server.cpp:743

◆ register_unary_method()

auto kcenon::network::protocols::grpc::grpc_server::register_unary_method ( const std::string & full_method_name,
unary_handler handler ) -> VoidResult

Register a unary RPC method handler.

Parameters
full_method_nameFull method name (e.g., "/package.Service/Method")
handlerHandler function
Returns
Success or error

Definition at line 977 of file server.cpp.

979{
980 return impl_->register_unary_method(full_method_name, std::move(handler));
981}
auto register_unary_method(const std::string &full_method_name, unary_handler handler) -> VoidResult
Definition server.cpp:759

◆ start()

auto kcenon::network::protocols::grpc::grpc_server::start ( uint16_t port) -> VoidResult

Start the server on specified port.

Parameters
portPort number to listen on
Returns
Success or error

Definition at line 939 of file server.cpp.

940{
941 return impl_->start(port);
942}
auto start(uint16_t port) -> VoidResult
Definition server.cpp:628
auto port() const -> uint16_t
Get the port the server is listening on.
Definition server.cpp:967

◆ start_tls()

auto kcenon::network::protocols::grpc::grpc_server::start_tls ( uint16_t port,
const std::string & cert_path,
const std::string & key_path,
const std::string & ca_path = "" ) -> VoidResult

Start the server with TLS.

Parameters
portPort number to listen on
cert_pathPath to server certificate (PEM)
key_pathPath to server private key (PEM)
ca_pathOptional path to CA certificates for client auth
Returns
Success or error

Definition at line 944 of file server.cpp.

948{
949 return impl_->start_tls(port, cert_path, key_path, ca_path);
950}
auto start_tls(uint16_t port, const std::string &cert_path, const std::string &key_path, const std::string &ca_path) -> VoidResult
Definition server.cpp:677

◆ stop()

auto kcenon::network::protocols::grpc::grpc_server::stop ( ) -> void

Stop the server.

Definition at line 952 of file server.cpp.

◆ wait()

auto kcenon::network::protocols::grpc::grpc_server::wait ( ) -> void

Wait for server to finish (blocks)

Definition at line 957 of file server.cpp.

Member Data Documentation

◆ impl_

std::unique_ptr<impl> kcenon::network::protocols::grpc::grpc_server::impl_
private

Definition at line 381 of file server.h.

Referenced by is_running(), and port().


The documentation for this class was generated from the following files: