class Kronos::ConfigAgent

Attributes

_runner[RW]
_storage[RW]
tasks[R]

Public Class Methods

new() click to toggle source
# File lib/kronos/config_agent.rb, line 7
def initialize
  @tasks = []
  @instance = {}
end

Public Instance Methods

logger(logger, *config) click to toggle source
# File lib/kronos/config_agent.rb, line 26
def logger(logger, *config)
  @instance[:logger] = logger.new(*config)
  self
end
logger_instance() click to toggle source
# File lib/kronos/config_agent.rb, line 54
def logger_instance
  @instance[:logger] || raise(Kronos::Exception::NoLoggerRegistered)
end
register(id, timestamp, &block) click to toggle source
# File lib/kronos/config_agent.rb, line 12
def register(id, timestamp, &block)
  raise(Kronos::Exception::AlreadyRegisteredId) if @tasks.lazy.map(&:id).include?(id)

  task = Kronos::Task.new(id, timestamp, block)
  tasks.push(task)

  self
end
runner(runner) click to toggle source
# File lib/kronos/config_agent.rb, line 31
def runner(runner)
  @_runner = runner
  @instance[:runner] = nil
  self
end
runner_instance() click to toggle source
# File lib/kronos/config_agent.rb, line 37
def runner_instance
  @instance[:runner] ||= begin
    raise(Kronos::Exception::NoRunnerRegistered) unless _runner

    dependencies = Kronos::Dependencies.new(
      storage: storage_instance,
      logger: logger_instance
    )

    _runner.new(tasks, dependencies)
  end
end
storage(storage, *config) click to toggle source
# File lib/kronos/config_agent.rb, line 21
def storage(storage, *config)
  @instance[:storage] = storage.new(*config)
  self
end
storage_instance() click to toggle source
# File lib/kronos/config_agent.rb, line 50
def storage_instance
  @instance[:storage] || raise(Kronos::Exception::NoStorageRegistered)
end