class Grpc::Health::Checker

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

def add_status(service, status)

Adds the health status for a given service.
def add_status(service, status)
  @status_mutex.synchronize { @statuses["#{service}"] = status }
end

def add_statuses(service_statuses = {})

Adds health status for each service given within hash
def add_statuses(service_statuses = {})
  @status_mutex.synchronize do
    service_statuses.each_pair { |service, status| @statuses["#{service}"] = status }
  end
end

def check(req, _call)

Implements the rpc IDL API method
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

def clear_all

Clears alls the statuses.
def clear_all
  @status_mutex.synchronize { @statuses = {} }
end

def clear_status(service)

Clears the status for the given service.
def clear_status(service)
  @status_mutex.synchronize { @statuses.delete("#{service}") }
end

def initialize

Initializes the statuses of participating services
def initialize
  @statuses = {}
  @status_mutex = Mutex.new  # guards access to @statuses
end

def set_status_for_services(status, *services)

Adds given health status for all given services
def set_status_for_services(status, *services)
  @status_mutex.synchronize do
    services.each { |service| @statuses["#{service}"] = status }
  end
end