in disk.go [31:72]
func OpenReadOnlyFromPath(path string) (*Disk, error) {
rdr, err := os.Open(path)
if err != nil {
return nil, err
}
// read header
var h QFHeader
if err = binary.Read(rdr, binary.LittleEndian, &h); err != nil {
return nil, err
}
var ext Disk
ext.f = rdr
ext.entries = h.Entries
ext.rBits, ext.rMask, ext.size = initForQuotientBits(uint(h.QBits))
ext.storageBits = uint(h.StorageBits)
if h.BitPacked {
ext.filterRead, err = initPackedDiskReader(rdr)
if err != nil {
return nil, err
}
if h.StorageBits > 0 {
ext.storageRead, err = initPackedDiskReader(rdr)
if err != nil {
return nil, err
}
}
} else {
ext.filterRead, err = initUnpackedDiskReader(rdr)
if err != nil {
return nil, err
}
if h.StorageBits > 0 {
ext.storageRead, err = initUnpackedDiskReader(rdr)
if err != nil {
return nil, err
}
}
}
// XXX: handle variable hash functions
ext.hashfn = murmurhash64
return &ext, nil
}