Class: IMP::Daemon::Handler
- Inherits:
-
Object
- Object
- IMP::Daemon::Handler
- Defined in:
- lib/daemon/handler/each.rb,
lib/daemon/handler/close.rb,
lib/daemon/handler/event.rb,
lib/daemon/handler/respond.rb,
lib/daemon/handler/initialize.rb
Constant Summary collapse
- @@all =
Array.new
Class Method Summary collapse
Instance Method Summary collapse
- #close ⇒ Object
-
#initialize(socket) ⇒ Handler
constructor
A new instance of Handler.
- #listener ⇒ Object
- #respond ⇒ Object
Constructor Details
#initialize(socket) ⇒ Handler
Returns a new instance of Handler.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/daemon/handler/initialize.rb', line 7 def initialize socket @sock = socket @port = nil @user = nil # identification @sock.puts({ 'imp' => 'imp', 'version' => IMP::VERSION, }.to_json) # add to connected client list @@all << self # now just receive requests listener end |
Class Method Details
.each(&block) ⇒ Object
5 6 7 8 9 |
# File 'lib/daemon/handler/each.rb', line 5 def self.each &block @@all.each do |hand| yield hand end end |
.event(name, &block) ⇒ Object
5 6 7 |
# File 'lib/daemon/handler/event.rb', line 5 def self.event name, &block define_method("event_#{name}", block) end |
Instance Method Details
#close ⇒ Object
5 6 7 |
# File 'lib/daemon/handler/close.rb', line 5 def close @sock&.close end |
#listener ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/daemon/handler/initialize.rb', line 27 def listener loop do respond rescue IOError @all.delete(self) close break rescue end end |
#respond ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/daemon/handler/respond.rb', line 5 def respond buff = @sock.gets buff = JSON.parse(buff) event = buff["event"] data = buff['data'] begin func = method("event_#{event}") data = case func.arity when 0 func.call else func.call(data) end rescue => e puts e end pp data buff["data"] = data @sock.puts buff.to_json end |