class Grpc::Health::Checker

Checker is implementation of the schema-specified health checking service.

Constants

HealthCheckResponse
StatusCodes

Public Class Methods

new() click to toggle source

Initializes the statuses of participating services

# File 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 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 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 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::NotFound.new("Service is not found: #{req.service}")
  end
  HealthCheckResponse.new(status: status)
end
clear_all() click to toggle source

Clears alls the statuses.

# File 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 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 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