lib/pulse_meter_core.rb
require "redis"
require "logger"
require "pulse_meter/mixins/dumper"
require "pulse_meter/mixins/utils"
require "pulse_meter/observer"
require "pulse_meter/observer/extended"
require "pulse_meter/sensor"
require "pulse_meter/sensor/configuration"
require "pulse_meter/command_aggregator/async"
require "pulse_meter/command_aggregator/sync"
require "pulse_meter/command_aggregator/udp"
require "pulse_meter/udp_server"
module PulseMeter
@@redis = nil
# Returns global Redis client
def self.redis
@@redis
end
# Sets global Redis client
# @param redis [Redis] redis client
def self.redis=(redis)
@@redis = redis
end
# Returns global command aggegator (i.e. object that accumulates Redis commands emitted by events and sends them into client)
def self.command_aggregator
@@command_aggregator ||= PulseMeter::CommandAggregator::Async.instance
end
# Sets global command_aggregator
# @param type [Symbol] type of command aggegator (:async or :sync)
# @raise [ArgumentError] if type is none of :async, :sync
def self.command_aggregator=(command_aggregator)
@@command_aggregator = case command_aggregator
when :sync; PulseMeter::CommandAggregator::Sync.instance
when :async; PulseMeter::CommandAggregator::Async.instance
else command_aggregator
end
end
# Sets global logger for all PulseMeter error messages
# @param logger [Logger] logger to be used
def self.logger=(new_logger)
@@logger = new_logger
end
# Returns global PulseMeter logger
def self.logger
@@logger ||= begin
logger = Logger.new($stderr)
logger.datetime_format = '%Y-%m-%d %H:%M:%S.%3N'
logger
end
end
# Sends error message to PulseMeter logger
# @param message [String] error message
def self.error(msg)
logger.error(msg)
end
end