userver: userver/ugrpc/client/call.hpp Source File
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
call.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/ugrpc/client/call.hpp
4/// @brief @copybrief ugrpc::client::CallAnyBase
5
6#include <memory>
7
8#include <grpcpp/client_context.h>
9
10#include <userver/tracing/span.hpp>
11
12#include <userver/ugrpc/client/impl/async_methods.hpp>
13#include <userver/ugrpc/client/impl/call_kind.hpp>
14#include <userver/ugrpc/client/impl/call_params.hpp>
15
16USERVER_NAMESPACE_BEGIN
17
18namespace ugrpc::client {
19
20/// @brief Base class for any RPC
22protected:
23 /// @cond
24 CallAnyBase(impl::CallParams&& params, impl::CallKind call_kind)
25 : data_(std::make_unique<impl::RpcData>(std::move(params), call_kind)) {}
26 /// @endcond
27
28public:
29 /// @returns the `ClientContext` used for this RPC
30 grpc::ClientContext& GetContext();
31
32 /// @returns client name
33 std::string_view GetClientName() const;
34
35 /// @returns RPC name
36 std::string_view GetCallName() const;
37
38 /// @returns RPC span
39 tracing::Span& GetSpan();
40
41protected:
42 impl::RpcData& GetData();
43 const impl::RpcData& GetData() const;
44
45private:
46 std::unique_ptr<impl::RpcData> data_;
47};
48
49} // namespace ugrpc::client
50
51USERVER_NAMESPACE_END