lib/pulse_meter/sensor.rb
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