删掉所有文件
This commit is contained in:
@@ -1,170 +0,0 @@
|
||||
// Package core 提供核心应用协调功能
|
||||
// 负责初始化和协调API、任务执行器和存储等核心组件
|
||||
// 管理整个应用的生命周期
|
||||
package core
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/api"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/config"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/logs"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/service"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/storage/db"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/storage/repository"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/task"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/websocket"
|
||||
)
|
||||
|
||||
// Application 代表核心应用结构
|
||||
// 协调API、任务执行器和存储组件的工作
|
||||
type Application struct {
|
||||
// Storage 存储组件实例
|
||||
Storage db.Storage
|
||||
|
||||
// API API组件实例
|
||||
API *api.API
|
||||
|
||||
// TaskExecutor 任务执行器组件实例
|
||||
TaskExecutor *task.Executor
|
||||
|
||||
// UserRepo 用户仓库实例
|
||||
UserRepo repository.UserRepo
|
||||
|
||||
// OperationHistoryRepo 操作历史仓库实例
|
||||
OperationHistoryRepo repository.OperationHistoryRepo
|
||||
|
||||
// DeviceControlRepo 设备控制仓库实例
|
||||
DeviceControlRepo repository.DeviceControlRepo
|
||||
|
||||
// DeviceRepo 设备仓库实例
|
||||
DeviceRepo repository.DeviceRepo
|
||||
|
||||
// FeedPlanRepo 投喂计划仓库实例
|
||||
FeedPlanRepo repository.FeedPlanRepo
|
||||
|
||||
// WebsocketManager WebSocket管理器
|
||||
WebsocketManager *websocket.Manager
|
||||
|
||||
// DeviceStatusPool 设备状态池实例
|
||||
DeviceStatusPool *service.DeviceStatusPool
|
||||
|
||||
// HeartbeatService 心跳服务实例
|
||||
HeartbeatService *service.HeartbeatService
|
||||
|
||||
// Config 应用配置
|
||||
Config *config.Config
|
||||
|
||||
// logger 日志组件实例
|
||||
logger *logs.Logger
|
||||
}
|
||||
|
||||
// NewApplication 创建并返回一个新的核心应用实例
|
||||
// 初始化所有核心组件
|
||||
func NewApplication(cfg *config.Config) *Application {
|
||||
return &Application{
|
||||
Config: cfg,
|
||||
logger: logs.NewLogger(),
|
||||
}
|
||||
}
|
||||
|
||||
// Start 启动核心应用
|
||||
// 按正确顺序启动所有核心组件
|
||||
func (app *Application) Start() error {
|
||||
// 从配置中获取数据库连接字符串
|
||||
connectionString := app.Config.GetDatabaseConnectionString()
|
||||
|
||||
// 从配置中获取连接池参数
|
||||
maxOpenConns := app.Config.Database.MaxOpenConns
|
||||
maxIdleConns := app.Config.Database.MaxIdleConns
|
||||
connMaxLifetime := app.Config.Database.ConnMaxLifetime
|
||||
|
||||
// 初始化存储组件
|
||||
app.Storage = db.NewStorage(connectionString, maxOpenConns, maxIdleConns, connMaxLifetime)
|
||||
|
||||
// 启动存储组件
|
||||
if err := app.Storage.Connect(); err != nil {
|
||||
return fmt.Errorf("存储连接失败: %v", err)
|
||||
}
|
||||
app.logger.Info("存储连接成功")
|
||||
|
||||
// 初始化用户仓库
|
||||
app.UserRepo = repository.NewUserRepo(app.Storage.GetDB())
|
||||
|
||||
// 初始化操作历史仓库
|
||||
app.OperationHistoryRepo = repository.NewOperationHistoryRepo(app.Storage.GetDB())
|
||||
|
||||
// 初始化设备控制仓库
|
||||
app.DeviceControlRepo = repository.NewDeviceControlRepo(app.Storage.GetDB())
|
||||
|
||||
// 初始化设备仓库
|
||||
app.DeviceRepo = repository.NewDeviceRepo(app.Storage.GetDB())
|
||||
|
||||
app.FeedPlanRepo = repository.NewFeedPlanRepo(app.Storage.GetDB())
|
||||
|
||||
// 初始化设备状态池
|
||||
app.DeviceStatusPool = service.NewDeviceStatusPool()
|
||||
|
||||
// 初始化WebSocket服务
|
||||
app.WebsocketManager = websocket.NewManager(app.DeviceRepo)
|
||||
// 设置WebSocket超时时间
|
||||
app.WebsocketManager.SetDefaultTimeout(app.Config.GetWebSocketConfig().Timeout)
|
||||
|
||||
// 初始化心跳服务
|
||||
app.HeartbeatService = service.NewHeartbeatService(app.WebsocketManager, app.DeviceStatusPool, app.DeviceRepo, app.Config)
|
||||
|
||||
// 初始化API组件
|
||||
app.API = api.NewAPI(app.Config,
|
||||
app.UserRepo,
|
||||
app.OperationHistoryRepo,
|
||||
app.DeviceControlRepo,
|
||||
app.DeviceRepo,
|
||||
app.FeedPlanRepo,
|
||||
app.WebsocketManager,
|
||||
app.HeartbeatService,
|
||||
app.DeviceStatusPool,
|
||||
)
|
||||
|
||||
// 初始化任务执行器组件(使用5个工作协程)
|
||||
app.TaskExecutor = task.NewExecutor(5)
|
||||
|
||||
// 启动API组件
|
||||
if err := app.API.Start(); err != nil {
|
||||
return fmt.Errorf("API启动失败: %v", err)
|
||||
}
|
||||
app.logger.Info("API启动成功")
|
||||
|
||||
// 启动任务执行器组件
|
||||
app.logger.Info("启动任务执行器")
|
||||
app.TaskExecutor.Start()
|
||||
|
||||
// 启动心跳服务
|
||||
app.logger.Info("启动心跳服务")
|
||||
app.HeartbeatService.Start()
|
||||
return nil
|
||||
}
|
||||
|
||||
// Stop 停止核心应用
|
||||
// 按正确顺序停止所有核心组件
|
||||
func (app *Application) Stop() error {
|
||||
// 停止API组件
|
||||
if err := app.API.Stop(); err != nil {
|
||||
app.logger.Error(fmt.Sprintf("API停止失败: %v", err))
|
||||
}
|
||||
|
||||
// 停止任务执行器组件
|
||||
app.logger.Info("停止任务执行器")
|
||||
app.TaskExecutor.Stop()
|
||||
|
||||
// 停止心跳服务
|
||||
app.logger.Info("停止心跳服务")
|
||||
app.HeartbeatService.Stop()
|
||||
|
||||
// 停止存储组件
|
||||
if err := app.Storage.Disconnect(); err != nil {
|
||||
return fmt.Errorf("存储断开连接失败: %v", err)
|
||||
}
|
||||
app.logger.Info("存储断开连接成功")
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user