From cb737be9bb508835b9b19dfe8748bf048e0a8600 Mon Sep 17 00:00:00 2001 From: HFO4 <912394456@qq.com> Date: Thu, 19 Aug 2021 20:19:10 +0800 Subject: [PATCH] Modify: remove database operations from aria2 RPC caller implementation --- pkg/aria2/aria2.go | 6 +++--- pkg/aria2/caller.go | 16 +++------------- pkg/cluster/master.go | 5 +++++ service/aria2/add.go | 14 ++++++++++++-- 4 files changed, 23 insertions(+), 18 deletions(-) diff --git a/pkg/aria2/aria2.go b/pkg/aria2/aria2.go index 40ce36a..21953cf 100644 --- a/pkg/aria2/aria2.go +++ b/pkg/aria2/aria2.go @@ -23,7 +23,7 @@ var EventNotifier = &Notifier{} // Aria2 离线下载处理接口 type Aria2 interface { // CreateTask 创建新的任务 - CreateTask(task *model.Download, options map[string]interface{}) error + CreateTask(task *model.Download, options map[string]interface{}) (string, error) // 返回状态信息 Status(task *model.Download) (rpc.StatusInfo, error) // 取消任务 @@ -68,8 +68,8 @@ type DummyAria2 struct { } // CreateTask 创建新任务,此处直接返回未开启错误 -func (instance *DummyAria2) CreateTask(model *model.Download, options map[string]interface{}) error { - return ErrNotEnabled +func (instance *DummyAria2) CreateTask(model *model.Download, options map[string]interface{}) (string, error) { + return "", ErrNotEnabled } // Status 返回未开启错误 diff --git a/pkg/aria2/caller.go b/pkg/aria2/caller.go index 6e287a2..9f15c87 100644 --- a/pkg/aria2/caller.go +++ b/pkg/aria2/caller.go @@ -85,7 +85,7 @@ func (client *RPCService) Select(task *model.Download, files []int) error { } // CreateTask 创建新任务 -func (client *RPCService) CreateTask(task *model.Download, groupOptions map[string]interface{}) error { +func (client *RPCService) CreateTask(task *model.Download, groupOptions map[string]interface{}) (string, error) { // 生成存储路径 path := filepath.Join( model.GetSettingByName("aria2_temp_path"), @@ -106,18 +106,8 @@ func (client *RPCService) CreateTask(task *model.Download, groupOptions map[stri gid, err := client.Caller.AddURI(task.Source, options) if err != nil || gid == "" { - return err + return "", err } - // 保存到数据库 - task.GID = gid - _, err = task.Create() - if err != nil { - return err - } - - // 创建任务监控 - NewMonitor(task) - - return nil + return gid, nil } diff --git a/pkg/cluster/master.go b/pkg/cluster/master.go index a036f46..a044112 100644 --- a/pkg/cluster/master.go +++ b/pkg/cluster/master.go @@ -29,3 +29,8 @@ func (node *MasterNode) SubscribeStatusChange(callback func(isActive bool, id ui func (node *MasterNode) IsActive() bool { return true } + +// InitAria2RPCClient 初始化主机 Aria2 RPC 服务 +func (node *MasterNode) InitAria2RPCClient() error { + return nil +} diff --git a/service/aria2/add.go b/service/aria2/add.go index be7213a..9e0726d 100644 --- a/service/aria2/add.go +++ b/service/aria2/add.go @@ -43,11 +43,21 @@ func (service *AddURLService) Add(c *gin.Context, taskType int) serializer.Respo } aria2.Lock.RLock() - if err := aria2.Instance.CreateTask(task, fs.User.Group.OptionsSerialized.Aria2Options); err != nil { + gid, err := aria2.Instance.CreateTask(task, fs.User.Group.OptionsSerialized.Aria2Options) + if err != nil { aria2.Lock.RUnlock() return serializer.Err(serializer.CodeNotSet, "任务创建失败", err) } - aria2.Lock.RUnlock() + task.GID = gid + _, err = task.Create() + if err != nil { + return serializer.DBErr("任务创建失败", err) + } + + // 创建任务监控 + aria2.NewMonitor(task) + + aria2.Lock.RUnlock() return serializer.Response{} }