class IMP::Daemon::Handler

Public Class Methods

each() { |hand| ... } click to toggle source
# File lib/daemon/handler/each.rb, line 5
def self.each &block
  @@all.each do |hand|
    yield hand
  end
end
event(name, &block) click to toggle source
# File lib/daemon/handler/event.rb, line 5
def self.event name, &block
  define_method("event_#{name}", block)
end
new(socket) click to toggle source
# 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

Public Instance Methods

close() click to toggle source
# File lib/daemon/handler/close.rb, line 5
def close
  @sock&.close
end
listener() click to toggle source
# File lib/daemon/handler/initialize.rb, line 27
def listener
  loop do
    respond
  rescue IOError
    @all.delete(self)
    close
    break
  rescue
  end
end
respond() click to toggle source
# 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