download method
Implementation
@pragma('vm:entry-point')
Future<DownloadManagerResponse> download({required DownRequire req}) async {
if (_downloadsTask.containsKey(req.tokenDownload)) {
//retorna el isolate en el cual se esta descargando
return DownloadManagerResponse(
token: _downloadsTask[req.tokenDownload]!.isolateToken,
status: true,
);
}
bool freeIsolate = false;
int tokenIsolate = 0;
for (int isolate in _task.keys) {
TaskDownload ts = _select(isolate).task!;
if (ts.freeIsolate) {
freeIsolate = true;
tokenIsolate = isolate;
ts.freeIsolate = false;
break;
}
}
if (!freeIsolate)
return DownloadManagerResponse(
token: 0,
status: false,
error: ErrorIsolate.limit,
);
DownloadManagerResponse response = DownloadManagerResponse(
token: tokenIsolate,
status: true,
);
if (req.tokenDownload == 0) {
req.tokenDownload = ManSettings().token();
}
_select(response.token).task?.sendPortIsolate().send(
ManMessagePort(
action: 'add',
download: ManReques(
setting: req.setting,
url: req.url,
fileName: req.fileName,
extension: req.extension,
tokenDownload: req.tokenDownload,
),
),
);
return response;
}