in upload/detectEmptyRanges.go [72:101]
func LocateNonEmptyRangeIndices(stream *diskstream.DiskStream, ranges []*common.IndexRange) (<-chan int32, <-chan error) {
indexChan := make(chan int32, 0)
errorChan := make(chan error, 0)
go func() {
count := int64(-1)
var buf []byte
for index, r := range ranges {
if count != r.Length() {
count = r.Length()
buf = make([]byte, count)
}
_, err := stream.Seek(r.Start, 0)
if err != nil {
errorChan <- err
return
}
_, err = io.ReadFull(stream, buf)
if err != nil {
errorChan <- err
return
}
if !isAllZero(buf) {
indexChan <- int32(index)
}
}
close(indexChan)
}()
return indexChan, errorChan
}