Если поток А производит
Pair<Source<ByteString,?>, Object>
Как мне соединить этот выход с входом потока B, который отображается на источнике. Например, выход потока B будет
Pair<InputStream<Long>,Object>.
Если поток А производит
Pair<Source<ByteString,?>, Object>
Как мне соединить этот выход с входом потока B, который отображается на источнике. Например, выход потока B будет
Pair<InputStream<Long>,Object>.
Если вам предоставлен источник того типа, который вы предоставили:
Source< Pair<Source<ByteString, BoxedUnit>, Object>, BoxedUnit> pairSource;
И вам также дан поток, который преобразует значения ByteString
в InputStream<Long>
:
Flow<ByteString, InputStream<Long>, ?> byteStrToInputStream;
Затем это можно преобразовать с помощью flatMapConcat:
Source< Pair<InputStream<Long>,Object>, BoxedUnit> inputStreamSource =
pairSource.flatMapConcat( pair -> {
pair.getKey()
.via(byteStrToInputStream)
.map(inputStream -> ImmutablePair(inputStream, pair.getValue()))
})
Каждый из входящих источников ByteString исчерпывается, и результаты объединяются. Исходная правая часть каждой пары, а именно Object
, добавляется к каждому InputStream.