Class: ExternalSortModule::ChunkReader
- Defined in:
- lib/geotree/externalsort.rb
Overview
Chunk subclass that performs streaming reading of target with sliding window
Instance Method Summary collapse
-
#initialize(target_file, target_offset, target_length, element_size, chunk_size = MAX_CHUNK_SIZE_) ⇒ ChunkReader
constructor
A new instance of ChunkReader.
-
#peek ⇒ array, offset
Get next element.
-
#peek_dump ⇒ Object
Display record being viewed using hex dump.
-
#read ⇒ array, offset
Read next element, advance pointers.
Methods inherited from Chunk
Constructor Details
#initialize(target_file, target_offset, target_length, element_size, chunk_size = MAX_CHUNK_SIZE_) ⇒ ChunkReader
Returns a new instance of ChunkReader.
98 99 100 |
# File 'lib/geotree/externalsort.rb', line 98 def initialize(target_file, target_offset, target_length, element_size, chunk_size = MAX_CHUNK_SIZE_) super(target_file,target_offset,target_length,element_size, chunk_size) end |
Instance Method Details
#peek ⇒ array, offset
Get next element
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/geotree/externalsort.rb', line 112 def peek nil if done # If no more elements exist in the buffer, fill it from the target if @buffer_offset == @buffer.size max_size = @max_chunk_size chunk_size = [@target_end_offset - @target_offset, max_size].min f = @target_file f.pos = @target_offset @buffer = f.read(chunk_size) raise IOError if !@buffer || @buffer.size != chunk_size @target_offset += chunk_size @buffer_offset = 0 end [@buffer, @buffer_offset] end |
#peek_dump ⇒ Object
Display record being viewed using hex dump
103 104 105 106 107 108 |
# File 'lib/geotree/externalsort.rb', line 103 def peek_dump "(done)" if done buff, off = peek "Next element: "+hex_dump_to_string(buff,nil,off,@element_size) end |
#read ⇒ array, offset
Read next element, advance pointers
135 136 137 138 139 140 |
# File 'lib/geotree/externalsort.rb', line 135 def read ret = peek raise IllegalStateException if !ret @buffer_offset += @element_size ret end |