class ChefZero::SocketlessServerMap

Constants

MUTEX

Public Class Methods

new() click to toggle source
# File lib/chef_zero/socketless_server_map.rb, line 45
def initialize
  reset!
end
request(port, request_env) click to toggle source
# File lib/chef_zero/socketless_server_map.rb, line 33
def self.request(port, request_env)
  instance.request(port, request_env)
end
server_on_port(port) click to toggle source
# File lib/chef_zero/socketless_server_map.rb, line 37
def self.server_on_port(port)
  instance.server_on_port(port)
end

Public Instance Methods

deregister(port) click to toggle source
# File lib/chef_zero/socketless_server_map.rb, line 79
def deregister(port)
  MUTEX.synchronize do
    @servers_by_port.delete(port)
  end
end
has_server_on_port?(port) click to toggle source
# File lib/chef_zero/socketless_server_map.rb, line 71
def has_server_on_port?(port)
  @servers_by_port.key?(port)
end
register_no_listen_server(server) click to toggle source
# File lib/chef_zero/socketless_server_map.rb, line 59
def register_no_listen_server(server)
  MUTEX.synchronize do
    1.upto(1000) do |port|
      unless @servers_by_port.key?(port)
        @servers_by_port[port] = server
        return port
      end
    end
    raise NoSocketlessPortAvailable, "No socketless ports left to register"
  end
end
register_port(port, server) click to toggle source
# File lib/chef_zero/socketless_server_map.rb, line 53
def register_port(port, server)
  MUTEX.synchronize do
    @servers_by_port[port] = server
  end
end
request(port, request_env) click to toggle source
# File lib/chef_zero/socketless_server_map.rb, line 85
def request(port, request_env)
  server = @servers_by_port[port]
  raise ServerNotFound, "No socketless #{ChefZero::Dist::PRODUCT} server on given port #{port.inspect}" unless server

  server.handle_socketless_request(request_env)
end
reset!() click to toggle source
# File lib/chef_zero/socketless_server_map.rb, line 49
def reset!
  @servers_by_port = {}
end
server_on_port(port) click to toggle source
# File lib/chef_zero/socketless_server_map.rb, line 75
def server_on_port(port)
  @servers_by_port[port]
end