userver: ugrpc::server::UnaryCall< Response > Class Template Reference
Loading...
Searching...
No Matches
ugrpc::server::UnaryCall< Response > Class Template Referencefinal

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

Detailed Description

template<typename Response>
class ugrpc::server::UnaryCall< Response >

Controls a single request -> single response RPC.

The RPC is cancelled on destruction unless Finish has been called.

Definition at line 26 of file rpc.hpp.

+ Inheritance diagram for ugrpc::server::UnaryCall< Response >:

Public Member Functions

void Finish (Response &response)
 Complete the RPC successfully.
 
void Finish (Response &&response)
 Complete the RPC successfully.
 
void FinishWithError (const grpc::Status &status) override
 Complete the RPC with an error.
 
 UnaryCall (impl::CallParams &&call_params, impl::RawResponseWriter< Response > &stream)
 For internal use only.
 
 UnaryCall (UnaryCall &&)=delete
 
UnaryCalloperator= (UnaryCall &&)=delete
 
bool IsFinished () const override
 Useful for generic error reporting via FinishWithError.
 
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.
 
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)
 

Constructor & Destructor Documentation

◆ UnaryCall()

template<typename Response >
ugrpc::server::UnaryCall< Response >::UnaryCall ( impl::CallParams && call_params,
impl::RawResponseWriter< Response > & stream )

For internal use only.

Definition at line 276 of file rpc.hpp.

◆ ~UnaryCall()

template<typename Response >
ugrpc::server::UnaryCall< Response >::~UnaryCall ( )

Definition at line 280 of file rpc.hpp.

Member Function Documentation

◆ AccessTskvLogger()

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

Definition at line 105 of file call.hpp.

◆ Finish() [1/2]

template<typename Response >
void ugrpc::server::UnaryCall< Response >::Finish ( Response && response)

Complete the RPC successfully.

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

Parameters
responsethe single Response to send to the client
Exceptions
ugrpc::server::RpcErroron an RPC error

Definition at line 288 of file rpc.hpp.

◆ Finish() [2/2]

template<typename Response >
void ugrpc::server::UnaryCall< Response >::Finish ( Response & response)

Complete the RPC successfully.

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

Parameters
responsethe single Response to send to the client
Exceptions
ugrpc::server::RpcErroron an RPC error

Definition at line 293 of file rpc.hpp.

◆ FinishWithError()

template<typename Response >
void ugrpc::server::UnaryCall< Response >::FinishWithError ( const grpc::Status & status)
overridevirtual

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

Implements ugrpc::server::CallAnyBase.

Definition at line 308 of file rpc.hpp.

◆ GetCallKind()

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

Get RPCs kind of method.

Definition at line 58 of file call.hpp.

◆ GetCallName()

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

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 ( )
inlineinherited
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 ( )
inlineinherited

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 ( )
inlineprotectedinherited

Definition at line 103 of file call.hpp.

◆ GetStorageContext()

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

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()

template<typename Response >
bool ugrpc::server::UnaryCall< Response >::IsFinished ( ) const
overridevirtual

Useful for generic error reporting via FinishWithError.

Implements ugrpc::server::CallAnyBase.

Definition at line 318 of file rpc.hpp.


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