We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
I followed your example , but cancel is not working, cancelToken is always null in handleCancel()
class BackupTask implements FileTask<Future<bool>> { final BackupRoutineModel rotinaBackup; LibsshWrapper libssh; LibsshCancelToken cancelToken; BackupTask(this.rotinaBackup, {this.taskId}) {} @override Future<bool> execute() { return _doExecute(); } Future<bool> _doExecute() async { var completer = Completer<bool>(); cancelToken = LibsshCancelToken(); try { var server = rotinaBackup.servers.first; libssh = LibsshWrapper( server.host, username: server.user, password: server.password, port: server.port, verbosity: false, ); libssh.connect(); List<DirectoryItem> fileObjects = server.fileObjects; int totalSize = 0; int totalLoaded = 0; totalSize = fileObjects .map((d) => libssh.getSizeOfFileSystemItem(d)) .toList() .reduce((value, element) => value + element); final start = DateTime.now(); for (var item in fileObjects) { if (item.type == DirectoryItemType.directory) { await libssh.scpDownloadDirectory( item.path, rotinaBackup.destinationDirectory, printLog: (v) { tasklogCallback(v); }, callbackStats: (int total, int loaded, int currentFileSize, int countDirectory, int countFiles) { print('i'); totalLoaded += currentFileSize; taskProgressCallback(totalSize, totalLoaded, 'a'); }, cancelToken: cancelToken, ); } else if (item.type == DirectoryItemType.file) { var currentFileSize = 0; await libssh.scpDownloadFileTo( item.path, '${rotinaBackup.destinationDirectory}/${item.name}', callbackStats: (int total, int loaded) { currentFileSize = loaded; }, recursive: false, ); totalLoaded += currentFileSize; taskProgressCallback(totalSize, totalLoaded, 'a'); } if (cancelToken.isCancelled) { break; } } tasklogCallback('${DateTime.now().difference(start)}'); completer.complete(true); } catch (e, s) { tasklogCallback('BackupTask ${rotinaBackup.name} error: $e $s'); completer.completeError(e); } finally { libssh.dispose(); } return completer.future; } @override String taskId; @override ActionType actionType = ActionType.download; ///Function(int total, int loaded, String status); @override ProgressCallback taskProgressCallback; @override void handleCancel(String taskId) { //cancelToken is null print('BackupTask@handleCancel $cancelToken'); cancelToken?.cancel('Cancel backup $taskId'); } @override LogCallback tasklogCallback; }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
I followed your example , but cancel is not working, cancelToken is always null in handleCancel()
The text was updated successfully, but these errors were encountered: