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