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



34
35
36
37
38
# File 'lib/einhorn/event/command_server.rb', line 34

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)
  new(server)
end

Instance Method Details

#closeObject



40
41
42
43
44
# File 'lib/einhorn/event/command_server.rb', line 40

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

#deregister!Object



51
52
53
54
# File 'lib/einhorn/event/command_server.rb', line 51

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

#notify_readableObject



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

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

#register!Object



46
47
48
49
# File 'lib/einhorn/event/command_server.rb', line 46

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

#to_ioObject



26
27
28
# File 'lib/einhorn/event/command_server.rb', line 26

def to_io
  @server
end

#to_stateObject



30
31
32
# File 'lib/einhorn/event/command_server.rb', line 30

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