Files
proxy/gateway/debug/debug.go

52 lines
927 B
Go

package debug
import (
"container/ring"
"context"
"time"
)
func Start(ctx context.Context) {
go startReceiveConsuming(ctx)
}
type Consuming struct {
Auth time.Duration
Data time.Duration
Proxy time.Duration
Total time.Duration
}
var ConsumingCh = make(chan Consuming, 1024)
var consumingList = ring.New(3000)
func startReceiveConsuming(ctx context.Context) {
InitConsumingList()
for {
select {
case <-ctx.Done():
return
case c := <-ConsumingCh:
consumingList.Value = c
consumingList = consumingList.Next()
}
}
}
func InitConsumingList() {
for i := 0; i < consumingList.Len(); i++ {
consumingList.Value = nil
consumingList = consumingList.Next()
}
}
func ConsumingList() []Consuming {
consuming := make([]Consuming, 0, consumingList.Len())
consumingList.Do(func(value interface{}) {
if value != nil {
consuming = append(consuming, value.(Consuming))
}
})
return consuming
}