Class: ThrottleQueue::PriorityQueue

Inherits:
Object
  • Object
show all
Defined in:
lib/throttle-queue/single-process.rb

Overview

:nodoc: all

Instance Method Summary collapse

Constructor Details

#initializePriorityQueue

Returns a new instance of PriorityQueue.



164
165
166
167
168
169
170
# File 'lib/throttle-queue/single-process.rb', line 164

def initialize
	@mutex = Mutex.new
	@fg = []
	@bg = []
	@received = ConditionVariable.new
	@shutdown = false
end

Instance Method Details

#background(id) ⇒ Object



187
188
189
190
191
192
193
194
# File 'lib/throttle-queue/single-process.rb', line 187

def background(id)
	@mutex.synchronize {
		unless @shutdown || @bg.include?(id)
			@bg << id
			@received.signal
		end
	}
end

#empty?Boolean

Returns:

  • (Boolean)


181
182
183
184
185
# File 'lib/throttle-queue/single-process.rb', line 181

def empty?
	@mutex.synchronize {
		@fg.empty? and @bg.empty?
	}
end

#foreground(id) ⇒ Object



196
197
198
199
200
201
202
203
204
205
206
207
# File 'lib/throttle-queue/single-process.rb', line 196

def foreground(id)
	@mutex.synchronize {
		unless @shutdown || @fg.include?(id)
			@fg << id
			if @bg.include?(id)
				@bg.delete id
			else
				@received.signal
			end
		end
	}
end

#popObject



209
210
211
212
213
214
215
216
217
218
219
220
221
222
# File 'lib/throttle-queue/single-process.rb', line 209

def pop
	@mutex.synchronize {
		if @fg.empty? and @bg.empty?
			@received.wait(@mutex) unless @shutdown
		end

		if @shutdown
		elsif ! @fg.empty?
			@fg.shift
		else
			@bg.shift
		end
	}
end

#shutdownObject



172
173
174
175
# File 'lib/throttle-queue/single-process.rb', line 172

def shutdown
	@shutdown = true
	@received.signal
end

#shutdown?Boolean

Returns:

  • (Boolean)


177
178
179
# File 'lib/throttle-queue/single-process.rb', line 177

def shutdown?
	@shutdown
end