Class: Fairy::PGroupBy::DepqMergeSortBuffer2::StSt
- Inherits:
-
Fairy::PGroupBy::DepqMergeSortBuffer::StSt
- Object
- MergeSortBuffer::StSt
- Fairy::PGroupBy::DepqMergeSortBuffer::StSt
- Fairy::PGroupBy::DepqMergeSortBuffer2::StSt
- Defined in:
- lib/fairy/node/p-group-by.rb
Instance Method Summary collapse
Methods inherited from Fairy::PGroupBy::DepqMergeSortBuffer::StSt
Methods inherited from MergeSortBuffer::StSt
Constructor Details
This class inherits a constructor from Fairy::PGroupBy::DepqMergeSortBuffer::StSt
Instance Method Details
#each(&block) ⇒ Object
668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 |
# File 'lib/fairy/node/p-group-by.rb', line 668 def each(&block) key = @buffers.find_min.first.first values = KeyValueStream.new(key, self) @fiber = Fiber.new{yield values} while buf_min = @buffers.find_min kv, buf = buf_min if key == kv[0] values.concat kv[1] @fiber.resume else values.push_eos @fiber.resume key = kv[0] values = KeyValueStream.new(key, self) @fiber = Fiber.new{yield values} values.concat kv[1] @fiber.resume end unless line = read_line(buf.io) buf.close! @buffers.delete_min next end # @buffers.replace_min [line, buf], line[0] buf_min[0] = line loc = @buffers.find_min_locator loc.update_priority line[0] end values.push_eos @fiber.resume end |