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