Class: SplitIoClient::Api::Segments

Inherits:
Client
  • Object
show all
Defined in:
lib/engine/api/segments.rb

Instance Method Summary collapse

Methods inherited from Client

#call_api

Constructor Details

#initialize(api_key, config, metrics, segments_repository) ⇒ Segments

Returns a new instance of Segments.



4
5
6
7
8
9
# File 'lib/engine/api/segments.rb', line 4

def initialize(api_key, config, metrics, segments_repository)
  @config = config
  @metrics = metrics
  @api_key = api_key
  @segments_repository = segments_repository
end

Instance Method Details

#store_segments_by_names(names) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/engine/api/segments.rb', line 11

def store_segments_by_names(names)
  start = Time.now
  prefix = 'segmentChangeFetcher'

  return if names.nil? || names.empty?

  names.each do |name|
    since = @segments_repository.get_change_number(name)
    while true
      fetch_segments(name, prefix, since).each { |segment| @segments_repository.add_to_segment(segment) }
      @config.logger.debug("Segment #{name} fetched before: #{since}, till: #{@segments_repository.get_change_number(name)}") if @config.debug_enabled

      break if (since.to_i >= @segments_repository.get_change_number(name).to_i)
      since = @segments_repository.get_change_number(name)
    end
  end

  latency = (Time.now - start) * 1000.0
  @metrics.time(prefix + '.time', latency)
end