From 40b7ecc8453f65258abe539dadfbe7f563f1ee64 Mon Sep 17 00:00:00 2001 From: Noah Hsu Date: Thu, 23 Jun 2022 21:24:23 +0800 Subject: [PATCH] chore(aria2): export task manager --- internal/aria2/add.go | 2 +- internal/aria2/aria2.go | 2 +- internal/aria2/aria2_test.go | 6 +++--- internal/aria2/manage.go | 13 ++++++++++--- internal/aria2/monitor.go | 4 ++-- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/internal/aria2/add.go b/internal/aria2/add.go index 8cb4f933..bdf5e565 100644 --- a/internal/aria2/add.go +++ b/internal/aria2/add.go @@ -43,7 +43,7 @@ func AddURI(ctx context.Context, uri string, dstDirPath string) error { if err != nil { return errors.Wrapf(err, "failed to add uri %s", uri) } - downTaskManager.Submit(task.WithCancelCtx(&task.Task[string]{ + DownTaskManager.Submit(task.WithCancelCtx(&task.Task[string]{ ID: gid, Name: fmt.Sprintf("download %s to [%s](%s)", uri, account.GetAccount().VirtualPath, dstDirActualPath), Func: func(tsk *task.Task[string]) error { diff --git a/internal/aria2/aria2.go b/internal/aria2/aria2.go index 9955c5a4..eb6c34c6 100644 --- a/internal/aria2/aria2.go +++ b/internal/aria2/aria2.go @@ -9,7 +9,7 @@ import ( "time" ) -var downTaskManager = task.NewTaskManager[string](3) +var DownTaskManager = task.NewTaskManager[string](3) var notify = NewNotify() var client rpc.Client diff --git a/internal/aria2/aria2_test.go b/internal/aria2/aria2_test.go index d311ffea..5303ff78 100644 --- a/internal/aria2/aria2_test.go +++ b/internal/aria2/aria2_test.go @@ -54,7 +54,7 @@ func TestDown(t *testing.T) { if err != nil { t.Errorf("failed to add uri: %+v", err) } - tasks := downTaskManager.GetAll() + tasks := DownTaskManager.GetAll() if len(tasks) != 1 { t.Errorf("failed to get tasks: %+v", tasks) } @@ -70,10 +70,10 @@ func TestDown(t *testing.T) { time.Sleep(time.Second) } for { - if len(transferTaskManager.GetAll()) == 0 { + if len(TransferTaskManager.GetAll()) == 0 { continue } - tsk := transferTaskManager.GetAll()[0] + tsk := TransferTaskManager.GetAll()[0] t.Logf("task: %+v", tsk) if tsk.GetState() == task.Succeeded { break diff --git a/internal/aria2/manage.go b/internal/aria2/manage.go index acc39bc3..ec5f50f9 100644 --- a/internal/aria2/manage.go +++ b/internal/aria2/manage.go @@ -1,7 +1,14 @@ package aria2 -import "context" - -func ListFinished(ctx context.Context) { +import ( + "context" + "github.com/alist-org/alist/v3/pkg/task" +) +func ListFinished(ctx context.Context) []*task.Task[string] { + return DownTaskManager.GetByStates(task.Succeeded, task.CANCELED, task.ERRORED) +} + +func ListUndone(ctx context.Context) []*task.Task[string] { + return DownTaskManager.GetByStates(task.PENDING, task.RUNNING, task.CANCELING) } diff --git a/internal/aria2/monitor.go b/internal/aria2/monitor.go index f0d21843..482c76d4 100644 --- a/internal/aria2/monitor.go +++ b/internal/aria2/monitor.go @@ -92,7 +92,7 @@ func (m *Monitor) Update() (bool, error) { } } -var transferTaskManager = task.NewTaskManager[uint64](3, func(k *uint64) { +var TransferTaskManager = task.NewTaskManager[uint64](3, func(k *uint64) { atomic.AddUint64(k, 1) }) @@ -119,7 +119,7 @@ func (m *Monitor) Complete() error { } }() for _, file := range files { - transferTaskManager.Submit(task.WithCancelCtx[uint64](&task.Task[uint64]{ + TransferTaskManager.Submit(task.WithCancelCtx[uint64](&task.Task[uint64]{ Name: fmt.Sprintf("transfer %s to [%s](%s)", file.Path, account.GetAccount().VirtualPath, dstDirActualPath), Func: func(tsk *task.Task[uint64]) error { defer wg.Done()