handleEvent method
Internal: dispatch an event to all handlers.
Implementation
void handleEvent(SessionEvent event) {
if (_destroyed) return;
// Notify event stream
try {
_eventStreamController?.add(event);
} catch (_) {
// Stream controller may be closed if session is being torn down.
}
// Notify persistent handlers
for (final handler in List.of(_eventHandlers)) {
try {
handler(event);
} catch (_) {
// Individual handler errors must not prevent other handlers.
}
}
// Notify one-shot handlers
final toRemove = <_OnceHandler>[];
for (final once in List.of(_onceHandlers)) {
try {
once.handler(event);
} catch (_) {
// Individual handler errors must not prevent other handlers.
}
toRemove.add(once);
}
_onceHandlers.removeWhere(toRemove.contains);
}