@Override public OClusterBrowsePage nextPage(final long lastPosition) throws IOException { atomicOperationsManager.acquireReadLock(this); try { acquireSharedLock(); try { final OAtomicOperation atomicOperation = OAtomicOperationsManager.getCurrentOperation(); final OClusterPositionMapV0.OClusterPositionEntry[] nextPositions = clusterPositionMap .higherPositionsEntries(lastPosition, atomicOperation); if (nextPositions.length > 0) { final long newLastPosition = nextPositions[nextPositions.length - 1].getPosition(); final List<OClusterBrowseEntry> nexv = new ArrayList<>(); for (final OClusterPositionMapV0.OClusterPositionEntry pos : nextPositions) { final ORawBuffer buff = internalReadRecord(pos.getPosition(), pos.getPage(), pos.getOffset(), 1, atomicOperation); nexv.add(new OClusterBrowseEntry(pos.getPosition(), buff)); } return new OClusterBrowsePage(nexv, newLastPosition); } else { return null; } } finally { releaseSharedLock(); } } finally { atomicOperationsManager.releaseReadLock(this); } } }
@Override public OClusterBrowsePage nextPage(final long lastPosition) throws IOException { atomicOperationsManager.acquireReadLock(this); try { acquireSharedLock(); try { final OAtomicOperation atomicOperation = OAtomicOperationsManager.getCurrentOperation(); final OClusterPositionMapV1.OClusterPositionEntry[] nextPositions = clusterPositionMap .higherPositionsEntries(lastPosition, atomicOperation); if (nextPositions.length > 0) { final long newLastPosition = nextPositions[nextPositions.length - 1].getPosition(); final List<OClusterBrowseEntry> nexv = new ArrayList<>(); for (final OClusterPositionMapV1.OClusterPositionEntry pos : nextPositions) { final ORawBuffer buff = internalReadRecord(pos.getPosition(), pos.getPage(), pos.getOffset(), 1, atomicOperation); nexv.add(new OClusterBrowseEntry(pos.getPosition(), buff)); } return new OClusterBrowsePage(nexv, newLastPosition); } else { return null; } } finally { releaseSharedLock(); } } finally { atomicOperationsManager.releaseReadLock(this); } } }