static IndexHeader read()

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);
    }
  }