module Fluent::PluginHelper::Parser
Attributes
_parsers[R]
Public Class Methods
included(mod)
click to toggle source
# File lib/fluent/plugin_helper/parser.rb, line 70 def self.included(mod) mod.include ParserParams end
new()
click to toggle source
Calls superclass method
# File lib/fluent/plugin_helper/parser.rb, line 76 def initialize super @_parsers_started = false @_parsers = {} # usage => parser end
Public Instance Methods
after_shutdown()
click to toggle source
Calls superclass method
# File lib/fluent/plugin_helper/parser.rb, line 129 def after_shutdown parser_operate(:after_shutdown) super end
before_shutdown()
click to toggle source
Calls superclass method
# File lib/fluent/plugin_helper/parser.rb, line 119 def before_shutdown parser_operate(:before_shutdown) super end
close()
click to toggle source
Calls superclass method
# File lib/fluent/plugin_helper/parser.rb, line 134 def close parser_operate(:close) super end
configure(conf)
click to toggle source
Calls superclass method
# File lib/fluent/plugin_helper/parser.rb, line 82 def configure(conf) super @parser_configs.each do |section| if @_parsers[section.usage] raise Fluent::ConfigError, "duplicated parsers configured: #{section.usage}" end parser = Plugin.new_parser(section[:@type], parent: self) parser.configure(section.corresponding_config_element) @_parsers[section.usage] = parser end end
parser_create(usage: '', type: nil, conf: nil, default_type: nil)
click to toggle source
# File lib/fluent/plugin_helper/parser.rb, line 25 def parser_create(usage: '', type: nil, conf: nil, default_type: nil) parser = @_parsers[usage] return parser if parser && !type && !conf type = if type type elsif conf && conf.respond_to?(:[]) raise Fluent::ConfigError, "@type is required in <parse>" unless conf['@type'] conf['@type'] elsif default_type default_type else raise ArgumentError, "BUG: both type and conf are not specified" end parser = Fluent::Plugin.new_parser(type, parent: self) config = case conf when Fluent::Config::Element conf when Hash # in code, programmer may use symbols as keys, but Element needs strings conf = Hash[conf.map{|k,v| [k.to_s, v]}] Fluent::Config::Element.new('parse', usage, conf, []) when nil Fluent::Config::Element.new('parse', usage, {}, []) else raise ArgumentError, "BUG: conf must be a Element, Hash (or unspecified), but '#{conf.class}'" end parser.configure(config) if @_parsers_started parser.start end @_parsers[usage] = parser parser end
parser_operate(method_name, &block)
click to toggle source
# File lib/fluent/plugin_helper/parser.rb, line 103 def parser_operate(method_name, &block) @_parsers.each_pair do |usage, parser| begin parser.__send__(method_name) block.call(parser) if block_given? rescue => e log.error "unexpected error while #{method_name}", usage: usage, parser: parser, error: e end end end
shutdown()
click to toggle source
Calls superclass method
# File lib/fluent/plugin_helper/parser.rb, line 124 def shutdown parser_operate(:shutdown) super end
start()
click to toggle source
Calls superclass method
# File lib/fluent/plugin_helper/parser.rb, line 95 def start super @_parsers_started = true @_parsers.each_pair do |usage, parser| parser.start end end
stop()
click to toggle source
Calls superclass method
# File lib/fluent/plugin_helper/parser.rb, line 114 def stop super parser_operate(:stop) end
terminate()
click to toggle source
Calls superclass method
# File lib/fluent/plugin_helper/parser.rb, line 139 def terminate parser_operate(:terminate) @_parsers_started = false @_parsers = {} super end