class LaunchDarkly::EventSummarizer

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.

@private

Public Class Methods

new() click to toggle source
# File lib/ldclient-rb/event_summarizer.rb, line 13
def initialize
  clear
end

Public Instance Methods

clear() click to toggle source
# File lib/ldclient-rb/event_summarizer.rb, line 49
def clear
  @start_date = 0
  @end_date = 0
  @counters = {}
end
snapshot() click to toggle source

Returns a snapshot of the current summarized event data, and resets this state.

# File lib/ldclient-rb/event_summarizer.rb, line 44
def snapshot
  ret = EventSummary.new(@start_date, @end_date, @counters)
  ret
end
summarize_event(event) click to toggle source

Adds this event to our counters, if it is a type of event we need to count.

# File lib/ldclient-rb/event_summarizer.rb, line 18
def summarize_event(event)
  if event[:kind] == "feature"
    counter_key = {
      key: event[:key],
      version: event[:version],
      variation: event[:variation]
    }
    c = @counters[counter_key]
    if c.nil?
      @counters[counter_key] = {
        value: event[:value],
        default: event[:default],
        count: 1
      }
    else
      c[:count] = c[:count] + 1
    end
    time = event[:creationDate]
    if !time.nil?
      @start_date = time if @start_date == 0 || time < @start_date
      @end_date = time if time > @end_date
    end
  end
end