func newPagingWriter()

in util.go [45:74]


func newPagingWriter(
	ids idList,
	pageSize uint,
	extraHeader uint,
	onPage func(id PageID, buf []byte) reason,
) *pagingWriter {
	if len(ids) == 0 {
		return nil
	}

	buf := make([]byte, len(ids)*int(pageSize))

	// prelink all pages, in case some are not written to
	off := 0
	for _, id := range ids[1:] {
		hdr, _ := castListPage(buf[off:])
		hdr.next.Set(id)
		off += int(pageSize)
	}

	w := &pagingWriter{
		ids:         ids,
		buf:         buf,
		pageSize:    pageSize,
		extraHeader: extraHeader,
		onPage:      onPage,
	}
	w.prepareNext("")
	return w
}