Class: Epi::Daemon::Responder
- Inherits:
-
Object
- Object
- Epi::Daemon::Responder
- Includes:
- Exceptions
- Defined in:
- lib/epi/daemon/responder.rb
Direct Known Subclasses
Epi::Daemon::Responders::Config, Epi::Daemon::Responders::Job, Epi::Daemon::Responders::Shutdown, Epi::Daemon::Responders::Start, Epi::Daemon::Responders::Status, Epi::Daemon::Responders::StopAll
Instance Attribute Summary collapse
-
#receiver ⇒ Object
readonly
Returns the value of attribute receiver.
Class Method Summary collapse
-
.run(receiver, name, data, &callback) ⇒ Object
Runs a responder by name.
Instance Method Summary collapse
- #done(result = nil) ⇒ Object
-
#initialize(receiver, callback) ⇒ Responder
constructor
A new instance of Responder.
- #logger ⇒ Object
- #puts(text) ⇒ Object
- #run ⇒ Object
Constructor Details
#initialize(receiver, callback) ⇒ Responder
Returns a new instance of Responder.
31 32 33 34 |
# File 'lib/epi/daemon/responder.rb', line 31 def initialize(receiver, callback) @receiver = receiver @callback = callback end |
Instance Attribute Details
#receiver ⇒ Object (readonly)
Returns the value of attribute receiver.
25 26 27 |
# File 'lib/epi/daemon/responder.rb', line 25 def receiver @receiver end |
Class Method Details
.run(receiver, name, data, &callback) ⇒ Object
Runs a responder by name.
12 13 14 15 16 17 18 19 20 21 22 23 |
# 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 |
Instance Method Details
#done(result = nil) ⇒ Object
44 45 46 |
# File 'lib/epi/daemon/responder.rb', line 44 def done(result = nil) @callback.call result end |
#puts(text) ⇒ Object
40 41 42 |
# File 'lib/epi/daemon/responder.rb', line 40 def puts(text) receiver.puts text end |
#run ⇒ Object
36 37 38 |
# File 'lib/epi/daemon/responder.rb', line 36 def run raise NotImplementedError, "You need to define #run for class #{self.class.name}" end |