Class: LaunchDarkly::Impl::EventSummarizer
- Inherits:
-
Object
- Object
- LaunchDarkly::Impl::EventSummarizer
- Defined in:
- lib/ldclient-rb/impl/event_summarizer.rb
Overview
Manages the state of summarizable information for the EventProcessor, including the event counters and user deduplication. Note that the methods of this class are deliberately not thread-safe; the EventProcessor is responsible for enforcing synchronization across both the summarizer and the event queue.
Defined Under Namespace
Classes: Counter
Instance Method Summary collapse
- #clear ⇒ Object
-
#initialize ⇒ EventSummarizer
constructor
A new instance of EventSummarizer.
-
#snapshot ⇒ Object
Returns a snapshot of the current summarized event data, and resets this state.
-
#summarize_event(event) ⇒ Object
Adds this event to our counters, if it is a type of event we need to count.
Constructor Details
#initialize ⇒ EventSummarizer
Returns a new instance of EventSummarizer.
19 20 21 |
# File 'lib/ldclient-rb/impl/event_summarizer.rb', line 19 def initialize clear end |
Instance Method Details
#clear ⇒ Object
56 57 58 59 60 |
# File 'lib/ldclient-rb/impl/event_summarizer.rb', line 56 def clear @start_date = 0 @end_date = 0 @counters = {} end |
#snapshot ⇒ Object
Returns a snapshot of the current summarized event data, and resets this state.
51 52 53 54 |
# File 'lib/ldclient-rb/impl/event_summarizer.rb', line 51 def snapshot ret = EventSummary.new(@start_date, @end_date, @counters) ret end |
#summarize_event(event) ⇒ Object
Adds this event to our counters, if it is a type of event we need to count.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/ldclient-rb/impl/event_summarizer.rb', line 24 def summarize_event(event) return if !event.is_a?(LaunchDarkly::Impl::EvalEvent) counters_for_flag = @counters[event.key] if counters_for_flag.nil? counters_for_flag = EventSummaryFlagInfo.new(event.default, Hash.new) @counters[event.key] = counters_for_flag end counters_for_flag_version = counters_for_flag.versions[event.version] if counters_for_flag_version.nil? counters_for_flag_version = Hash.new counters_for_flag.versions[event.version] = counters_for_flag_version end variation_counter = counters_for_flag_version[event.variation] if variation_counter.nil? counters_for_flag_version[event.variation] = EventSummaryFlagVariationCounter.new(event.value, 1) else variation_counter.count = variation_counter.count + 1 end time = event. if !time.nil? @start_date = time if @start_date == 0 || time < @start_date @end_date = time if time > @end_date end end |