Sha256: 2e4312aaf3888e8b69073df1984e1621b000350a8044bc9804321bd12c4704e5

Contents?: true

Size: 1.23 KB

Versions: 6

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true

module SplitIoClient
  module SSE
    module Workers
      class SplitsWorker
        def initialize(adapter, config, splits_repository)
          @adapter = adapter
          @config = config
          @splits_repository = splits_repository
          @queue = Queue.new

          perform_thread

          perform_passenger_forked if defined?(PhusionPassenger)
        end

        def add_to_queue(change_number)
          @queue.push(change_number)
        end

        def kill_split(change_number, split_name, default_treatment)
          @splits_repository.kill(change_number, split_name, default_treatment)
          add_to_queue(change_number)
        end

        private

        def perform
          while (change_number = @queue.pop)
            since = @splits_repository.get_change_number
            @adapter.split_fetcher.fetch_splits unless since >= change_number
          end
        end

        def perform_thread
          @config.threads[:split_update_worker] = Thread.new do
            perform
          end
        end

        def perform_passenger_forked
          PhusionPassenger.on_event(:starting_worker_process) { |forked| perform_thread if forked }
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
splitclient-rb-7.0.4.pre.rc3-java lib/splitclient-rb/sse/workers/splits_worker.rb
splitclient-rb-7.0.4.pre.rc3 lib/splitclient-rb/sse/workers/splits_worker.rb
splitclient-rb-7.0.4.pre.rc2-java lib/splitclient-rb/sse/workers/splits_worker.rb
splitclient-rb-7.0.4.pre.rc2 lib/splitclient-rb/sse/workers/splits_worker.rb
splitclient-rb-7.0.4.pre.rc1-java lib/splitclient-rb/sse/workers/splits_worker.rb
splitclient-rb-7.0.4.pre.rc1 lib/splitclient-rb/sse/workers/splits_worker.rb