class ExternalSortModule::ChunkRandomAccess
A subclass of Chunk
that does not use a sliding window, and instead can contain the entire target length; includes methods for accessing target elements in arbitrary (non-streaming) order
Attributes
num_elements[R]
Public Class Methods
new(target_file, target_offset, target_length, element_size)
click to toggle source
Construct chunk, and read the complete targeted bytes to the buffer
Calls superclass method
ExternalSortModule::Chunk::new
# File lib/geotree/externalsort.rb, line 58 def initialize(target_file, target_offset, target_length, element_size) super(target_file,target_offset,target_length,element_size,target_length) @num_elements = target_length / element_size chunk_size = target_length f = @target_file f.pos = @target_offset @buffer = f.read(chunk_size) raise IOError if !@buffer || @buffer.size != chunk_size end
Public Instance Methods
element(index)
click to toggle source
Get element from chunk @param index of element,
# File lib/geotree/externalsort.rb, line 73 def element(index) raise ArgumentError if index < 0 || index >= num_elements off = index * @element_size [@buffer,off] end
replace_buffer_with(b)
click to toggle source
Replace existing buffer
# File lib/geotree/externalsort.rb, line 80 def replace_buffer_with(b) raise IllegalArgumentException if b.size != @buffer.size @buffer = b end
write()
click to toggle source
Write buffer to target
# File lib/geotree/externalsort.rb, line 86 def write f = @target_file f.pos = @target_end_offset - @target_length bytes_written = f.write(@buffer) raise IOError if @buffer.size != bytes_written end