Class: Async::LimitedQueue

Inherits:
Queue
  • Object
show all
Defined in:
lib/async/queue.rb,
lib/async/limited_queue.rb

Overview

A thread-safe queue which limits the number of items that can be enqueued.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Queue

#<<, #async, #close, #closed?, #dequeue, #each, #empty?, #enqueue, #pop, #push, #signal, #size, #wait

Constructor Details

#initialize(limit = 1, **options) ⇒ LimitedQueue

Create a new limited queue.



132
133
134
# File 'lib/async/queue.rb', line 132

def initialize(limit = 1, **options)
	super(**options, delegate: Thread::SizedQueue.new(limit))
end

Instance Attribute Details

#The maximum number of items that can be enqueued.(maximumnumberofitemsthatcanbeenqueued.) ⇒ Object (readonly)



137
138
139
# File 'lib/async/queue.rb', line 137

def limit
	@delegate.max
end

Class Method Details

.newObject



122
123
124
125
126
# File 'lib/async/queue.rb', line 122

def self.new(...)
	warn("`require 'async/limited_queue'` to use `Async::LimitedQueue`.", uplevel: 1, category: :deprecated) if $VERBOSE
	
	super
end

Instance Method Details

#limitObject



137
138
139
# File 'lib/async/queue.rb', line 137

def limit
	@delegate.max
end

#limited?Boolean

Returns:

  • (Boolean)


142
143
144
# File 'lib/async/queue.rb', line 142

def limited?
	!@delegate.closed? && @delegate.size >= @delegate.max
end