8#include <userver/ugrpc/client/impl/async_unary_call_adapter.hpp>
10USERVER_NAMESPACE_BEGIN
12namespace ugrpc::client {
21template <
typename Response>
22class [[nodiscard]] ResponseFuture final {
26 ResponseFuture(ResponseFuture&&)
noexcept =
default;
27 ResponseFuture& operator=(ResponseFuture&&)
noexcept =
default;
32 [[nodiscard]]
bool IsReady()
const {
return impl_->IsReady(); }
37 [[nodiscard]] engine::FutureStatus
WaitUntil(engine::Deadline deadline)
const noexcept {
38 return impl_->WaitUntil(deadline);
50 Response
Get() {
return impl_->Get(); }
53 void Cancel() {
return impl_->Cancel(); }
63 template <
typename Stub,
typename Request>
65 impl::CallParams&& params,
66 impl::PrepareUnaryCallProxy<Stub, Request, Response>&& prepare_unary_call,
67 const Request& request
69 : impl_{std::make_unique<impl::AsyncUnaryCallAdapter<Stub, Request, Response>>(
71 std::move(prepare_unary_call),
76 engine::impl::ContextAccessor* TryGetContextAccessor()
noexcept {
return impl_->TryGetContextAccessor(); }
80 std::unique_ptr<impl::ResponseFutureImplBase<Response>> impl_;