class GrpcKit::RpcDesc
Attributes
@return [Class, GrpcKit::Grpc::Stream]
@return [Symbol]
@return [String]
@return [String]
@return [Class, GrpcKit::Grpc::Stream]
@return [Symbol]
Public Class Methods
@param name [Symbol] path name @param marshal [Class, GrpcKit::Grpc::Stream] marshaling object @param unmarshal [Class, GrpcKit::Grpc::Stream] unmarshaling object @param marshal_method
[Symbol] method name of marshaling which marshal is called this method @param unmarshal_method
[Symbol] method name of unmarshaling which unmarshal is called this method @param service_name
[String]
# File lib/grpc_kit/rpc_desc.rb, line 32 def initialize(name:, marshal:, unmarshal:, marshal_method:, unmarshal_method:, service_name:) @name = name @marshal = marshal @unmarshal = unmarshal @marshal_method = marshal_method @unmarshal_method = unmarshal_method @service_name = service_name end
Public Instance Methods
@return [Boolean]
# File lib/grpc_kit/rpc_desc.rb, line 117 def bidi_streamer? @marshal.is_a?(GrpcKit::Grpc::Stream) && @unmarshal.is_a?(GrpcKit::Grpc::Stream) end
@param interceptors [Array<GrpcKit::Grpc::ClientInterceptor>] @param max_receive_message_size [Integer, nil] @param max_send_message_size [Integer, nil] @return [#invoke] Client
version of rpc class
# File lib/grpc_kit/rpc_desc.rb, line 75 def build_client(interceptors: [], max_send_message_size: nil, max_receive_message_size: nil) inter = interceptors.empty? ? nil : client_interceptor.new(interceptors) config = GrpcKit::MethodConfig.build_for_client( path: path, ruby_style_method_name: ruby_style_name, codec: client_codec, service_name: @service_name, method_name: @name, interceptor: inter, max_receive_message_size: max_receive_message_size || GrpcKit::MAX_CLIENT_RECEIVE_MESSAGE_SIZE, max_send_message_size: max_send_message_size || GrpcKit::MAX_CLIENT_SEND_MESSAGE_SIZE, ) client.new(config) end
@param handler [GrpcKit::Grpc::GenericService] @param interceptors [Array<GrpcKit::Grpc::ServerInterceptor>] @param max_receive_message_size [Integer, nil] @param max_send_message_size [Integer, nil] @return [#invoke] Server
version of rpc class
# File lib/grpc_kit/rpc_desc.rb, line 55 def build_server(handler, interceptors: [], max_send_message_size: nil, max_receive_message_size: nil) inter = interceptors.empty? ? nil : server_interceptor.new(interceptors) config = GrpcKit::MethodConfig.build_for_server( path: path, ruby_style_method_name: ruby_style_name, codec: server_codec, service_name: @service_name, method_name: @name, interceptor: inter, max_receive_message_size: max_receive_message_size || GrpcKit::MAX_SERVER_RECEIVE_MESSAGE_SIZE, max_send_message_size: max_send_message_size || GrpcKit::MAX_SERVER_SEND_MESSAGE_SIZE, ) server.new(handler, config) end
@return [Boolean]
# File lib/grpc_kit/rpc_desc.rb, line 107 def client_streamer? @marshal.is_a?(GrpcKit::Grpc::Stream) && !@unmarshal.is_a?(GrpcKit::Grpc::Stream) end
@return [String] Full name of path name
# File lib/grpc_kit/rpc_desc.rb, line 97 def path @path ||= "/#{@service_name}/#{@name}" end
@return [Boolean]
# File lib/grpc_kit/rpc_desc.rb, line 102 def request_response? !@marshal.is_a?(GrpcKit::Grpc::Stream) && !@unmarshal.is_a?(GrpcKit::Grpc::Stream) end
@return [Symbol] Snake case name
# File lib/grpc_kit/rpc_desc.rb, line 92 def ruby_style_name @ruby_style_name ||= to_underscore(@name).to_sym end
@return [Boolean]
# File lib/grpc_kit/rpc_desc.rb, line 112 def server_streamer? !@marshal.is_a?(GrpcKit::Grpc::Stream) && @unmarshal.is_a?(GrpcKit::Grpc::Stream) end
Private Instance Methods
# File lib/grpc_kit/rpc_desc.rb, line 136 def client @client ||= if request_response? GrpcKit::Rpcs::Client::RequestResponse elsif client_streamer? GrpcKit::Rpcs::Client::ClientStreamer elsif server_streamer? GrpcKit::Rpcs::Client::ServerStreamer elsif bidi_streamer? GrpcKit::Rpcs::Client::BidiStreamer end end
# File lib/grpc_kit/rpc_desc.rb, line 158 def client_codec @client_codec ||= Codec.new( marshal: @marshal, unmarshal: @unmarshal, marshal_method: @marshal_method, unmarshal_method: @unmarshal_method, ) end
# File lib/grpc_kit/rpc_desc.rb, line 179 def client_interceptor if request_response? GrpcKit::Interceptors::Client::RequestResponse elsif client_streamer? GrpcKit::Interceptors::Client::ClientStreamer elsif server_streamer? GrpcKit::Interceptors::Client::ServerStreamer elsif bidi_streamer? GrpcKit::Interceptors::Client::BidiStreamer end end
# File lib/grpc_kit/rpc_desc.rb, line 123 def server @server ||= if request_response? GrpcKit::Rpcs::Server::RequestResponse elsif client_streamer? GrpcKit::Rpcs::Server::ClientStreamer elsif server_streamer? GrpcKit::Rpcs::Server::ServerStreamer elsif bidi_streamer? GrpcKit::Rpcs::Server::BidiStreamer end end
# File lib/grpc_kit/rpc_desc.rb, line 149 def server_codec @server_codec ||= Codec.new( marshal: @unmarshal, unmarshal: @marshal, marshal_method: @marshal_method, unmarshal_method: @unmarshal_method, ) end
# File lib/grpc_kit/rpc_desc.rb, line 167 def server_interceptor if request_response? GrpcKit::Interceptors::Server::RequestResponse elsif client_streamer? GrpcKit::Interceptors::Server::ClientStreamer elsif server_streamer? GrpcKit::Interceptors::Server::ServerStreamer elsif bidi_streamer? GrpcKit::Interceptors::Server::BidiStreamer end end
# File lib/grpc_kit/rpc_desc.rb, line 191 def to_underscore(val) val .to_s .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') .gsub(/([a-z\d])([A-Z])/, '\1_\2') .tr('-', '_') .downcase end