Class: Dynflow::RoundRobin
- Inherits:
-
Object
- Object
- Dynflow::RoundRobin
- Defined in:
- lib/dynflow/round_robin.rb
Overview
A simple round-robin scheduling implementation used at various places in Dynflow
Instance Attribute Summary collapse
-
#data ⇒ Object
writeonly
the
addanddeletemethods should be preferred, but sometimes the list of things to iterate though can not be owned by the round robin object itself.
Instance Method Summary collapse
- #add(item) ⇒ Object
- #delete(item) ⇒ Object
- #empty? ⇒ Boolean
-
#initialize ⇒ RoundRobin
constructor
A new instance of RoundRobin.
- #next ⇒ Object
Constructor Details
#initialize ⇒ RoundRobin
Returns a new instance of RoundRobin.
6 7 8 9 |
# File 'lib/dynflow/round_robin.rb', line 6 def initialize @data = [] @cursor = 0 end |
Instance Attribute Details
#data=(value) ⇒ Object (writeonly)
the add and delete methods should be preferred, but sometimes the list of things to iterate though can not be owned by the round robin object itself
35 36 37 |
# File 'lib/dynflow/round_robin.rb', line 35 def data=(value) @data = value end |
Instance Method Details
#add(item) ⇒ Object
11 12 13 14 |
# File 'lib/dynflow/round_robin.rb', line 11 def add(item) @data.push item self end |
#delete(item) ⇒ Object
16 17 18 19 |
# File 'lib/dynflow/round_robin.rb', line 16 def delete(item) @data.delete item self end |
#empty? ⇒ Boolean
28 29 30 |
# File 'lib/dynflow/round_robin.rb', line 28 def empty? @data.empty? end |
#next ⇒ Object
21 22 23 24 25 26 |
# File 'lib/dynflow/round_robin.rb', line 21 def next @cursor = 0 if @cursor > @data.size-1 @data[@cursor] ensure @cursor += 1 end |