]> Sergey Matveev's repositories - btrtrc.git/blob - mmap_span/span.go
Ditch Data.WriteSectionTo, and fix cmd/torrent-verify
[btrtrc.git] / mmap_span / span.go
1 package mmap_span
2
3 type sizer interface {
4         Size() int64
5 }
6
7 type span []sizer
8
9 func (me span) ApplyTo(off int64, f func(int64, sizer) (stop bool)) {
10         for _, interval := range me {
11                 iSize := interval.Size()
12                 if off >= iSize {
13                         off -= iSize
14                 } else {
15                         if f(off, interval) {
16                                 return
17                         }
18                         off = 0
19                 }
20         }
21 }