class GrpcKit::Rpcs::Client::RequestResponse

Public Instance Methods

invoke(stream, request, metadata: {}, timeout: nil) click to toggle source

@param stream [GrpcKit::Stream::ClientStream] @param request [Object] request message @param metadata [Hash<String, String>] @param timeout [GrpcKit::GrpcTime] @return [Object] response message

# File lib/grpc_kit/rpcs/client_request_response.rb, line 14
def invoke(stream, request, metadata: {}, timeout: nil)
  call = GrpcKit::Calls::Client::RequestResponse.new(
    metadata: metadata,
    config: @config,
    timeout: timeout,
    stream: stream,
  )

  Timeout.timeout(timeout&.to_f, GrpcKit::Errors::DeadlineExceeded) do
    if @config.interceptor
      @config.interceptor.intercept(request, call, call.metadata) do
        call.send_msg(request)
        call.recv
      end
    else
      call.send_msg(request)
      call.recv
    end
  end
end