| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | package metricsimport (	"encoding/json"	"os"	"sync"	"time")/*1. Create metrics packet--> packet with identifier to track latency, errors.*/type Metric struct {	LastRecordedLatency uint64	ConnectionStatus    bool	TrafficSent         float64	TrafficRecieved     float64}type MetricsPayload struct {	MetricType MetricsUpdateType	Value      interface{}}type MetricsUpdateType uint32const (	LatencyUpdate         MetricsUpdateType = 1	TrafficSentUpdate     MetricsUpdateType = 2	TrafficRecievedUpdate MetricsUpdateType = 3)var MetricsMapLock = &sync.RWMutex{}var MetricsMap = make(map[string]Metric)func init() {	go func() {		for {			time.Sleep(1 * time.Minute)			PrintMetrics()		}	}()}func PrintMetrics() {	data, err := json.MarshalIndent(MetricsMap, "", " ")	if err != nil {		return	}	os.WriteFile("/tmp/metrics.json", data, 0755)}
 |