Разделите поток одной подписки на 2 пары в Dart - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть поток сообщений: одни - запросы, другие - ответы.Я хотел бы создать 2 потока из моего источника.

_responseStream = _sourceStream.transform(decoder).where((message) => message.isResponse());
_requestStream = _sourceStream.transform(decoder).where((message) => message.isRequest());

Оптимизировано ли это решение?(с точки зрения производительности или других).

Заранее спасибо.

1 Ответ

0 голосов
/ 08 февраля 2019

https://pub.dartlang.org/packages/async содержит StreamSplitter, что позволяет сделать это.

final multiStream = StreamSplitter(_sourcStream.transform(decoder));
_responseStream = _multiStream.split().where((message) => message.isResponse());
_requestStream = _multiStream.split().where((message) => message.isRequest());
multiStream.close();

или

 final streams = StreamSplitter.splitFrom(_sourcStream.transform(decoder), 2); // 2 is the default and can be omitted
...