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

Version Path
splitclient-rb-5.1.0-java lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.1.0 lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.1.0.pre.rc1-java lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.1.0.pre.rc1 lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.0.3-java lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.0.3 lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.0.3.pre.rc1-java lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.0.3.pre.rc1 lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.0.2-java lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.0.2 lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.0.2.pre.rc1-java lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.0.2.pre.rc1 lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.0.1-java lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.0.1 lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.0.1.pre.rc1-java lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.0.1.pre.rc1 lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.0.0-java lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.0.0 lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.0.0.pre.rc1-java lib/splitclient-rb/cache/stores/sdk_blocker.rb
splitclient-rb-5.0.0.pre.rc1 lib/splitclient-rb/cache/stores/sdk_blocker.rb