class Einhorn::Event::CommandServer

def self.from_state(state)

def self.from_state(state)
  fd = state[:server]
  socket = UNIXServer.for_fd(fd)
  self.open(socket)
end

def self.open(server)

def self.open(server)
  new(server)
end

def close

def close
  @closed = true
  deregister!
  @server.close
end

def deregister!

def deregister!
  Einhorn::Command::Interface.command_server = nil
  Einhorn::Event.deregister_readable(self)
end

def initialize(server)

def initialize(server)
  @server = server
  @closed = false
  register!
end

def notify_readable

def notify_readable
  loop do
    return if @closed
    sock = Einhorn::Compat.accept_nonblock(@server)
    Connection.open(sock)
  end
rescue Errno::EAGAIN
end

def register!

def register!
  Einhorn::Command::Interface.command_server = self
  Einhorn::Event.register_readable(self)
end

def to_io

def to_io
  @server
end

def to_state

def to_state
  {class: self.class.to_s, server: @server.fileno}
end