Sha256: 549c6749173273b423cddcff74ebd9000193ed38116bbe9e81b1e6d8542957e8

Contents?: true

Size: 1.02 KB

Versions: 15

Compression:

Stored size: 1.02 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 = @server.accept_nonblock
          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

15 entries across 15 versions & 1 rubygems

Version Path
einhorn-0.5.1 lib/einhorn/event/command_server.rb
einhorn-0.5.0 lib/einhorn/event/command_server.rb
einhorn-0.4.9 lib/einhorn/event/command_server.rb
einhorn-0.4.8 lib/einhorn/event/command_server.rb
einhorn-0.4.7 lib/einhorn/event/command_server.rb
einhorn-0.4.6 lib/einhorn/event/command_server.rb
einhorn-0.4.5 lib/einhorn/event/command_server.rb
einhorn-0.4.4 lib/einhorn/event/command_server.rb
einhorn-0.4.3 lib/einhorn/event/command_server.rb
einhorn-0.4.2 lib/einhorn/event/command_server.rb
einhorn-0.4.1 lib/einhorn/event/command_server.rb
einhorn-0.4.0 lib/einhorn/event/command_server.rb
einhorn-0.3.2 lib/einhorn/event/command_server.rb
einhorn-0.3.1 lib/einhorn/event/command_server.rb
einhorn-0.3.0 lib/einhorn/event/command_server.rb