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