Sha256: 28ff6f3b31d6b3a55c749dbf51b9623a0b241894cb6e5c0abd18179c31edaf7a

Contents?: true

Size: 1.03 KB

Versions: 18

Compression:

Stored size: 1.03 KB

Contents

module Einhorn::Event
  class CommandServer
    include Persistent

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

    def initialize(server)
      @server = server

      @closed = false

      register!
    end

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

    def to_io
      @server
    end

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

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

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

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

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

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
einhorn-0.8.2 lib/einhorn/event/command_server.rb
einhorn-0.7.4 lib/einhorn/event/command_server.rb
einhorn-0.7.3 lib/einhorn/event/command_server.rb
einhorn-0.7.2 lib/einhorn/event/command_server.rb
einhorn-0.7.1 lib/einhorn/event/command_server.rb
einhorn-0.7.0 lib/einhorn/event/command_server.rb
einhorn-0.6.5 lib/einhorn/event/command_server.rb
einhorn-0.6.4 lib/einhorn/event/command_server.rb
einhorn-0.6.3 lib/einhorn/event/command_server.rb
einhorn-0.6.2 lib/einhorn/event/command_server.rb
einhorn-0.6.1 lib/einhorn/event/command_server.rb
einhorn-0.6.0 lib/einhorn/event/command_server.rb
einhorn-0.5.7 lib/einhorn/event/command_server.rb
einhorn-0.5.6 lib/einhorn/event/command_server.rb
einhorn-0.5.5 lib/einhorn/event/command_server.rb
einhorn-0.5.4 lib/einhorn/event/command_server.rb
einhorn-0.5.3 lib/einhorn/event/command_server.rb
einhorn-0.5.2 lib/einhorn/event/command_server.rb