class Epi::Daemon::Responder
Attributes
receiver[R]
Public Class Methods
new(receiver, callback)
click to toggle source
# File lib/epi/daemon/responder.rb, line 31 def initialize(receiver, callback) @receiver = receiver @callback = callback end
run(receiver, name, data) { |run| ... }
click to toggle source
Runs a responder by name.
@param receiver [Receiver] The receiver that is running the responder @param name [String] Name of the responder to invoke, e.g. ‘command’ @param data [Hash] Data
included in the message, to be extracted onto the responder before it is run
# File lib/epi/daemon/responder.rb, line 12 def self.run(receiver, name, data, &callback) klass_name = name.camelize.to_sym klass = Responders.const_defined?(klass_name) && Responders.const_get(klass_name) raise Fatal, 'Unknown message type' unless Class === klass && klass < Responder responder = klass.new(receiver, callback) data.each { |key, value| responder.__send__ :"#{key}=", value } if responder.respond_to? :run_async responder.run_async else yield responder.run end end
Public Instance Methods
done(result = nil)
click to toggle source
# File lib/epi/daemon/responder.rb, line 44 def done(result = nil) @callback.call result end
logger()
click to toggle source
# File lib/epi/daemon/responder.rb, line 27 def logger Epi.logger end
puts(text)
click to toggle source
# File lib/epi/daemon/responder.rb, line 40 def puts(text) receiver.puts text end
run()
click to toggle source
# File lib/epi/daemon/responder.rb, line 36 def run raise NotImplementedError, "You need to define #run for class #{self.class.name}" end