in activeio-core/src/main/java/org/apache/activeio/journal/active/LogFileManager.java [422:451]
public Location getNextDataRecordLocation(Location lastLocation) throws IOException, InvalidRecordLocationException {
RecordInfo ri = readRecordInfo(lastLocation);
while (true) {
int logFileId = ri.getLocation().getLogFileId();
int offset = ri.getNextLocation();
// Are we overflowing into next logFile?
if (offset >= ri.getLogFileState().getAppendOffset()) {
LogFileNode nextActive = ri.getLogFileState().getNextActive();
if (nextActive == null || nextActive.getId() <= ri.getLogFileState().getId() ) {
return null;
}
logFileId = nextActive.getId();
offset = 0;
}
try {
ri = readRecordInfo(new Location(logFileId, offset));
} catch (InvalidRecordLocationException e) {
return null;
}
// Is the next record the right record type?
if (ri.getHeader().getRecordType() == DATA_RECORD_TYPE) {
return ri.getLocation();
}
// No? go onto the next record.
}
}