Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alist-org
GitHub Repository: alist-org/alist
Path: blob/main/internal/offline_download/aria2/notify.go
1562 views
1
package aria2
2
3
import (
4
"github.com/alist-org/alist/v3/pkg/aria2/rpc"
5
"github.com/alist-org/alist/v3/pkg/generic_sync"
6
)
7
8
const (
9
Downloading = iota
10
Paused
11
Stopped
12
Completed
13
Errored
14
)
15
16
type Notify struct {
17
Signals generic_sync.MapOf[string, chan int]
18
}
19
20
func NewNotify() *Notify {
21
return &Notify{Signals: generic_sync.MapOf[string, chan int]{}}
22
}
23
24
func (n *Notify) OnDownloadStart(events []rpc.Event) {
25
for _, e := range events {
26
if signal, ok := n.Signals.Load(e.Gid); ok {
27
signal <- Downloading
28
}
29
}
30
}
31
32
func (n *Notify) OnDownloadPause(events []rpc.Event) {
33
for _, e := range events {
34
if signal, ok := n.Signals.Load(e.Gid); ok {
35
signal <- Paused
36
}
37
}
38
}
39
40
func (n *Notify) OnDownloadStop(events []rpc.Event) {
41
for _, e := range events {
42
if signal, ok := n.Signals.Load(e.Gid); ok {
43
signal <- Stopped
44
}
45
}
46
}
47
48
func (n *Notify) OnDownloadComplete(events []rpc.Event) {
49
for _, e := range events {
50
if signal, ok := n.Signals.Load(e.Gid); ok {
51
signal <- Completed
52
}
53
}
54
}
55
56
func (n *Notify) OnDownloadError(events []rpc.Event) {
57
for _, e := range events {
58
if signal, ok := n.Signals.Load(e.Gid); ok {
59
signal <- Errored
60
}
61
}
62
}
63
64
func (n *Notify) OnBtDownloadComplete(events []rpc.Event) {
65
for _, e := range events {
66
if signal, ok := n.Signals.Load(e.Gid); ok {
67
signal <- Completed
68
}
69
}
70
}
71
72