class MockQueue

Attributes

entries[R]
yield_on_pop[R]
yield_on_push[R]

Public Class Methods

new(yield_on_push: false, yield_on_pop: false) click to toggle source
   # File lib/mock-thread/mock-queue.rb
 8 def initialize yield_on_push: false, yield_on_pop: false
 9   @entries = []
10   @yield_on_push = yield_on_push
11   @yield_on_pop = yield_on_pop
12 end

Public Instance Methods

<<(val)
Alias for: push
empty?() click to toggle source
   # File lib/mock-thread/mock-queue.rb
14 def empty?
15   entries.empty?
16 end
pop() click to toggle source
   # File lib/mock-thread/mock-queue.rb
26 def pop
27   begin
28     while @entries.empty?
29       Fiber.yield :block
30     end
31   rescue FiberError => ex
32     raise QueueEmptyError, "queue empty (#{ex.message})"
33   end
34   
35   val = @entries.shift
36   if yield_on_pop
37     Fiber.yield([:pop, val]) rescue FiberError
38   end
39   val
40 end
push(val) click to toggle source
   # File lib/mock-thread/mock-queue.rb
18 def push val
19   @entries << val
20   if yield_on_push
21     Fiber.yield([:push, val]) rescue FiberError
22   end
23 end
Also aliased as: <<