Class: Julewire::Core::Execution::SummaryState
- Inherits:
-
Object
- Object
- Julewire::Core::Execution::SummaryState
- Defined in:
- lib/julewire/core/execution/summary_state.rb
Instance Method Summary collapse
- #add(fields, owned: false) ⇒ Object
- #add_attributes(fields, owned: false) ⇒ Object
- #add_neutral(fields, owned: false) ⇒ Object
- #append(key, value) ⇒ Object
- #finalize_record_input(**fields) ⇒ Object
- #increment(key, by: 1) ⇒ Object
- #increment_attribute(path, by: 1) ⇒ Object
-
#initialize(event:, severity:, source:) ⇒ SummaryState
constructor
A new instance of SummaryState.
- #measurement(key) ⇒ Object
- #metrics_hash ⇒ Object
- #non_standard_exception? ⇒ Boolean
- #owned_record_input(**fields) ⇒ Object
- #payload_hash ⇒ Object
- #record_duration(duration_ms) ⇒ Object
- #record_error(error, severity: nil) ⇒ Object
- #record_input(**fields) ⇒ Object
- #record_measurement(measurement, duration_ms) ⇒ Object
Constructor Details
#initialize(event:, severity:, source:) ⇒ SummaryState
Returns a new instance of SummaryState.
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/julewire/core/execution/summary_state.rb', line 10 def initialize(event:, severity:, source:) @event = event @severity = severity @source = source @payload = {} @neutral = {} @attributes = {} @metrics = {} @errors = [] @error_severity = nil @record_input = nil end |
Instance Method Details
#add(fields, owned: false) ⇒ Object
31 32 33 |
# File 'lib/julewire/core/execution/summary_state.rb', line 31 def add(fields, owned: false) merge_fields!(@payload, fields, owned: owned) end |
#add_attributes(fields, owned: false) ⇒ Object
35 36 37 |
# File 'lib/julewire/core/execution/summary_state.rb', line 35 def add_attributes(fields, owned: false) deep_merge_fields!(@attributes, fields, owned: owned) end |
#add_neutral(fields, owned: false) ⇒ Object
39 40 41 |
# File 'lib/julewire/core/execution/summary_state.rb', line 39 def add_neutral(fields, owned: false) deep_merge_fields!(@neutral, fields, owned: owned) end |
#append(key, value) ⇒ Object
61 62 63 64 65 66 67 |
# File 'lib/julewire/core/execution/summary_state.rb', line 61 def append(key, value) key = Fields::Internal.normalize_key(key) current = Fields::FieldSet.value_for(@payload, key, default: MISSING) values = array_value(current, existing: !current.equal?(MISSING)) @payload[key] = values values << Fields::FieldSet.deep_dup(value) end |
#finalize_record_input(**fields) ⇒ Object
100 101 102 |
# File 'lib/julewire/core/execution/summary_state.rb', line 100 def finalize_record_input(**fields) @record_input = build_record_input(**fields) end |
#increment(key, by: 1) ⇒ Object
54 55 56 57 58 59 |
# File 'lib/julewire/core/execution/summary_state.rb', line 54 def increment(key, by: 1) key = Fields::Internal.normalize_key(key) value = Fields::FieldSet.value_for(@payload, key, default: MISSING) existing = !value.equal?(MISSING) @payload[key] = incremented_value(value, by, existing: existing) end |
#increment_attribute(path, by: 1) ⇒ Object
43 44 45 46 47 48 49 50 51 52 |
# File 'lib/julewire/core/execution/summary_state.rb', line 43 def increment_attribute(path, by: 1) path = Fields::Internal.normalize_path(path) raise ArgumentError, "attribute path is required" if path.empty? container = attribute_container(path) key = path.last value = Fields::FieldSet.value_for(container, key, default: MISSING) existing = !value.equal?(MISSING) container[Fields::Internal.normalize_key(key)] = incremented_value(value, by, existing: existing) end |
#measurement(key) ⇒ Object
82 83 84 85 |
# File 'lib/julewire/core/execution/summary_state.rb', line 82 def measurement(key) base = measurement_base(key) Measurement.new(:"#{base}_count", :"#{base}_duration_ms") end |
#metrics_hash ⇒ Object
27 28 29 |
# File 'lib/julewire/core/execution/summary_state.rb', line 27 def metrics_hash Fields::FieldSet.deep_dup(@metrics) end |
#non_standard_exception? ⇒ Boolean
74 75 76 |
# File 'lib/julewire/core/execution/summary_state.rb', line 74 def non_standard_exception? @errors.any? { !it.is_a?(StandardError) } end |
#owned_record_input(**fields) ⇒ Object
96 97 98 |
# File 'lib/julewire/core/execution/summary_state.rb', line 96 def owned_record_input(**fields) @record_input || build_record_input(**fields) end |
#payload_hash ⇒ Object
23 24 25 |
# File 'lib/julewire/core/execution/summary_state.rb', line 23 def payload_hash Fields::FieldSet.deep_dup(@payload) end |
#record_duration(duration_ms) ⇒ Object
78 79 80 |
# File 'lib/julewire/core/execution/summary_state.rb', line 78 def record_duration(duration_ms) @metrics[:duration_ms] = duration_ms end |
#record_error(error, severity: nil) ⇒ Object
69 70 71 72 |
# File 'lib/julewire/core/execution/summary_state.rb', line 69 def record_error(error, severity: nil) @errors << error @error_severity = Records::Severity.normalize(severity) unless severity.nil? end |
#record_input(**fields) ⇒ Object
92 93 94 |
# File 'lib/julewire/core/execution/summary_state.rb', line 92 def record_input(**fields) Fields::FieldSet.deep_dup(owned_record_input(**fields)) end |
#record_measurement(measurement, duration_ms) ⇒ Object
87 88 89 90 |
# File 'lib/julewire/core/execution/summary_state.rb', line 87 def record_measurement(measurement, duration_ms) increment(measurement.count_key) increment_metric(measurement.duration_key, by: duration_ms) end |