实现HTTP部分功能

This commit is contained in:
刘祥超
2020-09-26 08:06:40 +08:00
parent e12ecca2f6
commit 50731984ec
45 changed files with 1117 additions and 456 deletions

View File

@@ -0,0 +1,69 @@
package tasks
import (
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/iwind/TeaGo/logs"
"time"
)
func init() {
looper := NewEventLooper()
go looper.Start()
}
type EventLooper struct {
}
func NewEventLooper() *EventLooper {
return &EventLooper{}
}
func (this *EventLooper) Start() {
ticker := time.NewTicker(2 * time.Second)
for range ticker.C {
err := this.loop()
if err != nil {
logs.Println("[EVENT_LOOPER]" + err.Error())
}
}
}
func (this *EventLooper) loop() error {
lockerKey := "eventLooper"
isOk, err := models.SharedSysLockerDAO.Lock(lockerKey, 3600)
if err != nil {
return err
}
defer func() {
err = models.SharedSysLockerDAO.Unlock(lockerKey)
if err != nil {
logs.Println("[EVENT_LOOPER]" + err.Error())
}
}()
if !isOk {
return nil
}
events, err := models.SharedSysEventDAO.FindEvents(100)
if err != nil {
return err
}
for _, eventOne := range events {
event, err := eventOne.DecodeEvent()
if err != nil {
logs.Println("[EVENT_LOOPER]" + err.Error())
continue
}
err = event.Run()
if err != nil {
logs.Println("[EVENT_LOOPER]" + err.Error())
continue
}
err = models.SharedSysEventDAO.DeleteEvent(int64(eventOne.Id))
if err != nil {
return err
}
}
return nil
}

View File

@@ -1,70 +0,0 @@
package tasks
import (
"encoding/json"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/iwind/TeaGo/logs"
"time"
)
// TODO 考虑多个API服务同时运行的冲突
func init() {
task := &ServerUpdateTask{}
go task.Run()
}
// 更新服务配置
type ServerUpdateTask struct {
}
func (this *ServerUpdateTask) Run() {
ticker := time.NewTicker(1 * time.Second)
for range ticker.C {
this.loop()
}
}
func (this *ServerUpdateTask) loop() {
serverIds, err := models.SharedServerDAO.FindUpdatingServerIds()
if err != nil {
logs.Println("[ServerUpdateTask]" + err.Error())
return
}
if len(serverIds) == 0 {
return
}
for _, serverId := range serverIds {
// 查找配置
config, err := models.SharedServerDAO.ComposeServerConfig(serverId)
if err != nil {
logs.Println("[ServerUpdateTask]" + err.Error())
continue
}
if config == nil {
err = models.SharedServerDAO.UpdateServerIsUpdating(serverId, false)
if err != nil {
logs.Println("[ServerUpdateTask]" + err.Error())
continue
}
}
configData, err := json.Marshal(config)
if err != nil {
logs.Println("[ServerUpdateTask]" + err.Error())
continue
}
// 修改配置
err = models.SharedServerDAO.UpdateServerConfig(serverId, configData)
if err != nil {
logs.Println("[ServerUpdateTask]" + err.Error())
continue
}
// 修改更新状态
err = models.SharedServerDAO.UpdateServerIsUpdating(serverId, false)
if err != nil {
logs.Println("[ServerUpdateTask]" + err.Error())
continue
}
}
}