getStreamingResponse method
Stream<RealtimeServerMessage>
getStreamingResponse({
- CancellationToken? cancellationToken,
override
Streams the response messages generated by the session.
This cannot be called multiple times concurrently on the same session instance.
Implementation
@override
Stream<RealtimeServerMessage> getStreamingResponse({
CancellationToken? cancellationToken,
}) {
Stream<RealtimeServerMessage> streamFn() async* {
if (_logger.isEnabled(LogLevel.debug)) {
_logger.logDebug('getStreamingResponse invoked.');
}
try {
await for (final message in _innerSession.getStreamingResponse(
cancellationToken: cancellationToken,
)) {
if (_logger.isEnabled(LogLevel.trace)) {
_logger.logTrace(
'getStreamingResponse received message. '
'Message: ${_loggable(message)}.',
);
}
yield message;
}
if (_logger.isEnabled(LogLevel.debug)) {
_logger.logDebug('getStreamingResponse completed.');
}
} on OperationCanceledException {
if (_logger.isEnabled(LogLevel.debug)) {
_logger.logDebug('getStreamingResponse canceled.');
}
rethrow;
} catch (e) {
_logger.logError('getStreamingResponse failed.', error: e);
rethrow;
}
}
return streamFn();
}