Class: Carnivore::Callback
- Inherits:
-
Object
- Object
- Carnivore::Callback
- Includes:
- Utils::Failure, Utils::Logging, Zoidberg::SoftShell, Zoidberg::Supervise
- Defined in:
- lib/carnivore/callback.rb
Overview
Payload modifier
Class Attribute Summary collapse
-
.workers ⇒ Object
Define number of workers to create.
Instance Attribute Summary collapse
-
#name ⇒ String, Symbol
readonly
Name of callback.
-
#source ⇒ Carnivore::Source
readonly
Source this callback is attached.
Instance Method Summary collapse
-
#call(message) ⇒ Object
Execute callback against given message.
-
#initialize(name, source, block = nil) ⇒ Callback
constructor
Creates a new callback.
-
#inspect ⇒ String
(also: #to_s)
Provide nice output when printed.
-
#setup ⇒ Object
Used by custom callback classes for setup.
-
#valid?(message) ⇒ TrueClass, FalseClass
Message is valid for this callback.
Methods included from Utils::Failure
Methods included from Utils::Logging
Constructor Details
#initialize(name, source, block = nil) ⇒ Callback
Creates a new callback. Optional block to define callback behavior must be passed as a ‘Proc` instance, not a block.
29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/carnivore/callback.rb', line 29 def initialize(name, source, block=nil) @name = name @source = source if(block.nil? && self.class == Callback) raise ArgumentError.new 'Block is required for dynamic callbacks!' end define_singleton_method(:execute, &block) if block execute_and_retry_forever(:setup) do setup end end |
Class Attribute Details
.workers ⇒ Object
Define number of workers to create
9 10 11 |
# File 'lib/carnivore/callback.rb', line 9 def workers @workers end |
Instance Attribute Details
#name ⇒ String, Symbol (readonly)
Returns name of callback.
20 21 22 |
# File 'lib/carnivore/callback.rb', line 20 def name @name end |
#source ⇒ Carnivore::Source (readonly)
Returns source this callback is attached.
22 23 24 |
# File 'lib/carnivore/callback.rb', line 22 def source @source end |
Instance Method Details
#call(message) ⇒ Object
Execute callback against given message
65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/carnivore/callback.rb', line 65 def call() begin if(valid?()) info ">> Received message is valid for this callback (#{})" execute() else debug "Invalid message for this callback #{})" end rescue => e error "[callback: #{self}, source: #{[:source]}, message: #{}]: #{e.class} - #{e} (UNHANDLED ERROR)" debug "#{e.class}: #{e}\n#{e.backtrace.join("\n")}" nil end end |
#inspect ⇒ String Also known as: to_s
Provide nice output when printed
49 50 51 |
# File 'lib/carnivore/callback.rb', line 49 def inspect "callback<#{self.name}:#{self.object_id}>" end |
#setup ⇒ Object
Used by custom callback classes for setup
42 43 44 |
# File 'lib/carnivore/callback.rb', line 42 def setup debug 'No custom setup defined' end |
#valid?(message) ⇒ TrueClass, FalseClass
Message is valid for this callback
58 59 60 |
# File 'lib/carnivore/callback.rb', line 58 def valid?() true end |