45 lines
810 B
Go
45 lines
810 B
Go
package internal
|
|
|
|
import (
|
|
"expvar"
|
|
"runtime"
|
|
"time"
|
|
)
|
|
|
|
// var (
|
|
// stats *expvar.Map
|
|
// )
|
|
|
|
// func init() {
|
|
// stats = NewStats("stats")
|
|
// }
|
|
|
|
// TimeVar ...
|
|
type TimeVar struct{ v time.Time }
|
|
|
|
// Set ...
|
|
func (o *TimeVar) Set(date time.Time) { o.v = date }
|
|
|
|
// Add ...
|
|
func (o *TimeVar) Add(duration time.Duration) { o.v = o.v.Add(duration) }
|
|
|
|
// String ...
|
|
func (o *TimeVar) String() string { return o.v.Format(time.RFC3339) }
|
|
|
|
// NewStats ...
|
|
func NewStats(name string) *expvar.Map {
|
|
stats := expvar.NewMap(name)
|
|
|
|
stats.Set("goroutines", expvar.Func(func() interface{} {
|
|
return runtime.NumGoroutine()
|
|
}))
|
|
stats.Set("cgocall", expvar.Func(func() interface{} {
|
|
return runtime.NumCgoCall()
|
|
}))
|
|
stats.Set("cpus", expvar.Func(func() interface{} {
|
|
return runtime.NumCPU()
|
|
}))
|
|
|
|
return stats
|
|
}
|