Class: EventMachine::Iterator

Inherits:
Object
  • Object
show all
Defined in:
lib/em/iterator.rb

Instance Method Summary collapse

Constructor Details

#initialize(container) ⇒ Iterator

Returns a new instance of Iterator.



4
5
6
# File 'lib/em/iterator.rb', line 4

def initialize(container)
  @container = container
end

Instance Method Details

#each(work, done = proc{}) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/em/iterator.rb', line 8

def each(work, done=proc{})
  do_work = proc {
    if @container && !@container.empty?
      work.call(@container.shift)
      EM.next_tick(&do_work)
    else
      done.call
    end
  }
  EM.next_tick(&do_work)
end

#map(work, done = proc{}) ⇒ Object



20
21
22
23
24
25
# File 'lib/em/iterator.rb', line 20

def map(work, done=proc{})
  mapped = []
  map_work = proc { |n| mapped << work.call(n) }
  map_done = proc { done.call(mapped) }
  each(map_work, map_done)
end