stdioChannel function

StreamChannel<String> stdioChannel({
  1. required Stream<List<int>> input,
  2. required StreamSink<List<int>> output,
})

Creates a StreamChannel for Stdio communication where messages are separated by newlines.

This expects incoming messages on input, and writes messages to output.

Implementation

StreamChannel<String> stdioChannel({
  required Stream<List<int>> input,
  required StreamSink<List<int>> output,
}) => StreamChannel.withCloseGuarantee(input, output)
    .transform(StreamChannelTransformer.fromCodec(utf8))
    .transformStream(const LineSplitter())
    .transformSink(
      StreamSinkTransformer.fromHandlers(
        handleData: (data, sink) {
          sink.add('$data\n');
        },
      ),
    );