class GrpcKit::Client

Public Class Methods

new(sock, authority: nil, interceptors: [], timeout: nil, max_receive_message_size: nil, max_send_message_size: nil) click to toggle source

@param sock [TCPSocket] @param authority [nil, String] @param interceptors [Array<GrpcKit::Grpc::ClientInterceptor>] list of interceptors @param timeout [nil, Integer, String] @param max_receive_message_size [Integer, nil] Specify the default maximum size of inbound message in bytes. Default to 4MB. @param max_send_message_size [Integer, nil] Specify the default maximum size of outbound message in bytes. Default to 4MB.

# File lib/grpc_kit/client.rb, line 17
def initialize(sock, authority: nil, interceptors: [], timeout: nil, max_receive_message_size: nil, max_send_message_size: nil)
  @sock = sock
  @authority =
    if authority
      authority
    else
      addr = sock.addr
      "#{addr[3]}:#{addr[1]}"
    end

  @timeout = timeout && GrpcKit::GrpcTime.new(timeout)

  # Defined at GrpcKit::Grpc::Dsl#.rpc_stub_class
  build_rpcs(
    interceptors,
    max_receive_message_size: max_receive_message_size,
    max_send_message_size: max_send_message_size,
  )
end

Public Instance Methods

bidi_streamer(rpc, _requests, **opts) click to toggle source

@param rpc [GrpcKit::Rpcs::Client::ServerStreamer] @param _requests [Object] it's for compatibility, no use @param opts [Hash]

# File lib/grpc_kit/client.rb, line 63
def bidi_streamer(rpc, _requests, **opts)
  GrpcKit.logger.debug('Calling bidi_streamer')
  do_request(rpc, nil, **opts)
end
client_streamer(rpc, **opts) click to toggle source

@param rpc [GrpcKit::Rpcs::Client::ClientStreamer] @param opts [Hash]

# File lib/grpc_kit/client.rb, line 47
def client_streamer(rpc, **opts)
  GrpcKit.logger.debug('Calling client_streamer')
  do_request(rpc, nil, **opts)
end
request_response(rpc, request, **opts) click to toggle source

@param rpc [GrpcKit::Rpcs::Client::RequestResponse] @param request [Object] @param opts [Hash]

# File lib/grpc_kit/client.rb, line 40
def request_response(rpc, request, **opts)
  GrpcKit.logger.debug('Calling request_respose')
  do_request(rpc, request, **opts)
end
server_streamer(rpc, request, **opts) click to toggle source

@param rpc [GrpcKit::Rpcs::Client::ServerStreamer] @param request [Object] @param opts [Hash]

# File lib/grpc_kit/client.rb, line 55
def server_streamer(rpc, request, **opts)
  GrpcKit.logger.debug('Calling server_streamer')
  do_request(rpc, request, **opts)
end

Private Instance Methods

do_request(rpc, request, **opts) click to toggle source
# File lib/grpc_kit/client.rb, line 70
def do_request(rpc, request, **opts)
  t = GrpcKit::Transport::ClientTransport.new(session)
  timeout = (opts[:timeout] && GrpcKit::GrpcTime.new(opts[:timeout])) || @timeout

  cs = GrpcKit::Stream::ClientStream.new(t, rpc.config, authority: @authority, timeout: timeout)
  rpc.invoke(cs, request, timeout: timeout, **opts)
end
session() click to toggle source
# File lib/grpc_kit/client.rb, line 78
def session
  @session ||=
    begin
      s = GrpcKit::Session::ClientSession.new(GrpcKit::Session::IO.new(@sock))
      s.submit_settings([])
      s
    end
end