mirror of
https://github.com/QuantumNous/new-api.git
synced 2026-03-30 05:20:18 +00:00
- Apply canonical Go formatting to all .go files - No functional changes; whitespace/import/struct layout only - Improves consistency, reduces diff noise, and aligns with standard tooling
42 lines
791 B
Go
42 lines
791 B
Go
package middleware
|
|
|
|
import (
|
|
"sync/atomic"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// HTTPStats 存储HTTP统计信息
|
|
type HTTPStats struct {
|
|
activeConnections int64
|
|
}
|
|
|
|
var globalStats = &HTTPStats{}
|
|
|
|
// StatsMiddleware 统计中间件
|
|
func StatsMiddleware() gin.HandlerFunc {
|
|
return func(c *gin.Context) {
|
|
// 增加活跃连接数
|
|
atomic.AddInt64(&globalStats.activeConnections, 1)
|
|
|
|
// 确保在请求结束时减少连接数
|
|
defer func() {
|
|
atomic.AddInt64(&globalStats.activeConnections, -1)
|
|
}()
|
|
|
|
c.Next()
|
|
}
|
|
}
|
|
|
|
// StatsInfo 统计信息结构
|
|
type StatsInfo struct {
|
|
ActiveConnections int64 `json:"active_connections"`
|
|
}
|
|
|
|
// GetStats 获取统计信息
|
|
func GetStats() StatsInfo {
|
|
return StatsInfo{
|
|
ActiveConnections: atomic.LoadInt64(&globalStats.activeConnections),
|
|
}
|
|
}
|