class Serfx::Utils::Handler::SerfEvent
when serf agent invokes a handler it passes the event payload through STDIN. while event metadata such as event type, name etc is passed as a set of environment variables.
SerfEvent
-
encapsulates such event.
Attributes
environment[R]
name[R]
payload[R]
type[R]
Public Class Methods
new(env = ENV, stdin = STDIN)
click to toggle source
@param env [Hash] environment @param stdin [IO] stadard input stream for the event
# File lib/serfx/utils/handler.rb, line 33 def initialize(env = ENV, stdin = STDIN) @environment = {} @payload = nil @name = nil env.keys.select { |k| k =~ /^SERF/ }.each do | k| @environment[k] = env[k].strip end @type = @environment['SERF_EVENT'] case @type when 'query' @name = @environment['SERF_QUERY_NAME'] begin @payload = stdin.read_nonblock(4096).strip rescue Errno::EAGAIN, EOFError end when 'user' @name = @environment['SERF_USER_EVENT'] begin @payload = stdin.read_nonblock(4096).strip rescue Errno::EAGAIN, EOFError end end end