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
}