Class: Einhorn::Event::CommandServer

Inherits:
Object
  • Object
show all
Includes:
Persistent
Defined in:
lib/einhorn/event/command_server.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Persistent

included, persistent?

Constructor Details

#initialize(server) ⇒ CommandServer

Returns a new instance of CommandServer.



9
10
11
12
13
14
15
# File 'lib/einhorn/event/command_server.rb', line 9

def initialize(server)
  @server = server

  @closed = false

  register!
end

Class Method Details

.from_state(state) ⇒ Object



36
37
38
39
40
# File 'lib/einhorn/event/command_server.rb', line 36

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

.open(server) ⇒ Object



5
6
7
# File 'lib/einhorn/event/command_server.rb', line 5

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

Instance Method Details

#closeObject



42
43
44
45
46
# File 'lib/einhorn/event/command_server.rb', line 42

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

#deregister!Object



53
54
55
56
# File 'lib/einhorn/event/command_server.rb', line 53

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

#notify_readableObject



17
18
19
20
21
22
23
24
25
26
# File 'lib/einhorn/event/command_server.rb', line 17

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

#register!Object



48
49
50
51
# File 'lib/einhorn/event/command_server.rb', line 48

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

#to_ioObject



28
29
30
# File 'lib/einhorn/event/command_server.rb', line 28

def to_io
  @server
end

#to_stateObject



32
33
34
# File 'lib/einhorn/event/command_server.rb', line 32

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