24 lines
677 B
Go
24 lines
677 B
Go
// Package stats holds process-wide observability counters shared across packages.
|
|
package stats
|
|
|
|
import (
|
|
"sync/atomic"
|
|
"time"
|
|
)
|
|
|
|
// Stats are process-wide atomic counters. A single global instance is used so
|
|
// any package can record events without dependency injection plumbing.
|
|
type Stats struct {
|
|
StartTime time.Time
|
|
UDPPackets atomic.Int64
|
|
UDPBytes atomic.Int64
|
|
FramesWritten atomic.Int64
|
|
FramesDropped atomic.Int64
|
|
BytesBeforeCompr atomic.Int64
|
|
BytesAfterCompr atomic.Int64
|
|
LastUDPPacketUnix atomic.Int64 // unix nanos; 0 = never
|
|
}
|
|
|
|
// Global is the singleton used by all packages.
|
|
var Global = &Stats{StartTime: time.Now()}
|