torrent/span.go

24 lines
317 B
Go
Raw Normal View History

package torrent
type sizer interface {
Size() int64
}
type (
span []sizer
)
func (me span) ApplyTo(off int64, f func(int64, sizer) (stop bool)) {
for _, interval := range me {
iSize := interval.Size()
if off >= iSize {
off -= iSize
} else {
if f(off, interval) {
return
}
off = 0
}
}
}