suspend method

Future<void> suspend()
inherited

Suspends the module, making it temporarily inactive.

Suspended modules remain in memory but don't handle requests. Override onSuspend to perform custom suspension logic.

Throws:

  • ModuleException if suspension fails
  • StateError if the module is not in active state

Implementation

Future<void> suspend() async {
  if (_state != ModuleLifecycleState.active) {
    throw StateError(
      'Cannot suspend module $name: not active (state: $_state)',
    );
  }

  try {
    info('Suspending module $name');
    await onSuspend();
    await _transitionTo(ModuleLifecycleState.suspended);
    info('Module $name suspended');
  } catch (e) {
    error('Failed to suspend module $name: $e');
    await _transitionTo(ModuleLifecycleState.error, error: e);
    rethrow;
  }
}