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

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

Detailed Description

template<typename Request, typename Response>
class ugrpc::server::InputStream< Request, Response >

Controls a request stream -> single response RPC.

This class is not thread-safe except for GetContext.

The RPC is cancelled on destruction unless the stream has been finished.

If any method throws, further methods must not be called on the same stream, except for GetContext.

Definition at line 75 of file rpc.hpp.

+ Inheritance diagram for ugrpc::server::InputStream< Request, Response >:

Public Member Functions

bool Read (Request &request) override
 Await and read the next incoming message.
 
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.
 
 InputStream (impl::CallParams &&call_params, impl::RawReader< Request, Response > &stream)
 For internal use only.
 
 InputStream (InputStream &&)=delete
 
InputStreamoperator= (InputStream &&)=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

◆ InputStream()

template<typename Request , typename Response >
ugrpc::server::InputStream< Request, Response >::InputStream ( impl::CallParams && call_params,
impl::RawReader< Request, Response > & stream )

For internal use only.

Definition at line 323 of file rpc.hpp.

◆ ~InputStream()

template<typename Request , typename Response >
ugrpc::server::InputStream< Request, Response >::~InputStream ( )
override

Definition at line 327 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 Request , typename Response >
void ugrpc::server::InputStream< Request, 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 347 of file rpc.hpp.

◆ Finish() [2/2]

template<typename Request , typename Response >
void ugrpc::server::InputStream< Request, 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 352 of file rpc.hpp.

◆ FinishWithError()

template<typename Request , typename Response >
void ugrpc::server::InputStream< Request, 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 369 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 Request , typename Response >
bool ugrpc::server::InputStream< Request, Response >::IsFinished ( ) const
overridevirtual

Useful for generic error reporting via FinishWithError.

Implements ugrpc::server::CallAnyBase.

Definition at line 380 of file rpc.hpp.

◆ Read()

template<typename Request , typename Response >
bool ugrpc::server::InputStream< Request, Response >::Read ( Request & request)
overridevirtual

Await and read the next incoming message.

Parameters
requestwhere to put the request on success
Returns
true on success, false on end-of-input

Implements ugrpc::server::Reader< Request >.

Definition at line 335 of file rpc.hpp.


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