You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.0 KiB
62 lines
1.0 KiB
package main
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"xttbinlog/config"
|
|
"xttbinlog/syncer"
|
|
|
|
"gopkg.in/yaml.v2"
|
|
)
|
|
|
|
func main() {
|
|
// 读取配置
|
|
cfg, err := loadConfig("config.yaml")
|
|
if err != nil {
|
|
log.Fatalf("加载配置失败: %v", err)
|
|
}
|
|
|
|
// 创建数据同步器
|
|
syncer, err := syncer.NewDataSyncer(cfg)
|
|
if err != nil {
|
|
log.Fatalf("创建同步器失败: %v", err)
|
|
}
|
|
|
|
// 处理信号
|
|
setupSignalHandler(syncer)
|
|
|
|
// 启动同步
|
|
if err := syncer.Start(); err != nil {
|
|
log.Fatalf("启动同步失败: %v", err)
|
|
}
|
|
}
|
|
|
|
func loadConfig(filename string) (*config.Config, error) {
|
|
data, err := os.ReadFile(filename)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var cfg config.Config
|
|
err = yaml.Unmarshal(data, &cfg)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &cfg, nil
|
|
}
|
|
|
|
func setupSignalHandler(syncer *syncer.DataSyncer) {
|
|
sigChan := make(chan os.Signal, 1)
|
|
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
|
|
|
|
go func() {
|
|
sig := <-sigChan
|
|
log.Printf("接收到信号: %v", sig)
|
|
syncer.Stop()
|
|
os.Exit(0)
|
|
}()
|
|
}
|
|
|