resume method

  1. @nonVirtual
Resolvable<Unit> resume({
  1. bool eagerError = false,
})
inherited

Transitions the service into ServiceState.RESUME_SUCCESS by running listeners from provideResumeListeners.

Contract mirrors pause:

  • NOT_INITIALIZEDErr (call init first).
  • didDisposeErr (terminal state).
  • Already in a resumed state → no-op Ok (idempotent).
  • Otherwise: listeners run; transitions to RESUME_ATTEMPT then RESUME_SUCCESS / RESUME_ERROR.

Implementation

@nonVirtual
Resolvable<Unit> resume({bool eagerError = false}) {
  return _sequencer.then((prev) {
    assert(
      !state.didDispose(),
      '$runtimeType.resume: cannot be called after dispose; state is $state.',
    );
    if (state.didDispose()) {
      return Sync<Option>.err(
        Err('resume: cannot be called after dispose; state is $state.'),
      );
    }
    assert(
      state != ServiceState.NOT_INITIALIZED,
      '$runtimeType.resume: service has not been initialized. '
      'Call init() first.',
    );
    if (state == ServiceState.NOT_INITIALIZED) {
      return Sync<Option>.err(
        Err('resume: service has not been initialized. '
            'Call init() first.'),
      );
    }
    if (state.didResume()) {
      return Sync<Option>.okValue(const None());
    }
    return _updateState(
      providerFunction: provideResumeListeners,
      eagerError: eagerError,
      attemptState: ServiceState.RESUME_ATTEMPT,
      successState: ServiceState.RESUME_SUCCESS,
      errorState: ServiceState.RESUME_ERROR,
      phaseName: 'resume',
    );
  }).toUnit();
}