module Lumberjack::Beats::FrameEncoder
Public Class Methods
to_frame(hash, sequence)
click to toggle source
# File lib/lumberjack/beats/client.rb, line 179 def self.to_frame(hash, sequence) frame = ["1", "D", sequence] pack = "AAN" keys = deep_keys(hash) frame << keys.length pack << "N" keys.each do |k| val = deep_get(hash,k) key_length = k.bytesize val_length = val.bytesize frame << key_length pack << "N" frame << k pack << "A#{key_length}" frame << val_length pack << "N" frame << val pack << "A#{val_length}" end frame.pack(pack) end
Private Class Methods
deep_get(hash, key="")
click to toggle source
# File lib/lumberjack/beats/client.rb, line 202 def self.deep_get(hash, key="") return hash if key.nil? deep_get( hash[key.split('.').first], key[key.split('.').first.length+1..key.length] ) end
deep_keys(hash, prefix="")
click to toggle source
# File lib/lumberjack/beats/client.rb, line 210 def self.deep_keys(hash, prefix="") keys = [] hash.each do |k,v| keys << "#{prefix}#{k}" if v.class == String keys << deep_keys(hash[k], "#{k}.") if v.class == Hash end keys.flatten end