6#include <grpcpp/server_context.h>
8#include <userver/tracing/span.hpp>
9#include <userver/utils/any_storage.hpp>
11#include <userver/ugrpc/server/storage_context.hpp>
12#include <userver/utils/impl/internal_tag_fwd.hpp>
14USERVER_NAMESPACE_BEGIN
16namespace ugrpc::server {
22class CallContextBase {
26 CallContextBase(utils::
impl::InternalTag, impl::CallState& state);
29 CallContextBase(CallContextBase&&) =
delete;
30 CallContextBase& operator=(CallContextBase&&) =
delete;
33 grpc::ServerContext& GetServerContext();
36 const grpc::ServerContext& GetServerContext()
const;
39 std::string_view GetCallName()
const;
42 std::string_view GetServiceName()
const;
45 std::string_view GetMethodName()
const;
72 utils::AnyStorage<StorageContext>& GetStorageContext();
77 const impl::CallState& GetCallState(utils::
impl::InternalTag)
const {
return state_; }
80 impl::CallState& GetCallState(utils::
impl::InternalTag) {
return state_; }
83 ~CallContextBase() =
default;
87 impl::CallState& state_;
91class CallContext
final :
public CallContextBase {
94 using CallContextBase::CallContextBase;
99class GenericCallContext
final :
public CallContextBase {
102 using CallContextBase::CallContextBase;
106 void SetMetricsCallName(std::string_view call_name);