Sha256: ae04ab2ea6d4ddf72a4093947cf00da8c0911c7c3fd0e87b267e9776d3b7b667

Contents?: true

Size: 749 Bytes

Versions: 3

Compression:

Stored size: 749 Bytes

Contents

# frozen_string_literal: true

class FastlyNsq::PriorityThreadPool < Concurrent::ThreadPoolExecutor
  alias_method :max_threads, :max_length

  def initialize(*)
    super

    @queue = FastlyNsq::PriorityQueue.new(:max)
  end

  # tries to enqueue task
  # @return [true, false] if enqueued
  #
  # @!visibility private
  def ns_enqueue(*args, &task)
    if !ns_limited_queue? || @queue.size < @max_queue
      @queue.push([task, args[1..]], args[0])
      true
    else
      false
    end
  end

  # tries to assign task to a worker, tries to get one from @ready or to create new one
  # @return [true, false] if task is assigned to a worker
  #
  # @!visibility private
  def ns_assign_worker(*args, &task)
    super(args[1..], &task)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fastly_nsq-1.18.1 lib/fastly_nsq/priority_thread_pool.rb
fastly_nsq-1.18.0 lib/fastly_nsq/priority_thread_pool.rb
fastly_nsq-1.17.1 lib/fastly_nsq/priority_thread_pool.rb