Modify: remove database operations from aria2 RPC caller implementation
This commit is contained in:
parent
154bf36a33
commit
cb737be9bb
4 changed files with 23 additions and 18 deletions
|
@ -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 返回未开启错误
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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{}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue