Class: Qswarm::Speaker
- Inherits:
-
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
#agent ⇒ Object
Returns the value of attribute agent.
12
13
14
|
# File 'lib/qswarm/speaker.rb', line 12
def agent
@agent
end
|
#heard ⇒ Object
Returns the value of attribute heard.
12
13
14
|
# File 'lib/qswarm/speaker.rb', line 12
def heard
@heard
end
|
Returns the value of attribute metadata.
12
13
14
|
# File 'lib/qswarm/speaker.rb', line 12
def metadata
@metadata
end
|
#name ⇒ Object
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(metadata, payload)
@metadata = 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
end
|
#run ⇒ Object
54
55
|
# File 'lib/qswarm/speaker.rb', line 54
def run
end
|