in src/main/java/com/spotify/sparkey/IndexHeader.java [68:103]
static IndexHeader 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 index 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);
int hashSeed = Util.readLittleEndianInt(inputStream);
long dataEnd = Util.readLittleEndianLong(inputStream);
long maxKeyLen = Util.readLittleEndianLong(inputStream);
long maxValueLen = Util.readLittleEndianLong(inputStream);
long numPuts = Util.readLittleEndianLong(inputStream);
long garbageSize = Util.readLittleEndianLong(inputStream);
long numEntries = Util.readLittleEndianLong(inputStream);
int addressSize = Util.readLittleEndianInt(inputStream);
int hashSize = Util.readLittleEndianInt(inputStream);
long hashCapacity = Util.readLittleEndianLong(inputStream);
long maxDisplacement = Util.readLittleEndianLong(inputStream);
int entryBlockBits = Util.readLittleEndianInt(inputStream);
long hashCollisions = Util.readLittleEndianLong(inputStream);
long totalDisplacement = Util.readLittleEndianLong(inputStream);
return new IndexHeader(majorVersion, minorVersion, fileIdentifier, hashSeed, dataEnd, maxKeyLen, maxValueLen, garbageSize, numEntries, addressSize, hashSize, hashCapacity, maxDisplacement,
numPuts, entryBlockBits, hashCollisions, totalDisplacement);
}
}