2023-11-21 15:51:08 +08:00
package bootstrap
import (
"github.com/alist-org/alist/v3/internal/conf"
2024-08-07 12:16:21 +08:00
"github.com/alist-org/alist/v3/internal/db"
2023-11-21 15:51:08 +08:00
"github.com/alist-org/alist/v3/internal/fs"
"github.com/alist-org/alist/v3/internal/offline_download/tool"
2025-02-16 12:22:11 +08:00
"github.com/alist-org/alist/v3/internal/op"
"github.com/alist-org/alist/v3/internal/setting"
2023-11-21 15:51:08 +08:00
"github.com/xhofe/tache"
)
2025-02-16 12:22:11 +08:00
func taskFilterNegative ( num int ) int64 {
if num < 0 {
num = 0
}
return int64 ( num )
}
2023-11-21 15:51:08 +08:00
func InitTaskManager ( ) {
2025-02-16 12:22:11 +08:00
fs . UploadTaskManager = tache . NewManager [ * fs . UploadTask ] ( tache . WithWorks ( setting . GetInt ( conf . TaskUploadThreadsNum , conf . Conf . Tasks . Upload . Workers ) ) , tache . WithMaxRetry ( conf . Conf . Tasks . Upload . MaxRetry ) ) //upload will not support persist
op . RegisterSettingChangingCallback ( func ( ) {
fs . UploadTaskManager . SetWorkersNumActive ( taskFilterNegative ( setting . GetInt ( conf . TaskUploadThreadsNum , conf . Conf . Tasks . Upload . Workers ) ) )
} )
fs . CopyTaskManager = tache . NewManager [ * fs . CopyTask ] ( tache . WithWorks ( setting . GetInt ( conf . TaskCopyThreadsNum , conf . Conf . Tasks . Copy . Workers ) ) , tache . WithPersistFunction ( db . GetTaskDataFunc ( "copy" , conf . Conf . Tasks . Copy . TaskPersistant ) , db . UpdateTaskDataFunc ( "copy" , conf . Conf . Tasks . Copy . TaskPersistant ) ) , tache . WithMaxRetry ( conf . Conf . Tasks . Copy . MaxRetry ) )
op . RegisterSettingChangingCallback ( func ( ) {
fs . CopyTaskManager . SetWorkersNumActive ( taskFilterNegative ( setting . GetInt ( conf . TaskCopyThreadsNum , conf . Conf . Tasks . Copy . Workers ) ) )
} )
tool . DownloadTaskManager = tache . NewManager [ * tool . DownloadTask ] ( tache . WithWorks ( setting . GetInt ( conf . TaskOfflineDownloadThreadsNum , conf . Conf . Tasks . Download . Workers ) ) , tache . WithPersistFunction ( db . GetTaskDataFunc ( "download" , conf . Conf . Tasks . Download . TaskPersistant ) , db . UpdateTaskDataFunc ( "download" , conf . Conf . Tasks . Download . TaskPersistant ) ) , tache . WithMaxRetry ( conf . Conf . Tasks . Download . MaxRetry ) )
op . RegisterSettingChangingCallback ( func ( ) {
tool . DownloadTaskManager . SetWorkersNumActive ( taskFilterNegative ( setting . GetInt ( conf . TaskOfflineDownloadThreadsNum , conf . Conf . Tasks . Download . Workers ) ) )
} )
tool . TransferTaskManager = tache . NewManager [ * tool . TransferTask ] ( tache . WithWorks ( setting . GetInt ( conf . TaskOfflineDownloadTransferThreadsNum , conf . Conf . Tasks . Transfer . Workers ) ) , tache . WithPersistFunction ( db . GetTaskDataFunc ( "transfer" , conf . Conf . Tasks . Transfer . TaskPersistant ) , db . UpdateTaskDataFunc ( "transfer" , conf . Conf . Tasks . Transfer . TaskPersistant ) ) , tache . WithMaxRetry ( conf . Conf . Tasks . Transfer . MaxRetry ) )
op . RegisterSettingChangingCallback ( func ( ) {
tool . TransferTaskManager . SetWorkersNumActive ( taskFilterNegative ( setting . GetInt ( conf . TaskOfflineDownloadTransferThreadsNum , conf . Conf . Tasks . Transfer . Workers ) ) )
} )
2024-08-07 12:16:21 +08:00
if len ( tool . TransferTaskManager . GetAll ( ) ) == 0 { //prevent offline downloaded files from being deleted
CleanTempDir ( )
}
2025-02-16 12:22:11 +08:00
fs . ArchiveDownloadTaskManager = tache . NewManager [ * fs . ArchiveDownloadTask ] ( tache . WithWorks ( setting . GetInt ( conf . TaskDecompressDownloadThreadsNum , conf . Conf . Tasks . Decompress . Workers ) ) , tache . WithPersistFunction ( db . GetTaskDataFunc ( "decompress" , conf . Conf . Tasks . Decompress . TaskPersistant ) , db . UpdateTaskDataFunc ( "decompress" , conf . Conf . Tasks . Decompress . TaskPersistant ) ) , tache . WithMaxRetry ( conf . Conf . Tasks . Decompress . MaxRetry ) )
op . RegisterSettingChangingCallback ( func ( ) {
fs . ArchiveDownloadTaskManager . SetWorkersNumActive ( taskFilterNegative ( setting . GetInt ( conf . TaskDecompressDownloadThreadsNum , conf . Conf . Tasks . Decompress . Workers ) ) )
} )
fs . ArchiveContentUploadTaskManager . Manager = tache . NewManager [ * fs . ArchiveContentUploadTask ] ( tache . WithWorks ( setting . GetInt ( conf . TaskDecompressUploadThreadsNum , conf . Conf . Tasks . DecompressUpload . Workers ) ) , tache . WithMaxRetry ( conf . Conf . Tasks . DecompressUpload . MaxRetry ) ) //decompress upload will not support persist
op . RegisterSettingChangingCallback ( func ( ) {
fs . ArchiveContentUploadTaskManager . SetWorkersNumActive ( taskFilterNegative ( setting . GetInt ( conf . TaskDecompressUploadThreadsNum , conf . Conf . Tasks . DecompressUpload . Workers ) ) )
} )
2023-11-21 15:51:08 +08:00
}