Sha256: 40415b45527093605641503a26733a2e63b8b1352fd2392bc89c431f41484e7e

Contents?: true

Size: 1.15 KB

Versions: 14

Compression:

Stored size: 1.15 KB

Contents

# Copyright (c) 2015 Sqreen. All Rights Reserved.
# Please refer to our terms for more information: https://www.sqreen.io/terms.html

require 'sqreen/exception'

module Sqreen
  module Metric
    OBSERVATION_KEY = 'observation'.freeze
    START_KEY = 'start'.freeze
    FINISH_KEY = 'finish'.freeze
    # Base interface for a metric
    class Base
      # Update the current metric with a new observation
      # @param _at [Time] when was the observation made
      # @param _key [String] which aggregation key was it made for
      # @param _value [Object] The observation
      def update(_at, _key, _value)
        raise Sqreen::Exception, 'No current sample' unless @sample
      end

      # create a new empty sample and publish the last one
      # @param time [Time] Time of start/finish
      def next_sample(time)
        finalize_sample(time) unless @sample.nil?
        current_sample = @sample
        new_sample(time)
        current_sample
      end

      protected

      def new_sample(time)
        @sample = { OBSERVATION_KEY => {}, START_KEY => time }
      end

      def finalize_sample(time)
        @sample[FINISH_KEY] = time
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
sqreen-0.8.11465220943-java lib/sqreen/metrics/base.rb
sqreen-0.8.11465220943 lib/sqreen/metrics/base.rb
sqreen-0.8.01464630418-java lib/sqreen/metrics/base.rb
sqreen-0.8.01464630418 lib/sqreen/metrics/base.rb
sqreen-0.7.01464629603-java lib/sqreen/metrics/base.rb
sqreen-0.7.01464629603 lib/sqreen/metrics/base.rb
sqreen-0.7.01462198090-java lib/sqreen/metrics/base.rb
sqreen-0.7.01462198090 lib/sqreen/metrics/base.rb
sqreen-0.7.01461829538-java lib/sqreen/metrics/base.rb
sqreen-0.7.01461829538 lib/sqreen/metrics/base.rb
sqreen-0.7.01461767359-java lib/sqreen/metrics/base.rb
sqreen-0.7.01461767359 lib/sqreen/metrics/base.rb
sqreen-0.7.01461158029-java lib/sqreen/metrics/base.rb
sqreen-0.7.01461158029 lib/sqreen/metrics/base.rb