start method

void start()

Start reading from stdin and writing responses to stdout.

Implementation

void start() {
  bridge._setState(BridgeConnectionState.connected);

  _stdinSubscription = _stdin
      .transform(utf8.decoder)
      .transform(const LineSplitter())
      .listen(
        (line) {
          if (line.trim().isEmpty) return;
          bridge._handleRawMessage(line);
        },
        onError: (Object e) {
          bridge._setState(BridgeConnectionState.error);
        },
        onDone: () {
          bridge._setState(BridgeConnectionState.disconnected);
        },
      );

  // Intercept outgoing messages and write them to stdout.
  bridge.messages.listen((msg) {
    _writeLine(msg.encode());
  });
}