Class: FSR::Listener::Base

Inherits:
EventMachine::Protocols::HeaderAndContentProtocol
  • Object
show all
Defined in:
lib/fsr/listener/base.rb

Overview

Stupid name. I know.

Instance Attribute Summary (collapse)

Class Method Summary (collapse)

Instance Method Summary (collapse)

Instance Attribute Details

- (Object) response Also known as: event

Returns the value of attribute response



33
34
35
# File 'lib/fsr/listener/base.rb', line 33

def response
  @response
end

Class Method Details

+ (Object) add_event_hook(event, &block)



13
14
15
# File 'lib/fsr/listener/base.rb', line 13

def add_event_hook(event, &block)
  hooks << [event, block]
end

+ (Object) hooks



9
10
11
# File 'lib/fsr/listener/base.rb', line 9

def hooks
  @hooks ||= []
end

+ (Object) register_cmd(klass)



17
18
19
# File 'lib/fsr/listener/base.rb', line 17

def register_cmd(klass)
  class_eval "def \#{klass.cmd_name}(*args, &block)\ncmd = \#{klass}.new(*args)\nrun_cmd(cmd, *args, &block)\nend\n"
end

Instance Method Details

- (Object) on_event

override



52
53
# File 'lib/fsr/listener/base.rb', line 52

def on_event
end

- (Object) post_init



36
37
38
# File 'lib/fsr/listener/base.rb', line 36

def post_init
  @api_queue = []
end

- (Object) receive_request(header, content)



40
41
42
43
44
45
46
47
48
49
# File 'lib/fsr/listener/base.rb', line 40

def receive_request(header, content)
  @response = Response.new(header, content)

  if response.event?
    on_event
    find_and_invoke_event response.event
  elsif response.api_response? && @api_queue.any?
    invoke_api_queue
  end
end

- (Object) run_cmd(cmd, *args, &block)



28
29
30
31
# File 'lib/fsr/listener/base.rb', line 28

def run_cmd(cmd, *args, &block)
  send_data "#{cmd.raw}\n\n"
  @api_queue << [cmd, (block_given? ? block : lambda {})]
end