2023-11-21 15:51:08 +08:00
package bootstrap
import (
2025-07-01 09:54:50 +08:00
"github.com/OpenListTeam/OpenList/v4/internal/conf"
"github.com/OpenListTeam/OpenList/v4/internal/db"
"github.com/OpenListTeam/OpenList/v4/internal/fs"
"github.com/OpenListTeam/OpenList/v4/internal/offline_download/tool"
"github.com/OpenListTeam/OpenList/v4/internal/op"
"github.com/OpenListTeam/OpenList/v4/internal/setting"
2025-06-30 21:26:42 +08:00
"github.com/OpenListTeam/tache"
2023-11-21 15:51:08 +08:00
)
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 ) ) )
} )
2025-06-20 17:54:24 +08:00
fs . MoveTaskManager = tache . NewManager [ * fs . MoveTask ] ( tache . WithWorks ( setting . GetInt ( conf . TaskMoveThreadsNum , conf . Conf . Tasks . Move . Workers ) ) , tache . WithPersistFunction ( db . GetTaskDataFunc ( "move" , conf . Conf . Tasks . Move . TaskPersistant ) , db . UpdateTaskDataFunc ( "move" , conf . Conf . Tasks . Move . TaskPersistant ) ) , tache . WithMaxRetry ( conf . Conf . Tasks . Move . MaxRetry ) )
op . RegisterSettingChangingCallback ( func ( ) {
fs . MoveTaskManager . SetWorkersNumActive ( taskFilterNegative ( setting . GetInt ( conf . TaskMoveThreadsNum , conf . Conf . Tasks . Move . Workers ) ) )
} )
2025-02-16 12:22:11 +08:00
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
}