in pq/buffer.go [50:85]
func newBuffer(pool *pagePool, page *page, pages, pageSize, hdrSz int) *buffer {
payloadSz := pageSize - hdrSz
avail := payloadSz * pages
tracef("init writer buffer with pages=%v, pageSize=%v, hdrSize=%v, avail=%v\n",
pages, pageSize, hdrSz, avail)
b := &buffer{
head: nil,
tail: nil,
pool: pool,
pageSize: pageSize,
hdrSize: hdrSz,
payloadSize: payloadSz,
avail: avail,
payload: nil,
page: nil,
eventHdrPage: nil,
eventHdrOffset: -1,
eventHdrSize: -1,
}
if page != nil {
// init with end of on-disk list from former writes
b.head = page
b.tail = page
contentsLength := int(page.Meta.EndOff) - b.hdrSize
b.avail -= contentsLength
b.payload = page.Data[page.Meta.EndOff:]
b.page = page
b.countPages++
}
return b
}