class CodecFactory
CodecFactory: lazy-fetch codec plugins
Public Class Methods
new(logger, options)
click to toggle source
# File lib/logstash/inputs/codec_factory.rb, line 5 def initialize(logger, options) @logger = logger @default_codec = options[:default_codec] @codec_by_folder = options[:codec_by_folder] @codecs = { 'default' => @default_codec } end
Public Instance Methods
get_codec(record)
click to toggle source
# File lib/logstash/inputs/codec_factory.rb, line 14 def get_codec(record) codec = find_codec(record) if @codecs[codec].nil? @codecs[codec] = get_codec_plugin(codec) end @logger.debug("Switching to codec #{codec}") if codec != 'default' return @codecs[codec].clone end
Private Instance Methods
find_codec(record)
click to toggle source
# File lib/logstash/inputs/codec_factory.rb, line 25 def find_codec(record) bucket, key, folder = record[:bucket], record[:key], record[:folder] unless @codec_by_folder[bucket].nil? @logger.debug("Looking up codec for folder #{folder}", :codec => @codec_by_folder[bucket][folder]) return @codec_by_folder[bucket][folder] unless @codec_by_folder[bucket][folder].nil? end return 'default' end
get_codec_plugin(name, options = {})
click to toggle source
# File lib/logstash/inputs/codec_factory.rb, line 34 def get_codec_plugin(name, options = {}) LogStash::Plugin.lookup('codec', name).new(options) end