实现基础web服务器
This commit is contained in:
@@ -5,10 +5,12 @@ package core
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"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/storage/db"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/task"
|
||||
)
|
||||
|
||||
// Application 代表核心应用结构
|
||||
@@ -17,6 +19,12 @@ type Application struct {
|
||||
// Storage 存储组件实例
|
||||
Storage db.Storage
|
||||
|
||||
// API API组件实例
|
||||
API *api.API
|
||||
|
||||
// TaskExecutor 任务执行器组件实例
|
||||
TaskExecutor *task.Executor
|
||||
|
||||
// Config 应用配置
|
||||
Config *config.Config
|
||||
}
|
||||
@@ -35,9 +43,19 @@ func NewApplication(cfg *config.Config) *Application {
|
||||
// 初始化存储组件
|
||||
store := db.NewStorage(connectionString, maxOpenConns, maxIdleConns, connMaxLifetime)
|
||||
|
||||
// 初始化API组件
|
||||
apiInstance := api.NewAPI(cfg)
|
||||
|
||||
// 初始化任务执行器组件(使用5个工作协程)
|
||||
taskExecutor := task.NewExecutor(5)
|
||||
|
||||
return &Application{
|
||||
Storage: store,
|
||||
Config: cfg,
|
||||
Storage: store,
|
||||
Storage: store,
|
||||
API: apiInstance,
|
||||
TaskExecutor: taskExecutor,
|
||||
Config: cfg,
|
||||
logger: logger,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,21 +66,38 @@ func (app *Application) Start() error {
|
||||
if err := app.Storage.Connect(); err != nil {
|
||||
return fmt.Errorf("failed to connect to storage: %v", err)
|
||||
}
|
||||
log.Println("Storage connected successfully")
|
||||
app.logger.Info("Storage connected successfully")
|
||||
|
||||
// 启动API组件
|
||||
if err := app.API.Start(); err != nil {
|
||||
return fmt.Errorf("failed to start API: %v", err)
|
||||
}
|
||||
app.logger.Info("API started successfully")
|
||||
|
||||
// 启动任务执行器组件
|
||||
app.TaskExecutor.Start()
|
||||
app.logger.Info("Task executor started successfully")
|
||||
|
||||
// TODO: 启动其他核心组件
|
||||
return nil
|
||||
}
|
||||
|
||||
// Stop 停止核心应用
|
||||
// 按正确顺序停止所有核心组件
|
||||
func (app *Application) Stop() error {
|
||||
// 停止API组件
|
||||
if err := app.API.Stop(); err != nil {
|
||||
app.logger.Error(fmt.Sprintf("Failed to stop API: %v", err))
|
||||
}
|
||||
|
||||
// 停止任务执行器组件
|
||||
app.TaskExecutor.Stop()
|
||||
app.logger.Info("Task executor stopped successfully")
|
||||
|
||||
// 停止存储组件
|
||||
if err := app.Storage.Disconnect(); err != nil {
|
||||
return fmt.Errorf("failed to disconnect from storage: %v", err)
|
||||
}
|
||||
log.Println("Storage disconnected successfully")
|
||||
app.logger.Info("Storage disconnected successfully")
|
||||
|
||||
// TODO: 停止其他核心组件
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user