Sha256: 19a6689b47c61234fb8822e01ba56d81e46b0012d868140c27e201520e66f99b

Contents?: true

Size: 426 Bytes

Versions: 2

Compression:

Stored size: 426 Bytes

Contents

module EventMachine
  module Synchrony

    class FiberIterator < EM::Synchrony::Iterator

      # execute each iterator block within its own fiber
      # and auto-advance the iterator after each call
      def each(foreach=nil, after=nil, &blk)
        fe = Proc.new do |obj, iter|
          Fiber.new { (foreach || blk).call(obj, iter); iter.next }.resume
        end

        super(fe, after)
      end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
em-synchrony-1.0.6 lib/em-synchrony/fiber_iterator.rb
em-synchrony-1.0.5 lib/em-synchrony/fiber_iterator.rb