Sha256: 4990e635f97a092cd00e5a5aa37032bb17c5a3f495b9ca91182d34c3e37e02c5
Contents?: true
Size: 1.16 KB
Versions: 59
Compression:
Stored size: 1.16 KB
Contents
require 'thread' require 'timeout' module SplitIoClient module Cache module Stores class SDKBlocker attr_reader :splits_repository attr_writer :splits_thread, :segments_thread def initialize(config, splits_repository, segments_repository) @config = config @splits_repository = splits_repository @segments_repository = segments_repository @splits_repository.not_ready! @segments_repository.not_ready! end def splits_ready! @splits_repository.ready! end def segments_ready! @segments_repository.ready! end def block begin Timeout::timeout(@config.block_until_ready) do sleep 0.1 until ready? end rescue Timeout::Error fail SDKBlockerTimeoutExpiredException, 'SDK start up timeout expired' end @config.logger.info('SplitIO SDK is ready') @splits_thread.run @segments_thread.run end def ready? @splits_repository.ready? && @segments_repository.ready? end end end end end
Version data entries
59 entries across 59 versions & 1 rubygems