class Fluent::Plugin::Base
def after_shutdown
def after_shutdown @_state.after_shutdown = true self end
def after_shutdown?
def after_shutdown? @_state.after_shutdown end
def after_start
def after_start @_state.after_start = true self end
def after_started?
def after_started? @_state.after_start end
def before_shutdown
def before_shutdown @_state.before_shutdown = true self end
def before_shutdown?
def before_shutdown? @_state.before_shutdown end
def called_in_test?
def called_in_test? caller_locations.each do |location| # Thread::Backtrace::Location#path returns base filename or absolute path. # #absolute_path returns absolute_path always. # https://bugs.ruby-lang.org/issues/12159 if location.absolute_path =~ /\/test_[^\/]+\.rb$/ # location.path =~ /test_.+\.rb$/ return true end end false end
def close
def close @_state.close = true self end
def closed?
def closed? @_state.close end
def configure(conf)
def configure(conf) if conf.respond_to?(:for_this_worker?) && conf.for_this_worker? workers = if conf.target_worker_ids && !conf.target_worker_ids.empty? conf.target_worker_ids.size else 1 end system_config_override(workers: workers) end super @_state ||= State.new(false, false, false, false, false, false, false, false, false) @_state.configure = true self end
def configured?
def configured? @_state.configure end
def context_router
def context_router @_context_router end
def context_router=(router)
def context_router=(router) @_context_router = router end
def fluentd_worker_id
def fluentd_worker_id return @_fluentd_worker_id if @_fluentd_worker_id @_fluentd_worker_id = (ENV['SERVERENGINE_WORKER_ID'] || 0).to_i @_fluentd_worker_id end
def has_router?
def has_router? false end
def initialize
def initialize @log = nil super @_state = State.new(false, false, false, false, false, false, false, false, false) @_context_router = nil @_fluentd_worker_id = nil @under_plugin_development = false end
def inspect
def inspect # Plugin instances are sometimes too big to dump because it may have too many thins (buffer,storage, ...) # Original commit comment says that: # To emulate normal inspect behavior `ruby -e'o=Object.new;p o;p (o.__id__<<1).to_s(16)'`. # https://github.com/ruby/ruby/blob/trunk/gc.c#L788 "#<%s:%014x>" % [self.class.name, '0x%014x' % (__id__ << 1)] end
def multi_workers_ready?
def multi_workers_ready? true end
def plugin_root_dir
def plugin_root_dir nil # override this in plugin_id.rb end
def shutdown
def shutdown @_state.shutdown = true self end
def shutdown?
def shutdown? @_state.shutdown end
def start
def start # By initialization order, plugin logger is created before set log_event_enabled. # It causes '@id' specified plugin, it uses plugin logger instead of global logger, ignores `<label @FLUENT_LOG>` setting. # This is adhoc approach but impact is minimal. if @log.is_a?(Fluent::PluginLogger) && $log.respond_to?(:log_event_enabled) # log_event_enabled check for tests @log.log_event_enabled = $log.log_event_enabled end @_state.start = true self end
def started?
def started? @_state.start end
def stop
def stop @_state.stop = true self end
def stopped?
def stopped? @_state.stop end
def string_safe_encoding(str)
def string_safe_encoding(str) unless str.valid_encoding? log.info "invalid byte sequence is replaced in `#{str}`" if self.respond_to?(:log) str = str.scrub('?') end yield str end
def terminate
def terminate @_state.terminate = true self end
def terminated?
def terminated? @_state.terminate end