userver: ugrpc::server::CallAnyBase Class Reference
Loading...
Searching...
No Matches
ugrpc::server::CallAnyBase Class Referenceabstract

#include <userver/ugrpc/server/call.hpp>

Detailed Description

A non-typed base class for any gRPC call.

Definition at line 28 of file call.hpp.

+ Inheritance diagram for ugrpc::server::CallAnyBase:

Public Member Functions

virtual void FinishWithError (const grpc::Status &status)=0
 Complete the RPC with an error.
 
grpc::ServerContext & GetContext ()
 
std::string_view GetCallName () const
 Name of the RPC in the format full.path.ServiceName/MethodName
 
std::string_view GetServiceName () const
 Get name of gRPC service.
 
std::string_view GetMethodName () const
 Get name of called gRPC method.
 
tracing::SpanGetSpan ()
 Get the span of the current RPC. Span's lifetime covers the Handle call of the outermost middleware.
 
CallKind GetCallKind () const
 Get RPCs kind of method.
 
utils::AnyStorage< StorageContext > & GetStorageContext ()
 Returns call context for storing per-call custom data.
 
virtual bool IsFinished () const =0
 Useful for generic error reporting via FinishWithError.
 
void SetMetricsCallName (std::string_view call_name)
 Set a custom call name for metric labels.
 

Protected Member Functions

ugrpc::impl::RpcStatisticsScope & GetStatistics ()
 
logging::LoggerRef AccessTskvLogger ()
 
void LogFinish (grpc::Status status) const
 
void ApplyRequestHook (google::protobuf::Message *request)
 
void ApplyResponseHook (google::protobuf::Message *response)
 

Member Function Documentation

◆ AccessTskvLogger()

logging::LoggerRef ugrpc::server::CallAnyBase::AccessTskvLogger ( )
inlineprotected

Definition at line 105 of file call.hpp.

◆ FinishWithError()

virtual void ugrpc::server::CallAnyBase::FinishWithError ( const grpc::Status & status)
pure virtual

Complete the RPC with an error.

Finish must not be called multiple times for the same RPC.

Parameters
statuserror details
Exceptions
ugrpc::server::RpcErroron an RPC error
See also
IsFinished

Implemented in ugrpc::server::UnaryCall< Response >, ugrpc::server::InputStream< Request, Response >, ugrpc::server::OutputStream< Response >, and ugrpc::server::BidirectionalStream< Request, Response >.

Examples
samples/grpc_middleware_service/src/middlewares/server/middleware.cpp.

◆ GetCallKind()

CallKind ugrpc::server::CallAnyBase::GetCallKind ( ) const
inline

Get RPCs kind of method.

Definition at line 58 of file call.hpp.

◆ GetCallName()

std::string_view ugrpc::server::CallAnyBase::GetCallName ( ) const
inline

Name of the RPC in the format full.path.ServiceName/MethodName

Definition at line 45 of file call.hpp.

◆ GetContext()

grpc::ServerContext & ugrpc::server::CallAnyBase::GetContext ( )
inline
Returns
the ServerContext used for this RPC
Note
Initial server metadata is not currently supported
Trailing metadata, if any, must be set before the Finish call
Examples
samples/grpc_middleware_service/src/middlewares/server/middleware.cpp.

Definition at line 42 of file call.hpp.

◆ GetSpan()

tracing::Span & ugrpc::server::CallAnyBase::GetSpan ( )
inline

Get the span of the current RPC. Span's lifetime covers the Handle call of the outermost middleware.

Definition at line 55 of file call.hpp.

◆ GetStatistics()

ugrpc::impl::RpcStatisticsScope & ugrpc::server::CallAnyBase::GetStatistics ( )
inlineprotected

Definition at line 103 of file call.hpp.

◆ GetStorageContext()

utils::AnyStorage< StorageContext > & ugrpc::server::CallAnyBase::GetStorageContext ( )
inline

Returns call context for storing per-call custom data.

The context can be used to pass data from server middleware to client handler or from one middleware to another one.

Example usage:

In authentication middleware:

if (password_is_correct) {
// Username is authenticated, set it in per-call storage context
ctx.GetCall().GetStorageContext().Emplace(kAuthUsername, username);
}

In client handler:

const auto& username = rpc.GetStorageContext().Get(kAuthUsername);
auto msg = fmt::format("Hello, {}!", username);

Definition at line 82 of file call.hpp.

◆ IsFinished()

virtual bool ugrpc::server::CallAnyBase::IsFinished ( ) const
pure virtual

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