Class: Promenade::Client::Rack::QueueTimeDuration

Inherits:
Object
  • Object
show all
Defined in:
lib/promenade/client/rack/queue_time_duration.rb

Constant Summary collapse

REQUEST_START_HEADER =
"HTTP_X_REQUEST_START".freeze
QUEUE_START_HEADER =
"HTTP_X_QUEUE_START".freeze
HEADER_VALUE_MATCHER =
/^(?:t=)(?<timestamp>\d{10}(?:\.\d+))$/

Instance Method Summary collapse

Constructor Details

#initialize(env:, request_received_time: Time.now.utc) ⇒ QueueTimeDuration

Returns a new instance of QueueTimeDuration.



10
11
12
13
14
# File 'lib/promenade/client/rack/queue_time_duration.rb', line 10

def initialize(env:, request_received_time: Time.now.utc)
  @request_enqueued_time = request_enqueued_time_from(env)
  @request_received_time = request_received_time.utc.to_f
  freeze
end

Instance Method Details

#queue_time_secondsObject



16
17
18
19
20
21
22
23
24
# File 'lib/promenade/client/rack/queue_time_duration.rb', line 16

def queue_time_seconds
  # Enqueued time could not be parsed from headers
  return unless request_enqueued_time

  # A negative queue time is not valid
  return if queue_time < 0

  queue_time.round(3)
end