Class: Qswarm::Speaker

Inherits:
Object
  • Object
show all
Extended by:
DSL
Includes:
Loggable
Defined in:
lib/qswarm/speaker.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from DSL

dsl_accessor

Methods included from Loggable

#logger, logger

Constructor Details

#initialize(listener, name, args, &block) ⇒ Speaker

Returns a new instance of Speaker.



14
15
16
17
18
19
20
21
# File 'lib/qswarm/speaker.rb', line 14

def initialize(listener, name, args, &block)
  @listener = listener
  @agent    = @listener.agent
  @name     = name.to_s unless name.nil?
  @block    = block
  @args     = OpenStruct.new args
  @bind     = nil
end

Instance Attribute Details

#agentObject (readonly)

Returns the value of attribute agent.



12
13
14
# File 'lib/qswarm/speaker.rb', line 12

def agent
  @agent
end

#heardObject (readonly)

Returns the value of attribute heard.



12
13
14
# File 'lib/qswarm/speaker.rb', line 12

def heard
  @heard
end

#metadataObject (readonly)

Returns the value of attribute metadata.



12
13
14
# File 'lib/qswarm/speaker.rb', line 12

def 
  @metadata
end

#nameObject (readonly)

Returns the value of attribute name.



12
13
14
# File 'lib/qswarm/speaker.rb', line 12

def name
  @name
end

Instance Method Details

#arg(name) ⇒ Object



57
58
59
# File 'lib/qswarm/speaker.rb', line 57

def arg(name)
  @args[name]
end

#bind(routing_key) ⇒ Object



61
62
63
# File 'lib/qswarm/speaker.rb', line 61

def bind(routing_key)
  @bind = routing_key
end

#get_broker(name) ⇒ Object



50
51
52
# File 'lib/qswarm/speaker.rb', line 50

def get_broker(name)
  @listener.get_broker(name)
end

#inject(format = :text, msg) ⇒ Object



43
44
45
46
47
48
# File 'lib/qswarm/speaker.rb', line 43

def inject(format = :text, msg)
  routing_key = @bind || @name
  logger.debug "[#{@agent.name}] Sending '#{msg}' to broker #{get_broker(@broker).name}/#{routing_key}"
  publish @broker, format, routing_key, msg
  log msg if format == :text
end

#log(msg) ⇒ Object



39
40
41
# File 'lib/qswarm/speaker.rb', line 39

def log(msg)
  logger.info "[#{@agent.name}] #{msg}"
end

#parse(metadata, payload) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/qswarm/speaker.rb', line 23

def parse(, payload)
  @metadata = 
  case @listener.format
  when :json
    @heard = JSON.parse(payload)
  else
    @heard = payload
  end

  self.instance_eval(&@block)
rescue JSON::ParserError
  error = "JSON::ParserError on #{payload.inspect}"
  logger.error error
#      publish :errors, :text, "errors.#{@agent.name}.#{$fqdn}", error
end

#runObject



54
55
# File 'lib/qswarm/speaker.rb', line 54

def run
end