Module: Legion::Gaia::TrackerPersistence

Defined in:
lib/legion/gaia/tracker_persistence.rb

Constant Summary collapse

FLUSH_INTERVAL =

5 minutes

300

Class Method Summary collapse

Class Method Details

.flush_all(store: nil) ⇒ Object



33
34
35
36
37
38
39
40
41
42
# File 'lib/legion/gaia/tracker_persistence.rb', line 33

def flush_all(store: nil)
  return unless store

  registered_trackers.each_value do |entry|
    flush_tracker(entry[:tracker], store: store)
  end
  @last_flush_at = Time.now.utc
rescue StandardError => e
  Legion::Logging.warn "TrackerPersistence flush_all error: #{e.message}" if defined?(Legion::Logging)
end

.flush_dirty(store: nil) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/legion/gaia/tracker_persistence.rb', line 19

def flush_dirty(store: nil)
  return unless store

  registered_trackers.each_value do |entry|
    tracker = entry[:tracker]
    next unless tracker.dirty?

    flush_tracker(tracker, store: store)
  end
  @last_flush_at = Time.now.utc
rescue StandardError => e
  Legion::Logging.warn "TrackerPersistence flush_dirty error: #{e.message}" if defined?(Legion::Logging)
end

.hydrate_all(store: nil) ⇒ Object



44
45
46
47
48
49
50
51
52
# File 'lib/legion/gaia/tracker_persistence.rb', line 44

def hydrate_all(store: nil)
  return unless store

  registered_trackers.each_value do |entry|
    entry[:tracker].from_apollo(store: store)
  end
rescue StandardError => e
  Legion::Logging.warn "TrackerPersistence hydrate error: #{e.message}" if defined?(Legion::Logging)
end

.last_flush_atObject



54
55
56
# File 'lib/legion/gaia/tracker_persistence.rb', line 54

def last_flush_at
  @last_flush_at
end

.register_tracker(name, tracker:, tags:) ⇒ Object



10
11
12
13
# File 'lib/legion/gaia/tracker_persistence.rb', line 10

def register_tracker(name, tracker:, tags:)
  @trackers ||= {}
  @trackers[name] = { tracker: tracker, tags: tags }
end

.registered_trackersObject



15
16
17
# File 'lib/legion/gaia/tracker_persistence.rb', line 15

def registered_trackers
  @trackers || {}
end

.reset!Object



64
65
66
67
# File 'lib/legion/gaia/tracker_persistence.rb', line 64

def reset!
  @trackers = {}
  @last_flush_at = nil
end

.should_flush?Boolean

Returns:

  • (Boolean)


58
59
60
61
62
# File 'lib/legion/gaia/tracker_persistence.rb', line 58

def should_flush?
  return true if @last_flush_at.nil?

  (Time.now.utc - @last_flush_at) >= FLUSH_INTERVAL
end