package storage

import "github.com/anacrolix/torrent/metainfo"

type requiredLength struct {
	fileIndex int
	length    int64
}

func extentCompleteRequiredLengths(info *metainfo.Info, off, n int64) (ret []requiredLength) {
	if n == 0 {
		return
	}
	for i, fi := range info.UpvertedFiles() {
		if off >= fi.Length {
			off -= fi.Length
			continue
		}
		n1 := n
		if off+n1 > fi.Length {
			n1 = fi.Length - off
		}
		ret = append(ret, requiredLength{
			fileIndex: i,
			length:    off + n1,
		})
		n -= n1
		if n == 0 {
			return
		}
		off = 0
	}
	panic("extent exceeds torrent bounds")
}
