class LogStash::Codecs::Frame
Frame-oriented text data.
Decoding behavior: Only whole frame events will be emitted.
Encoding behavior: Each event will be emitted with a prefixed <length><delimiter>.
Public Instance Methods
decode(data) { |event("message" => convert)| ... }
click to toggle source
# File lib/logstash/codecs/frame.rb, line 32 def decode(data) @buffer += data while (nextMessage) yield LogStash::Event.new("message" => @converter.convert(@buffer[@offset, @frameLength])) @buffer.slice!(0, @offset + @frameLength) @offset = nil end end
encode(event)
click to toggle source
# File lib/logstash/codecs/frame.rb, line 42 def encode(event) if event.is_a? LogStash::Event and @format @on_event.call(event, encodeFrameLength(event.sprintf(@format))) else @on_event.call(event, encodeFrameLength(event.to_s)) end end
register()
click to toggle source
# File lib/logstash/codecs/frame.rb, line 23 def register @buffer = "" @offset @frame_length @converter = LogStash::Util::Charset.new(@charset) @converter.logger = @logger end
Private Instance Methods
encodeFrameLength(message)
click to toggle source
# File lib/logstash/codecs/frame.rb, line 64 def encodeFrameLength(message) return message.length.to_s + @delimiter + message end
nextMessage()
click to toggle source
# File lib/logstash/codecs/frame.rb, line 51 def nextMessage() if (@offset.nil?) @offset = @buffer.index(@delimiter); if (@offset.nil?) return false end @frameLength = @buffer[0, @offset].to_i @offset += @delimiter.length end return @buffer.length >= @offset + @frameLength end