in src/main/java/com/spotify/sparkey/LogHeader.java [55:88]
static LogHeader read(File file) throws IOException {
try (FileInputStream inputStream = new FileInputStream(file)) {
int magicNumber = Util.readLittleEndianInt(inputStream);
if (magicNumber != MAGIC_NUMBER) {
throw new IOException("File is not a Sparkey log file: " + file);
}
int majorVersion = Util.readLittleEndianInt(inputStream);
if (majorVersion != MAJOR_VERSION) {
throw new IOException(String.format("Incompatible major version. Expected %d, but got %d: ", MAJOR_VERSION, majorVersion));
}
int minorVersion = Util.readLittleEndianInt(inputStream);
if (minorVersion > MINOR_VERSION) {
throw new IOException(String.format("Incompatible minor version. Can handle up to version %d, but got %d: ", MINOR_VERSION, minorVersion));
}
int fileIdentifier = Util.readLittleEndianInt(inputStream);
long numPuts = Util.readLittleEndianLong(inputStream);
long numDeletes = Util.readLittleEndianLong(inputStream);
long dataEnd = Util.readLittleEndianLong(inputStream);
long maxKeyLen = Util.readLittleEndianLong(inputStream);
long maxValueLen = Util.readLittleEndianLong(inputStream);
long deleteSize = Util.readLittleEndianLong(inputStream);
int compressionType = Util.readLittleEndianInt(inputStream);
int compressionBlockSize = Util.readLittleEndianInt(inputStream);
long putSize = Util.readLittleEndianLong(inputStream);
int maxEntriesPerBlock = Util.readLittleEndianInt(inputStream);
if (dataEnd > file.length()) {
throw new IOException("Corrupt log file '" + file.toString() + "': expected at least " + dataEnd + " size but was " + file.length());
}
return new LogHeader(majorVersion, minorVersion, fileIdentifier, numPuts, numDeletes, dataEnd, maxKeyLen, maxValueLen, deleteSize, CompressionType.values()[compressionType], compressionBlockSize, putSize,
maxEntriesPerBlock);
}
}