createStream method

Future<MessageStream> createStream({
  1. required Participant to,
  2. required Map<String, dynamic> header,
})

Implementation

Future<MessageStream> createStream({required Participant to, required Map<String, dynamic> header}) async {
  final streamId = Uuid().v4();

  final stream = MessageStream._(
    header: header,
    streamId: streamId,
    to: to,
    client: this,
    controller: StreamController<MessageStreamChunk>(),
  );
  final completer = Completer();
  pendingStreams[streamId] = completer;
  _streams[streamId] = stream;
  await completer.future;

  await sendMessage(to: to, type: "stream.open", message: {"stream_id": streamId, "header": header});

  return stream;
}