Class: Carnivore::Callback

Inherits:
Object
  • Object
show all
Includes:
Utils::Failure, Utils::Logging, Zoidberg::SoftShell, Zoidberg::Supervise
Defined in:
lib/carnivore/callback.rb

Overview

Payload modifier

Class Attribute Summary collapse

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Utils::Failure

#execute_and_retry_forever

Methods included from Utils::Logging

#exception_log, #log

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.

Parameters:

  • name (String, Symbol)

    name of the callback

  • block (Proc) (defaults to: nil)

    optionally define the callback behavior



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

.workersObject

Define number of workers to create



9
10
11
# File 'lib/carnivore/callback.rb', line 9

def workers
  @workers
end

Instance Attribute Details

#nameString, Symbol (readonly)

Returns name of callback.

Returns:

  • (String, Symbol)

    name of callback



20
21
22
# File 'lib/carnivore/callback.rb', line 20

def name
  @name
end

#sourceCarnivore::Source (readonly)

Returns source this callback is attached.

Returns:



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

Parameters:



65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/carnivore/callback.rb', line 65

def call(message)
  begin
    if(valid?(message))
      info ">> Received message is valid for this callback (#{message})"
      execute(message)
    else
      debug "Invalid message for this callback #{message})"
    end
  rescue => e
    error "[callback: #{self}, source: #{message[:source]}, message: #{message}]: #{e.class} - #{e} (UNHANDLED ERROR)"
    debug "#{e.class}: #{e}\n#{e.backtrace.join("\n")}"
    nil
  end
end

#inspectString Also known as: to_s

Provide nice output when printed

Returns:

  • (String)


49
50
51
# File 'lib/carnivore/callback.rb', line 49

def inspect
  "callback<#{self.name}:#{self.object_id}>"
end

#setupObject

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

Parameters:

Returns:

  • (TrueClass, FalseClass)


58
59
60
# File 'lib/carnivore/callback.rb', line 58

def valid?(message)
  true
end