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