Class: ExternalSortModule::Chunk
- Inherits:
-
Object
- Object
- ExternalSortModule::Chunk
- Defined in:
- lib/geotree/externalsort.rb
Overview
Base class for chunking file access. Essentially a buffer that acts as a sliding window into a binary file.
Direct Known Subclasses
Instance Method Summary collapse
- #done ⇒ Object
-
#initialize(target_file, target_offset, target_length, element_size, chunk_size = MAX_CHUNK_SIZE_) ⇒ Chunk
constructor
Constructor.
- #set_chunk_size(n) ⇒ Object
Constructor Details
#initialize(target_file, target_offset, target_length, element_size, chunk_size = MAX_CHUNK_SIZE_) ⇒ Chunk
Constructor
24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/geotree/externalsort.rb', line 24 def initialize(target_file, target_offset, target_length, element_size, chunk_size = MAX_CHUNK_SIZE_) @target_file = target_file @target_offset = target_offset @target_length = target_length @target_end_offset = target_offset + target_length @element_size = element_size raise ArgumentError if target_length % element_size != 0 set_chunk_size(chunk_size) @buffer = [] @buffer_offset = 0 end |
Instance Method Details
#done ⇒ Object
45 46 47 |
# File 'lib/geotree/externalsort.rb', line 45 def done @buffer_offset == @buffer.size && @target_offset == @target_end_offset end |
#set_chunk_size(n) ⇒ Object
39 40 41 42 43 |
# File 'lib/geotree/externalsort.rb', line 39 def set_chunk_size(n) n -= (n % @element_size) raise ArgumentError if n <= 0 @max_chunk_size = [n,@target_length].min end |