Class: Diagnostics::Sample::Controls::Clock::Incrementing

Inherits:
Object
  • Object
show all
Defined in:
lib/diagnostics/sample/controls/clock.rb

Defined Under Namespace

Modules: Defaults

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#elapsed_secondsObject



10
11
12
# File 'lib/diagnostics/sample/controls/clock.rb', line 10

def elapsed_seconds
  @elapsed_seconds ||= 0
end

Class Method Details

.build(interval: nil, start_time: nil) ⇒ Object



17
18
19
20
21
22
23
24
# File 'lib/diagnostics/sample/controls/clock.rb', line 17

def self.build(interval: nil, start_time: nil)
  interval ||= Defaults.interval_seconds
  start_time ||= Defaults.start_time

  interval_nanoseconds = interval * 1_000_000

  new(start_time, interval_nanoseconds)
end

.example(**args) ⇒ Object



26
27
28
# File 'lib/diagnostics/sample/controls/clock.rb', line 26

def self.example(**args)
  build(**args)
end

Instance Method Details

#nextObject Also known as: now



30
31
32
33
34
35
36
# File 'lib/diagnostics/sample/controls/clock.rb', line 30

def next
  offset = elapsed_seconds

  self.elapsed_seconds += interval_nanoseconds

  start_time_nanoseconds + offset
end

#start_time_nanosecondsObject



38
39
40
# File 'lib/diagnostics/sample/controls/clock.rb', line 38

def start_time_nanoseconds
  start_time.to_i * 1_000_000
end