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

#run ⇒ Object

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 cbk.name === event.name
    else
      cbk.block.call(event)
    end
  end
end