emit method

void emit(
  1. RuntimeEvent event
)

Emits event to subscribers (after a microtask, like a real stream). A terminal (Exited/Died) is LATCHED as retained state BEFORE the emission and deregisters the live session — exactly the real provider's _emitExit shape, so a zero-listener emission stays queryable through terminalOf.

Implementation

void emit(RuntimeEvent event) {
  switch (event) {
    case Exited() || Died():
      _terminals[event.name] = event;
      _live.remove(event.name);
      _lifecycles.remove(event.name);
      final interaction = _interaction[event.name];
      if (interaction != null && !interaction.isClosed) {
        unawaited(interaction.close());
      }
    case SessionStarted() ||
        Respawned() ||
        ActivityChanged() ||
        SessionOrphaned():
      break;
  }
  _events.add(event);
}