Initial commit
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
//go:build !windows
|
||||
// +build !windows
|
||||
|
||||
package tray
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
// TrayManager 托盘管理器(非Windows平台实现)
|
||||
type TrayManager struct {
|
||||
logger *zap.Logger
|
||||
webPort int
|
||||
onExit func()
|
||||
}
|
||||
|
||||
// NewTrayManager 创建托盘管理器
|
||||
func NewTrayManager(logger *zap.Logger, webPort int, onExit func()) *TrayManager {
|
||||
return &TrayManager{
|
||||
logger: logger,
|
||||
webPort: webPort,
|
||||
onExit: onExit,
|
||||
}
|
||||
}
|
||||
|
||||
// Run 运行托盘(非Windows平台显示提示信息并阻塞)
|
||||
func (t *TrayManager) Run() {
|
||||
t.logger.Info("非Windows系统,跳过托盘初始化")
|
||||
|
||||
// 显示启动信息
|
||||
fmt.Println("")
|
||||
fmt.Println("========================================")
|
||||
fmt.Println("🌐 MeshRay 服务已启动")
|
||||
fmt.Println("========================================")
|
||||
fmt.Printf("📍 Web 管理界面: http://localhost:%d\n", t.webPort)
|
||||
fmt.Println("💡 提示: 使用 Ctrl+C 停止服务")
|
||||
fmt.Println("========================================")
|
||||
fmt.Println("")
|
||||
|
||||
// 等待退出信号
|
||||
sigChan := make(chan os.Signal, 1)
|
||||
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
|
||||
|
||||
<-sigChan
|
||||
|
||||
t.logger.Info("收到退出信号,正在关闭...")
|
||||
if t.onExit != nil {
|
||||
t.onExit()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user