Module: Serfx::Utils::Handler

Defined in:
lib/serfx/utils/handler.rb

Overview

helper module to for serf custom handlers

serf agents can be configured to invoke an executable script when an user event is received.

Serfx::Utils::Handler

module provides a set of helper methods to ease

writing ruby based serf event handlers

For example, following script will respond to any qury event named ‘upcase’ and return the uppercase version of the original query event’s payload

Examples:

require 'serfx/utils/handler'
include Serfx::Utils::Handler
on :query, 'upcase' do |event|
  unless event.payload.nil?
    STDOUT.write(event.payload.upcase)
  end
end
run

Defined Under Namespace

Classes: SerfCallback, SerfEvent

Instance Method Summary collapse

Instance Method Details

#on(type, name = nil, &block) ⇒ Object

register a callback against an event

Parameters:

  • type (Symbol)

    event type for which this handler will be invoked

  • name (String, Regex) (defaults to: nil)

    match against name of the event



62
63
64
65
# File 'lib/serfx/utils/handler.rb', line 62

def on(type, name = nil,  &block)
  callbacks[type] << SerfCallback.new(name, block)
  nil
end

#runObject

execute callbacks registerd using ‘on`



68
69
70
71
72
73
74
75
76
77
# File 'lib/serfx/utils/handler.rb', line 68

def run
  event = SerfEvent.new
  callbacks[event.type.downcase.to_sym].each do |cbk|
    if cbk.name
      cbk.block.call(event) if event.name === cbk.name
    else
      cbk.block.call(event)
    end
  end
end