processor method

Future<void> processor(
  1. ProcessState state,
  2. int pid,
  3. int pcount
)

Implementation

Future<void> processor(ProcessState state, int pid, int pcount) async {
  for (var chunk in state.chunks) {
    if (chunk.partNumber % pcount == pid) {
      try {
        final st = await downChunk(state, chunk.partNumber - 1);
        if (controller != null && !_controllerClosed) {
          controller!.add(st);
        }
        if (_onPercentage != null) {
          _onPercentage!(st.successCount, st.chunks.length);
        }
      } on DownloadFailureException {
        noError = false;
        _closeControllerOnce(state.url);
        return;
      } catch (e, stack) {
        noError = false;
        print('Unexpected error: $e\n$stack');
        _closeControllerOnce(state.url);
        return;
      }
    }
  }
  if (state.successCount == state.chunks.length) {
    _closeControllerOnce(state.url);
  }
}