348
349
// Shrink all queue slices, returning the number of tasks removed (completed)
350
>
func (r *ReaderImpl) ShrinkSlices() int {
reader.go
351
>
r.Lock()
352
>
defer r.Unlock()
353
>
354
>
var tasksCompleted int
355
>
var next *list.Element
356
>
for element := r.slices.Front(); element != nil; element = next {
357
>
next = element.Next()
358
>
359
>
slice := element.Value.(Slice)
360
>
tasksCompleted += slice.ShrinkScope()
361
>
if scope := slice.Scope(); scope.IsEmpty() {
362
r.monitor.RemoveSlice(slice)
363
r.slices.Remove(element)