mirror of
https://github.com/Oxalide/vsphere-influxdb-go.git
synced 2023-10-10 13:36:51 +02:00
24 lines
556 B
Go
24 lines
556 B
Go
package influxql
|
|
|
|
import "time"
|
|
|
|
// PointLimitMonitor is a query monitor that exits when the number of points
|
|
// emitted exceeds a threshold.
|
|
func PointLimitMonitor(itrs Iterators, interval time.Duration, limit int) QueryMonitorFunc {
|
|
return func(closing <-chan struct{}) error {
|
|
ticker := time.NewTicker(interval)
|
|
defer ticker.Stop()
|
|
for {
|
|
select {
|
|
case <-ticker.C:
|
|
stats := itrs.Stats()
|
|
if stats.PointN >= limit {
|
|
return ErrMaxSelectPointsLimitExceeded(stats.PointN, limit)
|
|
}
|
|
case <-closing:
|
|
return nil
|
|
}
|
|
}
|
|
}
|
|
}
|