Class: LogStash::Codecs::Rfc6587

Inherits:
Base
  • Object
show all
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

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

#registerObject



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