in file.go [254:282]
func (f *File) reportOpen() {
const numFileHeaders = 2
meta := f.getMetaPage()
fileEnd := uint(meta.dataEndMarker.Get())
if m := uint(meta.metaEndMarker.Get()); m > fileEnd {
fileEnd = m
}
metaArea := uint(meta.metaTotal.Get())
metaInUse := metaArea - f.allocator.meta.freelist.Avail()
dataInUse := fileEnd - numFileHeaders - metaArea - f.allocator.data.freelist.Avail()
f.stats = FileStats{
Version: meta.version.Get(),
Size: uint64(f.size),
MaxSize: meta.maxSize.Get(),
PageSize: meta.pageSize.Get(),
MetaArea: metaArea,
DataAllocated: dataInUse,
MetaAllocated: metaInUse,
}
o := f.observer
if o == nil {
return
}
o.OnOpen(f.stats)
}