func RemoveSlotFromSlotRanges()

in store/slot.go [210:240]


func RemoveSlotFromSlotRanges(source SlotRanges, slot SlotRange) SlotRanges {
	sort.Slice(source, func(i, j int) bool {
		return source[i].Start < source[j].Start
	})
	if !source.HasOverlap(slot) {
		return source
	}

	result := make([]SlotRange, 0, len(source))
	for _, slotRange := range source {
		// if no overlap, keep original range
		if !slotRange.HasOverlap(&slot) {
			result = append(result, slotRange)
			continue
		}
		// if overlap, then we need to create a new left and right range
		if slotRange.Start < slot.Start {
			result = append(result, SlotRange{
				Start: slotRange.Start,
				Stop:  slot.Start - 1,
			})
		}
		if slotRange.Stop > slot.Stop {
			result = append(result, SlotRange{
				Start: slot.Stop + 1,
				Stop:  slotRange.Stop,
			})
		}
	}
	return result
}