Class: Flydata::SourceMysql::Parser::AsyncIO
- Inherits:
-
Object
- Object
- Flydata::SourceMysql::Parser::AsyncIO
- Defined in:
- lib/flydata/source_mysql/parser/dump_parser.rb
Overview
Read and buffer data in a separate thread
Constant Summary collapse
- MAX_ITEMS =
200
Instance Method Summary collapse
- #close ⇒ Object
- #eof? ⇒ Boolean
-
#initialize(io, options = {}) ⇒ AsyncIO
constructor
A new instance of AsyncIO.
- #pos ⇒ Object
- #readline ⇒ Object
Constructor Details
#initialize(io, options = {}) ⇒ AsyncIO
Returns a new instance of AsyncIO.
656 657 658 659 660 661 662 663 664 |
# File 'lib/flydata/source_mysql/parser/dump_parser.rb', line 656 def initialize(io, = {}) max_items = [:max_items] ? [:max_items] : MAX_ITEMS @io = io @queue = SizedQueue.new(max_items) _readline @last = @queue.shift @stop = false @thread = Thread.new(&method(:run)) end |
Instance Method Details
#close ⇒ Object
684 685 686 687 688 689 690 |
# File 'lib/flydata/source_mysql/parser/dump_parser.rb', line 684 def close @stop = true # remove an item if the queue is full. Otherwise, the thread will not # wake up. @queue.shift if @queue.size == @queue.max @thread.join end |
#eof? ⇒ Boolean
680 681 682 |
# File 'lib/flydata/source_mysql/parser/dump_parser.rb', line 680 def eof? @last[:eof] end |
#pos ⇒ Object
676 677 678 |
# File 'lib/flydata/source_mysql/parser/dump_parser.rb', line 676 def pos @last[:pos] end |
#readline ⇒ Object
666 667 668 669 670 671 672 673 674 |
# File 'lib/flydata/source_mysql/parser/dump_parser.rb', line 666 def readline if @last[:eof] raise EOFError.new("end of file reached") else result = @last[:line] @last = @queue.shift result end end |