sessionGetResponseStream method

  1. @override
Stream<String> sessionGetResponseStream(
  1. String sessionId, {
  2. GenerationConfig? config,
})
override

Answers the pending turn as a stream of text deltas.

Implementation

@override
Stream<String> sessionGetResponseStream(
  String sessionId, {
  GenerationConfig? config,
}) {
  late final StreamController<String> controller;
  controller = StreamController<String>(
    onListen: () {
      _ensureEvents();
      _streams[sessionId] = controller;
      _invoke<void>('sessionStartStream', {
        'sessionId': sessionId,
        'config': ?config?.toMap(),
      }).catchError((Object e) {
        if (!controller.isClosed) {
          controller.addError(e);
          controller.close();
        }
      });
    },
    onCancel: () async {
      final wasOpen = _streams.remove(sessionId) == controller;
      if (wasOpen && !controller.isClosed) {
        try {
          await _invoke<void>('sessionStopGeneration', {
            'sessionId': sessionId,
          });
        } catch (_) {}
      }
    },
  );
  return controller.stream;
}