Class: Kronos::ConfigAgent

Inherits:
Object
  • Object
show all
Defined in:
lib/kronos/config_agent.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfigAgent

Returns a new instance of ConfigAgent.



7
8
9
10
# File 'lib/kronos/config_agent.rb', line 7

def initialize
  @tasks = []
  @instance = {}
end

Instance Attribute Details

#tasksObject (readonly)

Returns the value of attribute tasks.



5
6
7
# File 'lib/kronos/config_agent.rb', line 5

def tasks
  @tasks
end

Instance Method Details

#logger(logger, *config) ⇒ Object



26
27
28
29
# File 'lib/kronos/config_agent.rb', line 26

def logger(logger, *config)
  @instance[:logger] = logger.new(*config)
  self
end

#logger_instanceObject



54
55
56
# File 'lib/kronos/config_agent.rb', line 54

def logger_instance
  @instance[:logger] || raise(Kronos::Exception::NoLoggerRegistered)
end

#register(id, timestamp, &block) ⇒ Object



12
13
14
15
16
17
18
19
# 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) ⇒ Object



31
32
33
34
35
# File 'lib/kronos/config_agent.rb', line 31

def runner(runner)
  @_runner = runner
  @instance[:runner] = nil
  self
end

#runner_instanceObject



37
38
39
40
41
42
43
44
45
46
47
48
# 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) ⇒ Object



21
22
23
24
# File 'lib/kronos/config_agent.rb', line 21

def storage(storage, *config)
  @instance[:storage] = storage.new(*config)
  self
end

#storage_instanceObject



50
51
52
# File 'lib/kronos/config_agent.rb', line 50

def storage_instance
  @instance[:storage] || raise(Kronos::Exception::NoStorageRegistered)
end