Class: LogStash::Codecs::Rfc6587
- Inherits:
-
Base
- Object
- Base
- LogStash::Codecs::Rfc6587
- Includes:
- PluginMixins::EventSupport::EventFactoryAdapter
- Defined in:
- lib/logstash/codecs/rfc6587.rb
Overview
RFC6587 text data.
Decoding behavior: Lines will be emitted as described in rfc6587.
Encoding behavior: TBD
Constant Summary collapse
- MESSAGE_FIELD =
"message".freeze
Instance Method Summary collapse
- #decode(data) ⇒ Object
- #encode(event) ⇒ Object
- #flush(&block) ⇒ Object
-
#initialize(*params) ⇒ Rfc6587
constructor
A new instance of Rfc6587.
- #read(data) ⇒ Object
- #register ⇒ Object
Constructor Details
#initialize(*params) ⇒ Rfc6587
Returns a new instance of Rfc6587.
35 36 37 38 39 |
# File 'lib/logstash/codecs/rfc6587.rb', line 35 def initialize(*params) super @original_field = ecs_select[disabled: nil, v1: '[event][original]'] end |
Instance Method Details
#decode(data) ⇒ Object
79 80 81 82 83 84 |
# File 'lib/logstash/codecs/rfc6587.rb', line 79 def decode(data) data = StringIO.new @leftover + data while line = read(data) yield new_event_from_line(line) end end |
#encode(event) ⇒ Object
93 94 95 96 97 |
# File 'lib/logstash/codecs/rfc6587.rb', line 93 def encode(event) raise "Not implemented" #encoded = @format ? event.sprintf(@format) : event.to_s #@on_event.call(event, encoded + @delimiter) end |
#flush(&block) ⇒ Object
86 87 88 89 90 91 |
# File 'lib/logstash/codecs/rfc6587.rb', line 86 def flush(&block) #remainder = @buffer.flush #if !remainder.empty? # block.call new_event_from_line(remainder) #end end |
#read(data) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/logstash/codecs/rfc6587.rb', line 49 def read(data) header = "" while c = data.read(1) next if ["\0", "\x00"].include?(c) # ignore null characters raise "Unknown header character '#{c}'" if not [@delimiter, nil, c.to_i.to_s].include?(c) header += c if c break if c == @delimiter or data.eof or c == nil end raise "Unknown header '#{header}'" if header != "" and header.to_i == 0 if data.eof @leftover = header return end to_read = header.to_i line = data.gets(to_read) if not line @leftover = header return end if line.length == to_read return line else @leftover = "#{header}#{line}" return end end |
#register ⇒ Object
43 44 45 46 47 |
# File 'lib/logstash/codecs/rfc6587.rb', line 43 def register @leftover = "" @converter = LogStash::Util::Charset.new(@charset) @converter.logger = @logger end |