Sha256: f4c7e45e85cec97d6ef7a1e5df6c082f84d4da4864f3926c134c504e4282de61
Contents?: true
Size: 1.72 KB
Versions: 2
Compression:
Stored size: 1.72 KB
Contents
module SplitIoClient class ImpressionRouter attr_reader :router_thread def initialize(config) @config = config @listener = @config.impression_listener return unless @listener @queue = Queue.new router_thread if defined?(PhusionPassenger) PhusionPassenger.on_event(:starting_worker_process) do |forked| router_thread if forked end end end def add_bulk(impressions) impressions.each do |impression| enqueue( split_name: impression[:i][:f], matching_key: impression[:i][:k], bucketing_key: impression[:i][:b], time: impression[:i][:m], treatment: { label: impression[:i][:r], treatment: impression[:i][:t], change_number: impression[:i][:c] }, previous_time: impression[:i][:pt], attributes: impression[:attributes] ) unless impression.nil? end rescue StandardError => error @config.log_found_exception(__method__.to_s, error) end private def enqueue(impression) @queue.push(impression) if @listener rescue StandardError => error @config.log_found_exception(__method__.to_s, error) end def router_thread @config.threads[:impression_router] = Thread.new do loop do begin @config.logger.warn("THREAD POP loop") impression = @queue.pop @config.logger.warn(impression.to_s) @listener.log(impression) rescue StandardError => error @config.log_found_exception(__method__.to_s, error) end end @config.logger.warn("final router loop thread..") end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
splitclient-rb-7.1.4.pre.rc17-java | lib/splitclient-rb/cache/routers/impression_router.rb |
splitclient-rb-7.1.4.pre.rc17 | lib/splitclient-rb/cache/routers/impression_router.rb |