1. 增加状态池初始化
2. 把状态池注入需要的地方
This commit is contained in:
@@ -56,13 +56,16 @@ type API struct {
|
|||||||
// websocketService WebSocket服务
|
// websocketService WebSocket服务
|
||||||
websocketService *service.WebSocketService
|
websocketService *service.WebSocketService
|
||||||
|
|
||||||
|
// deviceStatusPool 设备状态池
|
||||||
|
deviceStatusPool *service.DeviceStatusPool
|
||||||
|
|
||||||
// logger 日志记录器
|
// logger 日志记录器
|
||||||
logger *logs.Logger
|
logger *logs.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewAPI 创建并返回一个新的API实例
|
// NewAPI 创建并返回一个新的API实例
|
||||||
// 初始化Gin引擎和相关配置
|
// 初始化Gin引擎和相关配置
|
||||||
func NewAPI(cfg *config.Config, userRepo repository.UserRepo, operationHistoryRepo repository.OperationHistoryRepo, deviceControlRepo repository.DeviceControlRepo, deviceRepo repository.DeviceRepo, websocketService *service.WebSocketService) *API {
|
func NewAPI(cfg *config.Config, userRepo repository.UserRepo, operationHistoryRepo repository.OperationHistoryRepo, deviceControlRepo repository.DeviceControlRepo, deviceRepo repository.DeviceRepo, websocketService *service.WebSocketService, deviceStatusPool *service.DeviceStatusPool) *API {
|
||||||
// 设置Gin为发布模式
|
// 设置Gin为发布模式
|
||||||
gin.SetMode(gin.DebugMode)
|
gin.SetMode(gin.DebugMode)
|
||||||
|
|
||||||
@@ -93,7 +96,7 @@ func NewAPI(cfg *config.Config, userRepo repository.UserRepo, operationHistoryRe
|
|||||||
operationController := operation.NewController(operationHistoryRepo)
|
operationController := operation.NewController(operationHistoryRepo)
|
||||||
|
|
||||||
// 创建设备控制控制器
|
// 创建设备控制控制器
|
||||||
deviceController := device.NewController(deviceControlRepo, deviceRepo, websocketService)
|
deviceController := device.NewController(deviceControlRepo, deviceRepo, websocketService, deviceStatusPool)
|
||||||
|
|
||||||
// 创建WebSocket管理器
|
// 创建WebSocket管理器
|
||||||
websocketManager := websocket.NewManager(websocketService, deviceRepo)
|
websocketManager := websocket.NewManager(websocketService, deviceRepo)
|
||||||
@@ -114,6 +117,7 @@ func NewAPI(cfg *config.Config, userRepo repository.UserRepo, operationHistoryRe
|
|||||||
authMiddleware: authMiddleware,
|
authMiddleware: authMiddleware,
|
||||||
websocketManager: websocketManager,
|
websocketManager: websocketManager,
|
||||||
websocketService: websocketService,
|
websocketService: websocketService,
|
||||||
|
deviceStatusPool: deviceStatusPool,
|
||||||
logger: logs.NewLogger(),
|
logger: logs.NewLogger(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,15 +116,17 @@ type Controller struct {
|
|||||||
deviceControlRepo repository.DeviceControlRepo
|
deviceControlRepo repository.DeviceControlRepo
|
||||||
deviceRepo repository.DeviceRepo
|
deviceRepo repository.DeviceRepo
|
||||||
websocketService *service.WebSocketService
|
websocketService *service.WebSocketService
|
||||||
|
deviceStatusPool *service.DeviceStatusPool
|
||||||
logger *logs.Logger
|
logger *logs.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewController 创建设备控制控制器实例
|
// NewController 创建设备控制控制器实例
|
||||||
func NewController(deviceControlRepo repository.DeviceControlRepo, deviceRepo repository.DeviceRepo, websocketService *service.WebSocketService) *Controller {
|
func NewController(deviceControlRepo repository.DeviceControlRepo, deviceRepo repository.DeviceRepo, websocketService *service.WebSocketService, deviceStatusPool *service.DeviceStatusPool) *Controller {
|
||||||
return &Controller{
|
return &Controller{
|
||||||
deviceControlRepo: deviceControlRepo,
|
deviceControlRepo: deviceControlRepo,
|
||||||
deviceRepo: deviceRepo,
|
deviceRepo: deviceRepo,
|
||||||
websocketService: websocketService,
|
websocketService: websocketService,
|
||||||
|
deviceStatusPool: deviceStatusPool,
|
||||||
logger: logs.NewLogger(),
|
logger: logs.NewLogger(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,6 +42,9 @@ type Application struct {
|
|||||||
// WebSocketService WebSocket服务实例
|
// WebSocketService WebSocket服务实例
|
||||||
WebSocketService *service.WebSocketService
|
WebSocketService *service.WebSocketService
|
||||||
|
|
||||||
|
// DeviceStatusPool 设备状态池实例
|
||||||
|
DeviceStatusPool *service.DeviceStatusPool
|
||||||
|
|
||||||
// Config 应用配置
|
// Config 应用配置
|
||||||
Config *config.Config
|
Config *config.Config
|
||||||
|
|
||||||
@@ -90,13 +93,18 @@ func (app *Application) Start() error {
|
|||||||
// 初始化设备仓库
|
// 初始化设备仓库
|
||||||
app.DeviceRepo = repository.NewDeviceRepo(app.Storage.GetDB())
|
app.DeviceRepo = repository.NewDeviceRepo(app.Storage.GetDB())
|
||||||
|
|
||||||
|
// 初始化设备状态池
|
||||||
|
app.DeviceStatusPool = service.NewDeviceStatusPool()
|
||||||
|
|
||||||
// 初始化WebSocket服务
|
// 初始化WebSocket服务
|
||||||
app.WebSocketService = service.NewWebSocketService(app.DeviceRepo)
|
app.WebSocketService = service.NewWebSocketService(app.DeviceRepo)
|
||||||
|
// 设置设备状态池
|
||||||
|
app.WebSocketService.SetDeviceStatusPool(app.DeviceStatusPool)
|
||||||
// 设置WebSocket超时时间
|
// 设置WebSocket超时时间
|
||||||
app.WebSocketService.SetDefaultTimeout(app.Config.GetWebSocketTimeout())
|
app.WebSocketService.SetDefaultTimeout(app.Config.GetWebSocketTimeout())
|
||||||
|
|
||||||
// 初始化API组件
|
// 初始化API组件
|
||||||
app.API = api.NewAPI(app.Config, app.UserRepo, app.OperationHistoryRepo, app.DeviceControlRepo, app.DeviceRepo, app.WebSocketService)
|
app.API = api.NewAPI(app.Config, app.UserRepo, app.OperationHistoryRepo, app.DeviceControlRepo, app.DeviceRepo, app.WebSocketService, app.DeviceStatusPool)
|
||||||
|
|
||||||
// 初始化任务执行器组件(使用5个工作协程)
|
// 初始化任务执行器组件(使用5个工作协程)
|
||||||
app.TaskExecutor = task.NewExecutor(5)
|
app.TaskExecutor = task.NewExecutor(5)
|
||||||
|
|||||||
@@ -75,6 +75,14 @@ type WebSocketService struct {
|
|||||||
|
|
||||||
// deviceRepo 设备仓库
|
// deviceRepo 设备仓库
|
||||||
deviceRepo repository.DeviceRepo
|
deviceRepo repository.DeviceRepo
|
||||||
|
|
||||||
|
// deviceStatusPool 设备状态池
|
||||||
|
deviceStatusPool *DeviceStatusPool
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetDeviceStatusPool 设置设备状态池
|
||||||
|
func (ws *WebSocketService) SetDeviceStatusPool(pool *DeviceStatusPool) {
|
||||||
|
ws.deviceStatusPool = pool
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewWebSocketService 创建WebSocket服务实例
|
// NewWebSocketService 创建WebSocket服务实例
|
||||||
@@ -84,6 +92,7 @@ func NewWebSocketService(deviceRepo repository.DeviceRepo) *WebSocketService {
|
|||||||
logger: logs.NewLogger(),
|
logger: logs.NewLogger(),
|
||||||
defaultTimeout: 5, // 默认5秒超时
|
defaultTimeout: 5, // 默认5秒超时
|
||||||
deviceRepo: deviceRepo,
|
deviceRepo: deviceRepo,
|
||||||
|
deviceStatusPool: NewDeviceStatusPool(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user