Sha256: cc7e96b67c20437944d8c9664f0fef7155f08564c00d9efe03a92a656d875ac1

Contents?: true

Size: 886 Bytes

Versions: 1

Compression:

Stored size: 886 Bytes

Contents

require 'dynoscale_agent/measurement'

module DynoscaleAgent
  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

1 entries across 1 versions & 1 rubygems

Version Path
dynoscale_agent-1.0.0 lib/dynoscale_agent/report.rb