Class: Smith::Agent::ProviderCallTiming::Timer

Inherits:
Object
  • Object
show all
Defined in:
lib/smith/agent/provider_call_timing.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeTimer

Returns a new instance of Timer.



15
16
17
18
# File 'lib/smith/agent/provider_call_timing.rb', line 15

def initialize
  @started_at = Process.clock_gettime(Process::CLOCK_MONOTONIC)
  @stopped_at = nil
end

Class Method Details

.startObject



11
12
13
# File 'lib/smith/agent/provider_call_timing.rb', line 11

def self.start
  new
end

Instance Method Details

#elapsed_msObject



27
28
29
30
# File 'lib/smith/agent/provider_call_timing.rb', line 27

def elapsed_ms
  ending = @stopped_at || Process.clock_gettime(Process::CLOCK_MONOTONIC)
  ((ending - @started_at) * 1000).round
end

#stopObject

Idempotent: the first stop wins, so a rescue-path stop after a success-path stop cannot stretch the measurement.



22
23
24
25
# File 'lib/smith/agent/provider_call_timing.rb', line 22

def stop
  @stopped_at ||= Process.clock_gettime(Process::CLOCK_MONOTONIC)
  self
end