Class: SplitIoClient::Cache::Repositories::SegmentsRepository

Inherits:
SplitIoClient::Cache::Repository show all
Defined in:
lib/splitclient-rb/cache/repositories/segments_repository.rb

Constant Summary collapse

KEYS_SLICE =
3000

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from SplitIoClient::Cache::Repository

#set_string, #string

Constructor Details

#initialize(adapter) ⇒ SegmentsRepository

Returns a new instance of SegmentsRepository.



9
10
11
12
# File 'lib/splitclient-rb/cache/repositories/segments_repository.rb', line 9

def initialize(adapter)
  @adapter = adapter
  @adapter.set_bool(namespace_key('.ready'), false) unless SplitIoClient.configuration.mode == :consumer
end

Instance Attribute Details

#adapterObject (readonly)

Returns the value of attribute adapter.



7
8
9
# File 'lib/splitclient-rb/cache/repositories/segments_repository.rb', line 7

def adapter
  @adapter
end

Instance Method Details

#add_to_segment(segment) ⇒ Object

Receives segment data, adds and removes segements from the store



15
16
17
18
19
20
21
22
# File 'lib/splitclient-rb/cache/repositories/segments_repository.rb', line 15

def add_to_segment(segment)
  name = segment[:name]

  @adapter.initialize_set(segment_data(name)) unless @adapter.exists?(segment_data(name))

  add_keys(name, segment[:added])
  remove_keys(name, segment[:removed])
end

#clearObject



56
57
58
# File 'lib/splitclient-rb/cache/repositories/segments_repository.rb', line 56

def clear
  @adapter.clear(namespace_key)
end

#get_change_number(name) ⇒ Object



40
41
42
# File 'lib/splitclient-rb/cache/repositories/segments_repository.rb', line 40

def get_change_number(name)
  @adapter.string(namespace_key(".segment.#{name}.till")) || -1
end

#get_segment_keys(name) ⇒ Object



24
25
26
# File 'lib/splitclient-rb/cache/repositories/segments_repository.rb', line 24

def get_segment_keys(name)
  @adapter.get_set(segment_data(name))
end

#in_segment?(name, key) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/splitclient-rb/cache/repositories/segments_repository.rb', line 28

def in_segment?(name, key)
  @adapter.in_set?(segment_data(name), key)
end

#not_ready!Object



48
49
50
# File 'lib/splitclient-rb/cache/repositories/segments_repository.rb', line 48

def not_ready!
  @adapter.set_string(namespace_key('.segments.ready'), -1)
end

#ready!Object



52
53
54
# File 'lib/splitclient-rb/cache/repositories/segments_repository.rb', line 52

def ready!
  @adapter.set_string(namespace_key('.segments.ready'), Time.now.utc.to_i)
end

#ready?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/splitclient-rb/cache/repositories/segments_repository.rb', line 44

def ready?
  @adapter.string(namespace_key('.segments.ready')).to_i != -1
end

#set_change_number(name, last_change) ⇒ Object



36
37
38
# File 'lib/splitclient-rb/cache/repositories/segments_repository.rb', line 36

def set_change_number(name, last_change)
  @adapter.set_string(namespace_key(".segment.#{name}.till"), last_change)
end

#used_segment_namesObject



32
33
34
# File 'lib/splitclient-rb/cache/repositories/segments_repository.rb', line 32

def used_segment_names
  @adapter.get_set(namespace_key('.segments.registered'))
end