Class: Einhorn::Event::CommandServer
- Inherits:
-
Object
- Object
- Einhorn::Event::CommandServer
- Includes:
- Persistent
- Defined in:
- lib/einhorn/event/command_server.rb
Class Method Summary collapse
Instance Method Summary collapse
- #close ⇒ Object
- #deregister! ⇒ Object
-
#initialize(server) ⇒ CommandServer
constructor
A new instance of CommandServer.
- #notify_readable ⇒ Object
- #register! ⇒ Object
- #to_io ⇒ Object
- #to_state ⇒ Object
Methods included from 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
#close ⇒ Object
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_readable ⇒ Object
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_io ⇒ Object
26 27 28 |
# File 'lib/einhorn/event/command_server.rb', line 26 def to_io @server end |
#to_state ⇒ Object
30 31 32 |
# File 'lib/einhorn/event/command_server.rb', line 30 def to_state {class: self.class.to_s, server: @server.fileno} end |