savonarola/pulse_meter_core

View on GitHub
lib/pulse_meter/sensor.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'pulse_meter/sensor/base'
require 'pulse_meter/sensor/configuration'
require 'pulse_meter/sensor/counter'
require 'pulse_meter/sensor/indicator'
require 'pulse_meter/sensor/hashed_counter'
require 'pulse_meter/sensor/hashed_indicator'
require 'pulse_meter/sensor/multi'
require 'pulse_meter/sensor/uniq_counter'
require 'pulse_meter/sensor/timeline_reduce'
require 'pulse_meter/sensor/timeline'
require 'pulse_meter/sensor/timelined/average'
require 'pulse_meter/sensor/timelined/counter'
require 'pulse_meter/sensor/timelined/indicator'
require 'pulse_meter/sensor/timelined/hashed_counter'
require 'pulse_meter/sensor/timelined/hashed_indicator'
require 'pulse_meter/sensor/timelined/zset_based'
require 'pulse_meter/sensor/timelined/min'
require 'pulse_meter/sensor/timelined/max'
require 'pulse_meter/sensor/timelined/percentile'
require 'pulse_meter/sensor/timelined/multi_percentile'
require 'pulse_meter/sensor/timelined/median'
require 'pulse_meter/sensor/timelined/uniq_counter'

# Top level sensor module
module PulseMeter

  # Atomic sensor data
  SensorData = Struct.new(:start_time, :value)

  # General sensor exception
  class SensorError < StandardError; end

  # Exception to be raised when sensor name is malformed
  class BadSensorName < SensorError
    def initialize(name, options = {})
      super("Bad sensor name: `#{name}', only a-z letters, @ and _ are allowed")
    end
  end

  # Exception to be raised when Redis is not initialized
  class RedisNotInitialized < SensorError
    def initialize
      super("PulseMeter.redis is not set")
    end
  end

  # Exception to be raised when sensor cannot be dumped
  class DumpError < SensorError; end

  # Exception to be raised on attempts of using the same key for different sensors
  class DumpConflictError < DumpError; end

  # Exception to be raised when sensor cannot be restored
  class RestoreError < SensorError; end

  module Remote
    class MessageTooLarge < PulseMeter::SensorError; end
    class ConnectionError < PulseMeter::SensorError; end
  end
end