class Yrpc::Controllers::Request

Attributes

active_call[R]

@var [GRPC::ActiveCall] active_call

message[R]
method_key[R]

@var [Symbol] method_key

service[R]

@var [Class] service

type[R]

@var [Grpc::Controllers::Request::Type] type

Public Class Methods

new(method_key:, service:, rpc_desc:, active_call:, message:) click to toggle source

struct GRPC::RpcDesc

# File lib/yrpc/controllers/request.rb, line 38
def initialize(method_key:, service:, rpc_desc:, active_call:, message:)
  @method_key = method_key
  @service = service
  @active_call = active_call
  @message = message
  @rpc_desc = rpc_desc
  @type = Type.new(rpc_desc)
end

Public Instance Methods

messages() { |msg| ... } click to toggle source

返回这个request的所有mesage 要根据stremer类型来判断

# File lib/yrpc/controllers/request.rb, line 80
def messages
  if client_streamer?
    message.call { |msg| yield msg }
  elsif bidi_streamer?
    message
  else
    [message]
  end
end
method_missing(method_id, *arguments, &block) click to toggle source
Calls superclass method
# File lib/yrpc/controllers/request.rb, line 52
def method_missing(method_id, *arguments, &block)
  method_message = *arguments.join
  if (method_id.to_s =~ /^raise_[\w]+/) == 0
    error_type = method_id.to_s.split('raise_')[1].upcase!
    code = "Yrpc::Response::Code::#{error_type}".constantize
    message = method_message
    raise Yrpc::Error::ResponseError.new(code, message)
  else
    super
  end
end
method_name() click to toggle source

grpc 中的 service.method

# File lib/yrpc/controllers/request.rb, line 75
def method_name
  "#{service_key}.#{method_key}"
end
request_class() click to toggle source
# File lib/yrpc/controllers/request.rb, line 70
def request_class
  @rpc_desc.input
end
response_class() click to toggle source
# File lib/yrpc/controllers/request.rb, line 65
def response_class
  @rpc_desc.output
end
service_key() click to toggle source
# File lib/yrpc/controllers/request.rb, line 48
def service_key
  @service.name.underscore.tr('/', '.').gsub('.service', '')
end