Path: blob/main/internal/offline_download/aria2/notify.go
1562 views
package aria212import (3"github.com/alist-org/alist/v3/pkg/aria2/rpc"4"github.com/alist-org/alist/v3/pkg/generic_sync"5)67const (8Downloading = iota9Paused10Stopped11Completed12Errored13)1415type Notify struct {16Signals generic_sync.MapOf[string, chan int]17}1819func NewNotify() *Notify {20return &Notify{Signals: generic_sync.MapOf[string, chan int]{}}21}2223func (n *Notify) OnDownloadStart(events []rpc.Event) {24for _, e := range events {25if signal, ok := n.Signals.Load(e.Gid); ok {26signal <- Downloading27}28}29}3031func (n *Notify) OnDownloadPause(events []rpc.Event) {32for _, e := range events {33if signal, ok := n.Signals.Load(e.Gid); ok {34signal <- Paused35}36}37}3839func (n *Notify) OnDownloadStop(events []rpc.Event) {40for _, e := range events {41if signal, ok := n.Signals.Load(e.Gid); ok {42signal <- Stopped43}44}45}4647func (n *Notify) OnDownloadComplete(events []rpc.Event) {48for _, e := range events {49if signal, ok := n.Signals.Load(e.Gid); ok {50signal <- Completed51}52}53}5455func (n *Notify) OnDownloadError(events []rpc.Event) {56for _, e := range events {57if signal, ok := n.Signals.Load(e.Gid); ok {58signal <- Errored59}60}61}6263func (n *Notify) OnBtDownloadComplete(events []rpc.Event) {64for _, e := range events {65if signal, ok := n.Signals.Load(e.Gid); ok {66signal <- Completed67}68}69}707172