class Procodile::ControlServer

Public Class Methods

new(supervisor) click to toggle source
# File lib/procodile/control_server.rb, line 14
def initialize(supervisor)
  @supervisor = supervisor
end
start(supervisor) click to toggle source
# File lib/procodile/control_server.rb, line 7
def self.start(supervisor)
  Thread.new do
    socket = ControlServer.new(supervisor)
    socket.listen
  end
end

Public Instance Methods

listen() click to toggle source
# File lib/procodile/control_server.rb, line 18
def listen
  socket = UNIXServer.new(@supervisor.config.sock_path)
  Procodile.log nil, 'control', "Listening at #{@supervisor.config.sock_path}"
  loop do
    client = socket.accept
    session = ControlSession.new(@supervisor, client)
    while line = client.gets
      if response = session.receive_data(line.strip)
        client.puts response
      end
    end
    client.close
  end
ensure
  FileUtils.rm_f(@supervisor.config.sock_path)
end