package metrics import "sync/atomic" // Metrics 指标接口 type Metrics interface { // IncConnections 增加连接数 IncConnections() // DecConnections 减少连接数 DecConnections() // GetConnections 获取当前连接数 GetConnections() int64 // IncRequests 增加请求数 IncRequests() // GetRequests 获取请求总数 GetRequests() int64 // IncErrors 增加错误数 IncErrors() // GetErrors 获取错误总数 GetErrors() int64 // AddBytesReceived 增加接收字节数 AddBytesReceived(bytes int64) // GetBytesReceived 获取接收字节总数 GetBytesReceived() int64 // AddBytesSent 增加发送字节数 AddBytesSent(bytes int64) // GetBytesSent 获取发送字节总数 GetBytesSent() int64 } // metrics 指标实现 type metrics struct { connections int64 requests int64 errors int64 bytesReceived int64 bytesSent int64 } // NewMetrics 创建指标实例 func NewMetrics() Metrics { return &metrics{} } // IncConnections 增加连接数 func (m *metrics) IncConnections() { atomic.AddInt64(&m.connections, 1) } // DecConnections 减少连接数 func (m *metrics) DecConnections() { atomic.AddInt64(&m.connections, -1) } // GetConnections 获取当前连接数 func (m *metrics) GetConnections() int64 { return atomic.LoadInt64(&m.connections) } // IncRequests 增加请求数 func (m *metrics) IncRequests() { atomic.AddInt64(&m.requests, 1) } // GetRequests 获取请求总数 func (m *metrics) GetRequests() int64 { return atomic.LoadInt64(&m.requests) } // IncErrors 增加错误数 func (m *metrics) IncErrors() { atomic.AddInt64(&m.errors, 1) } // GetErrors 获取错误总数 func (m *metrics) GetErrors() int64 { return atomic.LoadInt64(&m.errors) } // AddBytesReceived 增加接收字节数 func (m *metrics) AddBytesReceived(bytes int64) { atomic.AddInt64(&m.bytesReceived, bytes) } // GetBytesReceived 获取接收字节总数 func (m *metrics) GetBytesReceived() int64 { return atomic.LoadInt64(&m.bytesReceived) } // AddBytesSent 增加发送字节数 func (m *metrics) AddBytesSent(bytes int64) { atomic.AddInt64(&m.bytesSent, bytes) } // GetBytesSent 获取发送字节总数 func (m *metrics) GetBytesSent() int64 { return atomic.LoadInt64(&m.bytesSent) }