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:) ⇒ Object
- #add_attributes(fields, owned:) ⇒ Object
- #add_neutral(fields, owned:) ⇒ Object
- #append(key, value) ⇒ Object
- #finalize_record_input(**fields) ⇒ Object
- #increment(key, by: 1) ⇒ Object
- #increment_attribute(path, by:) ⇒ 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:) ⇒ 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 |
# 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 = [] end |
Instance Method Details
#add(fields, owned:) ⇒ Object
29 30 31 |
# File 'lib/julewire/core/execution/summary_state.rb', line 29 def add(fields, owned:) merge_fields!(@payload, fields, owned: owned) end |
#add_attributes(fields, owned:) ⇒ Object
33 34 35 |
# File 'lib/julewire/core/execution/summary_state.rb', line 33 def add_attributes(fields, owned:) deep_merge_fields!(@attributes, fields, owned: owned) end |
#add_neutral(fields, owned:) ⇒ Object
37 38 39 |
# File 'lib/julewire/core/execution/summary_state.rb', line 37 def add_neutral(fields, owned:) deep_merge_fields!(@neutral, fields, owned: owned) end |
#append(key, value) ⇒ Object
59 60 61 62 63 64 65 |
# File 'lib/julewire/core/execution/summary_state.rb', line 59 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
98 99 100 |
# File 'lib/julewire/core/execution/summary_state.rb', line 98 def finalize_record_input(**fields) @record_input = build_record_input(**fields) end |
#increment(key, by: 1) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/julewire/core/execution/summary_state.rb', line 52 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:) ⇒ Object
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/julewire/core/execution/summary_state.rb', line 41 def increment_attribute(path, by:) 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[key] = incremented_value(value, by, existing: existing) end |
#measurement(key) ⇒ Object
80 81 82 83 |
# File 'lib/julewire/core/execution/summary_state.rb', line 80 def measurement(key) base = measurement_base(key) Measurement.new(:"#{base}_count", :"#{base}_duration_ms") end |
#metrics_hash ⇒ Object
25 26 27 |
# File 'lib/julewire/core/execution/summary_state.rb', line 25 def metrics_hash Fields::FieldSet.deep_dup_owned(@metrics) end |
#non_standard_exception? ⇒ Boolean
72 73 74 |
# File 'lib/julewire/core/execution/summary_state.rb', line 72 def non_standard_exception? @errors.any? { !it.is_a?(StandardError) } end |
#owned_record_input(**fields) ⇒ Object
94 95 96 |
# File 'lib/julewire/core/execution/summary_state.rb', line 94 def owned_record_input(**fields) @record_input || build_record_input(**fields) end |
#payload_hash ⇒ Object
21 22 23 |
# File 'lib/julewire/core/execution/summary_state.rb', line 21 def payload_hash Fields::FieldSet.deep_dup_owned(@payload) end |
#record_duration(duration_ms) ⇒ Object
76 77 78 |
# File 'lib/julewire/core/execution/summary_state.rb', line 76 def record_duration(duration_ms) @metrics[:duration_ms] = duration_ms end |
#record_error(error, severity:) ⇒ Object
67 68 69 70 |
# File 'lib/julewire/core/execution/summary_state.rb', line 67 def record_error(error, severity:) @errors << error @error_severity = Records::Severity.normalize(severity) unless severity.nil? end |
#record_input(**fields) ⇒ Object
90 91 92 |
# File 'lib/julewire/core/execution/summary_state.rb', line 90 def record_input(**fields) Fields::FieldSet.deep_dup_owned(owned_record_input(**fields)) end |
#record_measurement(measurement, duration_ms) ⇒ Object
85 86 87 88 |
# File 'lib/julewire/core/execution/summary_state.rb', line 85 def record_measurement(measurement, duration_ms) increment(measurement.count_key) increment_metric(measurement.duration_key, by: duration_ms) end |