class SplitIoClient::Cache::Repositories::SegmentsRepository
def add_keys(name, keys)
def add_keys(name, keys) keys.each_slice(KEYS_SLICE) do |keys_slice| @adapter.add_to_set(segment_data(name), keys_slice) end end
def add_to_segment(segment)
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
def clear
def clear @adapter.clear(namespace_key) end
def get_change_number(name)
def get_change_number(name) @adapter.string(namespace_key(".segment.#{name}.till")) || -1 end
def get_segment_keys(name)
def get_segment_keys(name) @adapter.get_set(segment_data(name)) end
def in_segment?(name, key)
def in_segment?(name, key) @adapter.in_set?(segment_data(name), key) end
def initialize(config)
def initialize(config) super(config) @adapter = case @config.cache_adapter.class.to_s when 'SplitIoClient::Cache::Adapters::RedisAdapter' SplitIoClient::Cache::Adapters::CacheAdapter.new(@config) else @config.cache_adapter end @adapter.set_bool(namespace_key('.ready'), false) unless @config.mode.equal?(:consumer) end
def not_ready!
def not_ready! @adapter.set_string(namespace_key('.segments.ready'), -1) end
def ready!
def ready! @adapter.set_string(namespace_key('.segments.ready'), Time.now.utc.to_i) end
def ready?
def ready? @adapter.string(namespace_key('.segments.ready')).to_i != -1 end
def remove_keys(name, keys)
def remove_keys(name, keys) keys.each_slice(KEYS_SLICE) do |keys_slice| @adapter.delete_from_set(segment_data(name), keys_slice) end end
def segment_data(name)
def segment_data(name) namespace_key(".segment.#{name}") end
def segment_keys_count
def segment_keys_count names = used_segment_names keys = 0 names.each do |name| segment_keys = get_segment_keys(name) keys += segment_keys.length end keys rescue StandardError => e @config.log_found_exception(__method__.to_s, e) 0 end
def segments_count
def segments_count used_segment_names.length end
def set_change_number(name, last_change)
def set_change_number(name, last_change) @adapter.set_string(namespace_key(".segment.#{name}.till"), last_change) end
def used_segment_names
def used_segment_names @adapter.get_set(namespace_key('.segments.registered')) end