feat(task): add speed monitor (#7655)
This commit is contained in:
@ -4,6 +4,7 @@ import (
|
||||
"github.com/alist-org/alist/v3/internal/model"
|
||||
"github.com/alist-org/alist/v3/internal/task"
|
||||
"math"
|
||||
"time"
|
||||
|
||||
"github.com/alist-org/alist/v3/internal/fs"
|
||||
"github.com/alist-org/alist/v3/internal/offline_download/tool"
|
||||
@ -21,10 +22,13 @@ type TaskInfo struct {
|
||||
State tache.State `json:"state"`
|
||||
Status string `json:"status"`
|
||||
Progress float64 `json:"progress"`
|
||||
StartTime *time.Time `json:"start_time"`
|
||||
EndTime *time.Time `json:"end_time"`
|
||||
TotalBytes int64 `json:"total_bytes"`
|
||||
Error string `json:"error"`
|
||||
}
|
||||
|
||||
func getTaskInfo[T task.TaskInfoWithCreator](task T) TaskInfo {
|
||||
func getTaskInfo[T task.TaskExtensionInfo](task T) TaskInfo {
|
||||
errMsg := ""
|
||||
if task.GetErr() != nil {
|
||||
errMsg = task.GetErr().Error()
|
||||
@ -48,11 +52,14 @@ func getTaskInfo[T task.TaskInfoWithCreator](task T) TaskInfo {
|
||||
State: task.GetState(),
|
||||
Status: task.GetStatus(),
|
||||
Progress: progress,
|
||||
StartTime: task.GetStartTime(),
|
||||
EndTime: task.GetEndTime(),
|
||||
TotalBytes: task.GetTotalBytes(),
|
||||
Error: errMsg,
|
||||
}
|
||||
}
|
||||
|
||||
func getTaskInfos[T task.TaskInfoWithCreator](tasks []T) []TaskInfo {
|
||||
func getTaskInfos[T task.TaskExtensionInfo](tasks []T) []TaskInfo {
|
||||
return utils.MustSliceConvert(tasks, getTaskInfo[T])
|
||||
}
|
||||
|
||||
@ -68,7 +75,7 @@ func getUserInfo(c *gin.Context) (bool, uint, bool) {
|
||||
}
|
||||
}
|
||||
|
||||
func getTargetedHandler[T task.TaskInfoWithCreator](manager *tache.Manager[T], callback func(c *gin.Context, task T)) gin.HandlerFunc {
|
||||
func getTargetedHandler[T task.TaskExtensionInfo](manager *tache.Manager[T], callback func(c *gin.Context, task T)) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
isAdmin, uid, ok := getUserInfo(c)
|
||||
if !ok {
|
||||
@ -90,7 +97,7 @@ func getTargetedHandler[T task.TaskInfoWithCreator](manager *tache.Manager[T], c
|
||||
}
|
||||
}
|
||||
|
||||
func getBatchHandler[T task.TaskInfoWithCreator](manager *tache.Manager[T], callback func(task T)) gin.HandlerFunc {
|
||||
func getBatchHandler[T task.TaskExtensionInfo](manager *tache.Manager[T], callback func(task T)) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
isAdmin, uid, ok := getUserInfo(c)
|
||||
if !ok {
|
||||
@ -115,7 +122,7 @@ func getBatchHandler[T task.TaskInfoWithCreator](manager *tache.Manager[T], call
|
||||
}
|
||||
}
|
||||
|
||||
func taskRoute[T task.TaskInfoWithCreator](g *gin.RouterGroup, manager *tache.Manager[T]) {
|
||||
func taskRoute[T task.TaskExtensionInfo](g *gin.RouterGroup, manager *tache.Manager[T]) {
|
||||
g.GET("/undone", func(c *gin.Context) {
|
||||
isAdmin, uid, ok := getUserInfo(c)
|
||||
if !ok {
|
||||
|
Reference in New Issue
Block a user