class Servent::Event

Attributes

id[R]
retry[R]
type[R]

Public Class Methods

new(event) click to toggle source
# File lib/servent/event.rb, line 13
def initialize(event)
  @data = []
  StringIO.open(event) do |io|
    io.each_line { |line| parse_line line }
  end

  raise InvalidError.new(event) if empty?
end

Public Instance Methods

data() click to toggle source
# File lib/servent/event.rb, line 22
def data
  @_data ||= @data.join("\n")
end

Private Instance Methods

empty?() click to toggle source
# File lib/servent/event.rb, line 35
def empty?
  data.empty? && type.nil? && id.nil? && @retry.nil?
end
field_data(data) click to toggle source
# File lib/servent/event.rb, line 62
def field_data(data)
  @type = "message" if @type.nil?
  @data << data
end
field_event(data) click to toggle source
# File lib/servent/event.rb, line 50
def field_event(data)
  @type = data
end
field_id(data) click to toggle source
# File lib/servent/event.rb, line 54
def field_id(data)
  @id = data
end
field_retry(data) click to toggle source
# File lib/servent/event.rb, line 58
def field_retry(data)
  @retry = data.to_i
end
parse_line(line) click to toggle source
# File lib/servent/event.rb, line 28
def parse_line(line)
  return unless line.include?(Servent::COLON)
  field_name, data = line.split(":")
  normalized_data = remove_first_space(data).chomp
  process_as_field field_name, normalized_data
end
process_as_field(field_name, data) click to toggle source
# File lib/servent/event.rb, line 39
def process_as_field(field_name, data)
  return unless KNOWN_EVENTS.include?(field_name)
  field_handler = method("field_#{field_name}")
  field_handler.call data
end
remove_first_space(string) click to toggle source
# File lib/servent/event.rb, line 45
def remove_first_space(string)
  return string unless string[0] == "\u{0020}"
  string[1..(string.length - 1)]
end