Class: Concurrent::Channel::Buffer::Timer

Inherits:
Base
  • Object
show all
Defined in:
lib/concurrent-ruby-edge/concurrent/channel/buffer/timer.rb

Direct Known Subclasses

Ticker

Instance Attribute Summary

Attributes inherited from Base

#capacity

Instance Method Summary collapse

Methods inherited from Base

#blocking?, #close, #closed?, #empty?, #full?, #initialize, #size

Constructor Details

This class inherits a constructor from Concurrent::Channel::Buffer::Base

Instance Method Details

#nextObject



31
32
33
34
35
36
37
# File 'lib/concurrent-ruby-edge/concurrent/channel/buffer/timer.rb', line 31

def next
  loop do
    tick, more = do_poll
    return tick, more if tick
    Thread.pass
  end
end

#offer(item) ⇒ Object



16
17
18
# File 'lib/concurrent-ruby-edge/concurrent/channel/buffer/timer.rb', line 16

def offer(item)
  false
end

#pollObject



39
40
41
42
43
# File 'lib/concurrent-ruby-edge/concurrent/channel/buffer/timer.rb', line 39

def poll
  tick, _ = do_poll
  tick = Concurrent::NULL unless tick
  tick
end

#put(item) ⇒ Object



12
13
14
# File 'lib/concurrent-ruby-edge/concurrent/channel/buffer/timer.rb', line 12

def put(item)
  false
end

#takeObject



20
21
22
23
24
25
26
27
28
29
# File 'lib/concurrent-ruby-edge/concurrent/channel/buffer/timer.rb', line 20

def take
  loop do
    tick, _ = do_poll
    if tick
      return tick
    else
      Thread.pass
    end
  end
end