suspend method
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;
}
}