Sha256: b07cfd268d7de0372547fc073a10a508b6064bfab603186a2dca900f1ebd4b39

Contents?: true

Size: 1.46 KB

Versions: 25

Compression:

Stored size: 1.46 KB

Contents

# encoding: utf-8
require "logstash/util/loggable"
require "logstash/util"
require "concurrent"

module LogStash module Instrument module PeriodicPoller
  class Base
    include LogStash::Util::Loggable

    DEFAULT_OPTIONS = {
      :polling_interval => 1,
      :polling_timeout => 60
    }

    public
    def initialize(metric, options = {})
      @metric = metric
      @options = DEFAULT_OPTIONS.merge(options)
      configure_task
    end

    def update(time, result, exception)
      return unless exception

      logger.error("PeriodicPoller: exception",
                   :poller => self,
                   :result => result,
                   :exception => exception,
                   :executed_at => time)
    end

    def collect
      raise NotImplementedError, "#{self.class.name} need to implement `#collect`"
    end

    def start
      logger.debug("PeriodicPoller: Starting",
                   :polling_interval => @options[:polling_interval],
                   :polling_timeout => @options[:polling_timeout]) if logger.debug?
      
      collect # Collect data right away if possible
      @task.execute
    end

    def stop
      logger.debug("PeriodicPoller: Stopping")
      @task.shutdown
    end

    protected
    def configure_task
      @task = Concurrent::TimerTask.new { collect }
      @task.execution_interval = @options[:polling_interval]
      @task.timeout_interval = @options[:polling_timeout]
      @task.add_observer(self)
    end
  end
end
end; end

Version data entries

25 entries across 25 versions & 4 rubygems

Version Path
mrcooper-logstash-output-azuresearch-0.2.2 vendor/jruby/2.5.0/gems/logstash-core-5.0.0-java/lib/logstash/instrument/periodic_poller/base.rb
logstash-core-5.0.0-java lib/logstash/instrument/periodic_poller/base.rb
logstash-core-5.0.0.pre.rc1-java lib/logstash/instrument/periodic_poller/base.rb
logstash-core-5.0.0.pre.beta1-java lib/logstash/instrument/periodic_poller/base.rb
logstash-filter-delta-1.1.0 vendor/bundle/jruby/2.2.0/gems/logstash-core-5.0.0.alpha6.snapshot5-java/lib/logstash/instrument/periodic_poller/base.rb
logstash-filter-delta-1.0.1 vendor/bundle/jruby/2.2.0/gems/logstash-core-5.0.0.alpha6.snapshot5-java/lib/logstash/instrument/periodic_poller/base.rb
logstash-filter-base64-1.0.4 vendor/bundle/jruby/2.2.0/gems/logstash-core-5.0.0.alpha6.snapshot5-java/lib/logstash/instrument/periodic_poller/base.rb
logstash-filter-base64-1.0.3 vendor/bundle/jruby/2.2.0/gems/logstash-core-5.0.0.alpha6.snapshot5-java/lib/logstash/instrument/periodic_poller/base.rb
logstash-filter-delta-1.0.0 vendor/bundle/jruby/2.2.0/gems/logstash-core-5.0.0.alpha6.snapshot5-java/lib/logstash/instrument/periodic_poller/base.rb
logstash-filter-base64-1.0.2 vendor/bundle/jruby/2.3.0/gems/logstash-core-5.0.0.alpha6.snapshot5-java/lib/logstash/instrument/periodic_poller/base.rb
logstash-filter-base64-1.0.1 vendor/bundle/jruby/2.3.0/gems/logstash-core-5.0.0.alpha6.snapshot5-java/lib/logstash/instrument/periodic_poller/base.rb
logstash-filter-base64-1.0.0 vendor/bundle/jruby/2.3.0/gems/logstash-core-5.0.0.alpha6.snapshot5-java/lib/logstash/instrument/periodic_poller/base.rb
logstash-core-5.0.0.alpha6.snapshot5-java lib/logstash/instrument/periodic_poller/base.rb
logstash-core-5.0.0.alpha6.snapshot4-java lib/logstash/instrument/periodic_poller/base.rb
logstash-core-5.0.0.alpha6.snapshot3-java lib/logstash/instrument/periodic_poller/base.rb
logstash-core-5.0.0.alpha6.snapshot2-java lib/logstash/instrument/periodic_poller/base.rb
logstash-core-5.0.0.alpha6.snapshot1-java lib/logstash/instrument/periodic_poller/base.rb
logstash-core-5.0.0.alpha5.snapshot1-java lib/logstash/instrument/periodic_poller/base.rb
logstash-core-5.0.0.alpha4.snapshot3-java lib/logstash/instrument/periodic_poller/base.rb
logstash-core-5.0.0.alpha4.snapshot2-java lib/logstash/instrument/periodic_poller/base.rb