class Grpc::Health::Checker
Checker
is implementation of the schema-specified health checking service.
Constants
- HealthCheckResponse
- StatusCodes
StatusCodes
defines the canonical error codes used by gRPC for the RPC API.
Public Class Methods
new()
click to toggle source
Initializes the statuses of participating services
# File src/ruby/pb/grpc/health/checker.rb, line 28 def initialize @statuses = {} @status_mutex = Mutex.new # guards access to @statuses end
Public Instance Methods
add_status(service, status)
click to toggle source
Adds the health status for a given service.
# File src/ruby/pb/grpc/health/checker.rb, line 46 def add_status(service, status) @status_mutex.synchronize { @statuses["#{service}"] = status } end
add_statuses(service_statuses = {})
click to toggle source
Adds health status for each service given within hash
# File src/ruby/pb/grpc/health/checker.rb, line 58 def add_statuses(service_statuses = {}) @status_mutex.synchronize do service_statuses.each_pair { |service, status| @statuses["#{service}"] = status } end end
check(req, _call)
click to toggle source
Implements the rpc IDL API method
# File src/ruby/pb/grpc/health/checker.rb, line 34 def check(req, _call) status = nil @status_mutex.synchronize do status = @statuses["#{req.service}"] end if status.nil? fail GRPC::BadStatus.new_status_exception(StatusCodes::NOT_FOUND) end HealthCheckResponse.new(status: status) end
clear_all()
click to toggle source
Clears alls the statuses.
# File src/ruby/pb/grpc/health/checker.rb, line 70 def clear_all @status_mutex.synchronize { @statuses = {} } end
clear_status(service)
click to toggle source
Clears the status for the given service.
# File src/ruby/pb/grpc/health/checker.rb, line 65 def clear_status(service) @status_mutex.synchronize { @statuses.delete("#{service}") } end
set_status_for_services(status, *services)
click to toggle source
Adds given health status for all given services
# File src/ruby/pb/grpc/health/checker.rb, line 51 def set_status_for_services(status, *services) @status_mutex.synchronize do services.each { |service| @statuses["#{service}"] = status } end end