module Rough::RpcRegistry

Public Class Methods

request_class_for(rpc_name) click to toggle source
# File lib/rough/rpc_registry.rb, line 9
def request_class_for(rpc_name)
  rpc_for(rpc_name).request_type
end
response_class_for(rpc_name) click to toggle source
# File lib/rough/rpc_registry.rb, line 13
def response_class_for(rpc_name)
  rpc_for(rpc_name).response_type
end

Private Class Methods

methods() click to toggle source
# File lib/rough/rpc_registry.rb, line 34
def methods
  @methods ||= {}
end
rpc_for(rpc_name) click to toggle source
# File lib/rough/rpc_registry.rb, line 19
def rpc_for(rpc_name)
  return methods[rpc_name] if methods.key?(rpc_name)

  # TODO: in the future, should you be able to pass in a Rpc::Service, or separate rpc_name and method_names?
  service_name, method_name = rpc_name.split('#')

  service_class = service_name.constantize
  fail 'not a service class' unless service_class < Protobuf::Rpc::Service

  method = service_class.rpcs[method_name.to_sym]
  fail 'not a valid rpc' unless method

  methods[rpc_name] = method
end