func()

in pq/ack.go [285:327]


func (a *acker) findNewStartPositions(c *txCursor, id uint64) (head, read position, err reason) {
	const op = "pq/ack-compute-new-start"

	var hdr *eventPage

	hdr, err = c.PageHeader()
	if err != nil {
		return head, read, a.errWrap(op, err)
	}

	head = position{
		page: c.cursor.page,
		off:  int(hdr.off.Get()),
		id:   hdr.first.Get(),
	}

	if id == head.id {
		read = head
		return head, read, nil
	}

	// skip contents in current page until we did reach start of next event.
	c.cursor.off = head.off
	for currentID := head.id; currentID != id; currentID++ {
		var evtHdr *eventHeader
		evtHdr, err = c.ReadEventHeader()
		if err != nil {
			return head, read, a.errWrap(op, err)
		}

		err = c.Skip(int(evtHdr.sz.Get()))
		if err != nil {
			return head, read, a.errWrap(op, err)
		}
	}

	read = position{
		page: c.cursor.page,
		off:  c.cursor.off,
		id:   id,
	}
	return head, read, nil
}