|
package aria2 |
|
|
|
import ( |
|
"github.com/alist-org/alist/v3/pkg/aria2/rpc" |
|
"github.com/alist-org/alist/v3/pkg/generic_sync" |
|
) |
|
|
|
const ( |
|
Downloading = iota |
|
Paused |
|
Stopped |
|
Completed |
|
Errored |
|
) |
|
|
|
type Notify struct { |
|
Signals generic_sync.MapOf[string, chan int] |
|
} |
|
|
|
func NewNotify() *Notify { |
|
return &Notify{Signals: generic_sync.MapOf[string, chan int]{}} |
|
} |
|
|
|
func (n *Notify) OnDownloadStart(events []rpc.Event) { |
|
for _, e := range events { |
|
if signal, ok := n.Signals.Load(e.Gid); ok { |
|
signal <- Downloading |
|
} |
|
} |
|
} |
|
|
|
func (n *Notify) OnDownloadPause(events []rpc.Event) { |
|
for _, e := range events { |
|
if signal, ok := n.Signals.Load(e.Gid); ok { |
|
signal <- Paused |
|
} |
|
} |
|
} |
|
|
|
func (n *Notify) OnDownloadStop(events []rpc.Event) { |
|
for _, e := range events { |
|
if signal, ok := n.Signals.Load(e.Gid); ok { |
|
signal <- Stopped |
|
} |
|
} |
|
} |
|
|
|
func (n *Notify) OnDownloadComplete(events []rpc.Event) { |
|
for _, e := range events { |
|
if signal, ok := n.Signals.Load(e.Gid); ok { |
|
signal <- Completed |
|
} |
|
} |
|
} |
|
|
|
func (n *Notify) OnDownloadError(events []rpc.Event) { |
|
for _, e := range events { |
|
if signal, ok := n.Signals.Load(e.Gid); ok { |
|
signal <- Errored |
|
} |
|
} |
|
} |
|
|
|
func (n *Notify) OnBtDownloadComplete(events []rpc.Event) { |
|
for _, e := range events { |
|
if signal, ok := n.Signals.Load(e.Gid); ok { |
|
signal <- Completed |
|
} |
|
} |
|
} |
|
|