11#include <grpcpp/client_context.h>
12#include <grpcpp/support/config.h>
14#include <userver/utils/move_only_function.hpp>
16USERVER_NAMESPACE_BEGIN
18namespace ugrpc::client {
21class CallOptionsAccessor;
30 int GetAttempts()
const;
39 std::chrono::milliseconds GetTimeout()
const;
43 void AddMetadata(std::string_view meta_key, std::string_view meta_value);
49 using ClientContextFactory = utils::move_only_function<std::unique_ptr<grpc::ClientContext>()
const>;
50 void SetClientContextFactory(ClientContextFactory&& client_context_factory);
54 friend class impl::CallOptionsAccessor;
58 std::chrono::milliseconds timeout_{std::chrono::milliseconds::max()};
60 std::vector<std::pair<grpc::string, grpc::string>> metadata_;
62 ClientContextFactory client_context_factory_;