forgejo-runner/poller/metric.go

34 lines
572 B
Go
Raw Permalink Normal View History

package poller
import "sync/atomic"
// Metric interface
type Metric interface {
2022-11-23 08:58:26 +00:00
IncBusyWorker() int64
DecBusyWorker() int64
BusyWorkers() int64
}
var _ Metric = (*metric)(nil)
type metric struct {
2022-11-23 08:58:26 +00:00
busyWorkers int64
}
// NewMetric for default metric structure
func NewMetric() Metric {
return &metric{}
}
2022-11-23 08:58:26 +00:00
func (m *metric) IncBusyWorker() int64 {
return atomic.AddInt64(&m.busyWorkers, 1)
}
2022-11-23 08:58:26 +00:00
func (m *metric) DecBusyWorker() int64 {
return atomic.AddInt64(&m.busyWorkers, -1)
}
2022-11-23 08:58:26 +00:00
func (m *metric) BusyWorkers() int64 {
return atomic.LoadInt64(&m.busyWorkers)
}