start method

void start({
  1. ProtocolMessageHandler? onMessage,
  2. void onDone()?,
  3. void onError(
    1. Object? error
    )?,
})

Implementation

void start({ProtocolMessageHandler? onMessage, void Function()? onDone, void Function(Object? error)? onError}) {
  if (_sendLoop != null) {
    throw StateError('protocol already started');
  }
  if (onMessage != null) {
    addHandler('*', onMessage);
  }
  _open = true;
  channel.start(
    onDataReceived,
    onDone: () {
      _setCloseState(kind: ProtocolCloseKind.server);
      _shutdown();
      if (!_done.isCompleted) {
        _done.complete(null);
      }
      onDone?.call();
    },
    onError: (Object? error) {
      _setCloseState(kind: ProtocolCloseKind.error, reason: error?.toString());
      _shutdown();
      if (!_done.isCompleted) {
        _done.complete(error);
      }
      onError?.call(error);
    },
  );
  _sendLoop = _runSendLoop();
}