func newBuffer()

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
}