Sha256: 73af01ac23a9e9d156ffcd5b692803ad3d71294de60d5297be322e4eb6df63d4

Contents?: true

Size: 884 Bytes

Versions: 3

Compression:

Stored size: 884 Bytes

Contents

require 'dynoscale_ruby/measurement'

module DynoscaleRuby
  class Report

  	REPORT_TTL = 5 * 60 # minutes

    attr_reader :publish_timestamp, :measurements

  	def initialize(publish_timestamp)
      @measurements = []
      @publish_timestamp = publish_timestamp
  	end

  	def add_measurement(current_time = Time.now, metric, source, metadata)
      @measurements << Measurement.new(current_time.to_i, metric, source, metadata)
  	end

  	def add_measurements(measurements)
      @measurements.unshift(*measurements)
  	end

    def ready_to_publish?(current_time = Time.now)
      @measurements.any? && publish_timestamp < current_time
    end

  	def expired?(current_time = Time.now)
      publish_timestamp < (current_time - REPORT_TTL)
  	end

  	def to_csv
      @measurements.reduce(""){|t, m| "#{t}#{m.timestamp},#{m.metric},#{m.source},#{m.metadata}\n"}
  	end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dynoscale_ruby-1.0.3 lib/dynoscale_ruby/report.rb
dynoscale_ruby-1.0.2 lib/dynoscale_ruby/report.rb
dynoscale_ruby-1.0.1 lib/dynoscale_ruby/report.rb