Class: GrpcKit::Rpcs::Client::RequestResponse

Inherits:
Base
  • Object
show all
Defined in:
lib/grpc_kit/rpcs/request_response.rb

Instance Attribute Summary

Attributes inherited from Base

#config

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from GrpcKit::Rpcs::Client::Base

Instance Method Details

#invoke(session, request, authority:, metadata: {}, timeout: nil, **opts) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/grpc_kit/rpcs/request_response.rb', line 9

def invoke(session, request, authority:, metadata: {}, timeout: nil, **opts)
  cs = GrpcKit::Streams::Client.new(path: @config.path, protobuf: @config.protobuf, session: session, authority: authority)

  call = GrpcKit::Rpcs::Call.new(, @config.method_name, @config.service_name, cs)
  @config.interceptor.intercept(request, call, ) do |r, c, m|
    if timeout
      # XXX: when timeout.to_timeout is 0
      Timeout.timeout(timeout.to_timeout, GrpcKit::Errors::DeadlienExceeded) do
        c.send_msg(r, timeout: timeout.to_s, metadata: m, last: true)
        c.recv(last: true)
      end
    else
      c.send_msg(r, metadata: m, last: true)
      c.recv(last: true)
    end
  end
end