public long getFrom(int index) throws IOException { final int segmentIndex = index / maximumEntriesPerSegment; final int relativeIndex = index % maximumEntriesPerSegment; return getSegment(segmentIndex).getFrom(relativeIndex); }
public int getHash(int index) throws IOException { final int segmentIndex = index / maximumEntriesPerSegment; final int relativeIndex = index % maximumEntriesPerSegment; return getSegment(segmentIndex).getHash(relativeIndex); }
public int getLength(int index) throws IOException { final int segmentIndex = index / maximumEntriesPerSegment; final int relativeIndex = index % maximumEntriesPerSegment; return getSegment(segmentIndex).getLength(relativeIndex); }
private QSequenceLineFileSystemCacheSegment getSegment(int segmentIndex) throws IOException { if (segmentIndex >= segments.size()) { final QSequenceLineFileSystemCacheSegment segment = new QSequenceLineFileSystemCacheSegment(segmentIndex, maximumEntriesPerSegment); segments.add(segment); memorySegments.add(0, segment); maybeUnloadSegments(); return segment; } final QSequenceLineFileSystemCacheSegment segment = (QSequenceLineFileSystemCacheSegment)segments.get(segmentIndex); if (!segment.isLoaded()) { segment.load(getFile()); memorySegments.add(0, segment); maybeUnloadSegments(); } return segment; }
public QSequenceLineFileSystemCacheSegments(QSequenceLineTempDirectoryFactory tempDirectoryFactory, int maximumBytesInMemory, int segmentBytesSize) { QSequenceAssert.assertTrue(segmentBytesSize >= QSequenceLineMedia.SEGMENT_ENTRY_SIZE); QSequenceAssert.assertTrue(maximumBytesInMemory >= segmentBytesSize); this.tempDirectoryFactory = tempDirectoryFactory; this.maximumEntriesPerSegment = segmentBytesSize / QSequenceLineMedia.SEGMENT_ENTRY_SIZE; this.maximumSegmentsInMemory = maximumBytesInMemory / (maximumEntriesPerSegment * QSequenceLineMedia.SEGMENT_ENTRY_SIZE); this.segments = new ArrayList(); this.memorySegments = new LinkedList(); final QSequenceLineFileSystemCacheSegment segment = new QSequenceLineFileSystemCacheSegment(0, maximumEntriesPerSegment); segments.add(segment); memorySegments.add(segment); }
public void setFromLengthHash(int index, long from, int length, int hash) throws IOException { final int segmentIndex = index / maximumEntriesPerSegment; final int relativeIndex = index % maximumEntriesPerSegment; final QSequenceLineFileSystemCacheSegment segment = getSegment(segmentIndex); segment.setFromLengthHash(relativeIndex, from, length, hash); }
private void maybeUnloadSegments() throws IOException { while (memorySegments.size() > maximumSegmentsInMemory) { final QSequenceLineFileSystemCacheSegment segment = (QSequenceLineFileSystemCacheSegment)memorySegments.remove(memorySegments.size() - 1); segment.unload(getFile()); } }
private QSequenceLineFileSystemCacheSegment getSegment(int segmentIndex) throws IOException { if (segmentIndex >= segments.size()) { final QSequenceLineFileSystemCacheSegment segment = new QSequenceLineFileSystemCacheSegment(segmentIndex, maximumEntriesPerSegment); segments.add(segment); memorySegments.add(0, segment); maybeUnloadSegments(); return segment; } final QSequenceLineFileSystemCacheSegment segment = (QSequenceLineFileSystemCacheSegment)segments.get(segmentIndex); if (!segment.isLoaded()) { segment.load(getFile()); memorySegments.add(0, segment); maybeUnloadSegments(); } return segment; }
public QSequenceLineFileSystemCacheSegments(QSequenceLineTempDirectoryFactory tempDirectoryFactory, int maximumBytesInMemory, int segmentBytesSize) { QSequenceAssert.assertTrue(segmentBytesSize >= QSequenceLineMedia.SEGMENT_ENTRY_SIZE); QSequenceAssert.assertTrue(maximumBytesInMemory >= segmentBytesSize); this.tempDirectoryFactory = tempDirectoryFactory; this.maximumEntriesPerSegment = segmentBytesSize / QSequenceLineMedia.SEGMENT_ENTRY_SIZE; this.maximumSegmentsInMemory = maximumBytesInMemory / (maximumEntriesPerSegment * QSequenceLineMedia.SEGMENT_ENTRY_SIZE); this.segments = new ArrayList(); this.memorySegments = new LinkedList(); final QSequenceLineFileSystemCacheSegment segment = new QSequenceLineFileSystemCacheSegment(0, maximumEntriesPerSegment); segments.add(segment); memorySegments.add(segment); }
public void setFromLengthHash(int index, long from, int length, int hash) throws IOException { final int segmentIndex = index / maximumEntriesPerSegment; final int relativeIndex = index % maximumEntriesPerSegment; final QSequenceLineFileSystemCacheSegment segment = getSegment(segmentIndex); segment.setFromLengthHash(relativeIndex, from, length, hash); }
private void maybeUnloadSegments() throws IOException { while (memorySegments.size() > maximumSegmentsInMemory) { final QSequenceLineFileSystemCacheSegment segment = (QSequenceLineFileSystemCacheSegment)memorySegments.remove(memorySegments.size() - 1); segment.unload(getFile()); } }
private QSequenceLineFileSystemCacheSegment getSegment(int segmentIndex) throws IOException { if (segmentIndex >= segments.size()) { final QSequenceLineFileSystemCacheSegment segment = new QSequenceLineFileSystemCacheSegment(segmentIndex, maximumEntriesPerSegment); segments.add(segment); memorySegments.add(0, segment); maybeUnloadSegments(); return segment; } final QSequenceLineFileSystemCacheSegment segment = (QSequenceLineFileSystemCacheSegment)segments.get(segmentIndex); if (!segment.isLoaded()) { segment.load(getFile()); memorySegments.add(0, segment); maybeUnloadSegments(); } return segment; }
public int getLength(int index) throws IOException { final int segmentIndex = index / maximumEntriesPerSegment; final int relativeIndex = index % maximumEntriesPerSegment; return getSegment(segmentIndex).getLength(relativeIndex); }
public QSequenceLineFileSystemCacheSegments(QSequenceLineTempDirectoryFactory tempDirectoryFactory, int maximumBytesInMemory, int segmentBytesSize) { QSequenceAssert.assertTrue(segmentBytesSize >= QSequenceLineMedia.SEGMENT_ENTRY_SIZE); QSequenceAssert.assertTrue(maximumBytesInMemory >= segmentBytesSize); this.tempDirectoryFactory = tempDirectoryFactory; this.maximumEntriesPerSegment = segmentBytesSize / QSequenceLineMedia.SEGMENT_ENTRY_SIZE; this.maximumSegmentsInMemory = maximumBytesInMemory / (maximumEntriesPerSegment * QSequenceLineMedia.SEGMENT_ENTRY_SIZE); this.segments = new ArrayList(); this.memorySegments = new LinkedList(); final QSequenceLineFileSystemCacheSegment segment = new QSequenceLineFileSystemCacheSegment(0, maximumEntriesPerSegment); segments.add(segment); memorySegments.add(segment); }
public void setFromLengthHash(int index, long from, int length, int hash) throws IOException { final int segmentIndex = index / maximumEntriesPerSegment; final int relativeIndex = index % maximumEntriesPerSegment; final QSequenceLineFileSystemCacheSegment segment = getSegment(segmentIndex); segment.setFromLengthHash(relativeIndex, from, length, hash); }
public int getHash(int index) throws IOException { final int segmentIndex = index / maximumEntriesPerSegment; final int relativeIndex = index % maximumEntriesPerSegment; return getSegment(segmentIndex).getHash(relativeIndex); }
private void maybeUnloadSegments() throws IOException { while (memorySegments.size() > maximumSegmentsInMemory) { final QSequenceLineFileSystemCacheSegment segment = (QSequenceLineFileSystemCacheSegment)memorySegments.remove(memorySegments.size() - 1); segment.unload(getFile()); } }
public long getFrom(int index) throws IOException { final int segmentIndex = index / maximumEntriesPerSegment; final int relativeIndex = index % maximumEntriesPerSegment; return getSegment(segmentIndex).getFrom(relativeIndex); }
private QSequenceLineFileSystemCacheSegment getSegment(int segmentIndex) throws IOException { if (segmentIndex >= segments.size()) { final QSequenceLineFileSystemCacheSegment segment = new QSequenceLineFileSystemCacheSegment(segmentIndex, maximumEntriesPerSegment); segments.add(segment); memorySegments.add(0, segment); maybeUnloadSegments(); return segment; } final QSequenceLineFileSystemCacheSegment segment = (QSequenceLineFileSystemCacheSegment)segments.get(segmentIndex); if (!segment.isLoaded()) { segment.load(getFile()); memorySegments.add(0, segment); maybeUnloadSegments(); } return segment; }
public int getLength(int index) throws IOException { final int segmentIndex = index / maximumEntriesPerSegment; final int relativeIndex = index % maximumEntriesPerSegment; return getSegment(segmentIndex).getLength(relativeIndex); }