Module: Sqreen::RequestRecorder

Included in:
Frameworks::GenericFramework
Defined in:
lib/sqreen/frameworks/request_recorder.rb

Overview

Store event/observations that happened in this request

Instance Method Summary collapse

Instance Method Details

#clean_request_recordObject



44
45
46
47
48
# File 'lib/sqreen/frameworks/request_recorder.rb', line 44

def clean_request_record
  self.only_metric_observation = true
  self.payload_requests = Set.new
  self.observed_items = Hash.new { |hash, key| hash[key] = [] }
end

#close_request_record(queue, observations_queue, payload_creator) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/sqreen/frameworks/request_recorder.rb', line 57

def close_request_record(queue, observations_queue, payload_creator)
  Sqreen.log.debug { "close_request_record called. observed_items: #{observed_items}" }

  clean_request_record if observed_items.nil?
  if Sqreen.features['use_signals'] || only_metric_observation
    push_metrics(observations_queue, queue)
  end

  if only_metric_observation
    clean_request_record
    return
  end

  # signals require request section to be present
  payload_requests << 'request'
  # for signals, response is optional, but the backend team wants them
  payload_requests << 'response'
  payload = payload_creator.payload(payload_requests)
  payload[:observed] = observed_items

  queue.push create_request_record(payload)
  clean_request_record
end

#observe(what, data, accessors = [], report = true) ⇒ Object



50
51
52
53
54
55
# File 'lib/sqreen/frameworks/request_recorder.rb', line 50

def observe(what, data, accessors = [], report = true)
  clean_request_record if observed_items.nil?
  self.only_metric_observation = false if report
  observed_items[what] << data
  payload_requests.merge(accessors)
end

#observed_itemsObject



20
21
22
# File 'lib/sqreen/frameworks/request_recorder.rb', line 20

def observed_items
  SharedStorage.get(:observed_items)
end

#observed_items=(value) ⇒ Object



24
25
26
# File 'lib/sqreen/frameworks/request_recorder.rb', line 24

def observed_items=(value)
  SharedStorage.set(:observed_items, value)
end

#only_metric_observationObject



36
37
38
# File 'lib/sqreen/frameworks/request_recorder.rb', line 36

def only_metric_observation
  SharedStorage.get(:only_metric_observation)
end

#only_metric_observation=(value) ⇒ Object



40
41
42
# File 'lib/sqreen/frameworks/request_recorder.rb', line 40

def only_metric_observation=(value)
  SharedStorage.set(:only_metric_observation, value)
end

#payload_requestsObject



28
29
30
# File 'lib/sqreen/frameworks/request_recorder.rb', line 28

def payload_requests
  SharedStorage.get(:payload_requests)
end

#payload_requests=(value) ⇒ Object



32
33
34
# File 'lib/sqreen/frameworks/request_recorder.rb', line 32

def payload_requests=(value)
  SharedStorage.set(:payload_requests, value)
end