Class: Spikard::Grpc::Service

Inherits:
Object
  • Object
show all
Defined in:
lib/spikard/grpc.rb

Overview

Service registry for gRPC handlers

Manages registration and lookup of gRPC service handlers. Handlers are registered by service name and method.

Examples:

Registering a handler

service = Spikard::Grpc::Service.new
handler = UserServiceHandler.new
service.register_handler('mypackage.UserService', handler)

Instance Method Summary collapse

Constructor Details

#initializeService

Returns a new instance of Service.



141
142
143
# File 'lib/spikard/grpc.rb', line 141

def initialize
  @handlers = {}
end

Instance Method Details

#get_handler(service_name) ⇒ Spikard::Grpc::Handler?

Get a handler by service name

Parameters:

  • service_name (String)

    Fully qualified service name

Returns:



162
163
164
# File 'lib/spikard/grpc.rb', line 162

def get_handler(service_name)
  @handlers[service_name]
end

#register_handler(service_name, handler) ⇒ Object

Register a gRPC handler for a service

Parameters:

  • service_name (String)

    Fully qualified service name

  • handler (Spikard::Grpc::Handler)

    Handler instance

Raises:

  • (ArgumentError)

    if service_name is invalid or handler doesn’t respond to handle_request



150
151
152
153
154
155
156
# File 'lib/spikard/grpc.rb', line 150

def register_handler(service_name, handler)
  raise ArgumentError, 'Service name cannot be empty' if service_name.nil? || service_name.empty?

  raise ArgumentError, 'Handler must respond to :handle_request' unless handler.respond_to?(:handle_request)

  @handlers[service_name] = handler
end

#registered?(service_name) ⇒ Boolean

Check if a service is registered

Parameters:

  • service_name (String)

    Fully qualified service name

Returns:

  • (Boolean)

    true if the service is registered



177
178
179
# File 'lib/spikard/grpc.rb', line 177

def registered?(service_name)
  @handlers.key?(service_name)
end

#service_namesArray<String>

Get all registered service names

Returns:

  • (Array<String>)

    List of registered service names



169
170
171
# File 'lib/spikard/grpc.rb', line 169

def service_names
  @handlers.keys
end