dispose method
Immediately disposes this scope: cancels tokens, fires dispose callbacks, optionally zeroizes Zeroizable nodes, then disposes the container.
Implementation
void dispose({bool purgeZeroize = false}) {
if (_isDisposed) return;
_isDisposed = true;
_isClosing = true;
// Cancel all in-flight guarded tasks.
for (final token in List.of(_activeTokens)) {
token.cancel();
}
_activeTokens.clear();
// Fire dispose callbacks.
for (final cb in List.of(_disposeCallbacks)) {
try {
cb();
} catch (_) {}
}
_disposeCallbacks.clear();
// Stop IPC listener.
_ipcListener?.cancel();
_ipcListener = null;
// Dispose the container (and zeroize secure nodes if requested).
container.dispose(purgeZeroize: purgeZeroize);
_drainables.clear();
final cleanup = List.of(_asyncDisposeCallbacks);
_asyncDisposeCallbacks.clear();
_disposalComplete = Future.wait([
container.disposalComplete,
...cleanup.map((cb) => Future<void>.sync(cb)),
]).then((_) {});
// Synchronous dispose is best-effort; callers can await disposalComplete.
_disposalComplete.ignore();
}