start method

Future<void> start({
  1. void onDone()?,
  2. void onError(
    1. Object? error
    )?,
})

Implementation

Future<void> start({void Function()? onDone, void Function(Object? error)? onError}) async {
  protocol.start(
    onDone: () {
      final error = _roomClosedBeforeReadyError(protocol);
      _failPendingRequests(error);
      unawaited(_failToolCallStreams(error: error));
      if (!_ready.isCompleted) {
        _ready.completeError(error);
      }
      if (onDone != null) {
        onDone();
      }
    },
    onError: (error) {
      final wrapped = _wrapRoomConnectionError(error);
      _failPendingRequests(wrapped);
      unawaited(_failToolCallStreams(error: wrapped));
      if (!_ready.isCompleted) {
        _ready.completeError(wrapped);
      }
      if (onError != null) {
        onError(wrapped);
      }
    },
  );

  sync.start();

  await ready;
}