11#include <grpcpp/client_context.h>
12#include <grpcpp/support/config.h>
14#include <userver/engine/deadline.hpp>
15#include <userver/utils/move_only_function.hpp>
17USERVER_NAMESPACE_BEGIN
19namespace ugrpc::client {
22class CallOptionsAccessor;
31 int GetAttempts()
const;
40 std::chrono::milliseconds GetTimeout()
const;
46 engine::Deadline GetDeadline()
const;
50 void AddMetadata(std::string_view meta_key, std::string_view meta_value);
56 using ClientContextFactory = utils::move_only_function<std::unique_ptr<grpc::ClientContext>()
const>;
57 void SetClientContextFactory(ClientContextFactory&& client_context_factory);
61 friend class impl::CallOptionsAccessor;
65 std::chrono::milliseconds timeout_{std::chrono::milliseconds::max()};
66 engine::Deadline deadline_;
68 std::vector<std::pair<grpc::string, grpc::string>> metadata_;
70 ClientContextFactory client_context_factory_;