0

フロー A が生成する場合

Pair<Source<ByteString,?>, Object> 

このアウトレットを、ソースにマッピングされているフロー B のインレットに接続するにはどうすればよいですか。たとえば、フロー B のアウトレットは次のようになります。

Pair<InputStream<Long>,Object>.
4

1 に答える 1

0

指定したタイプの Source が与えられた場合:

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()))
  })

受信した ByteStrings の各ソースが使い果たされ、結果が連結されます。各ペアの元の右側、つまりObject各 InputStream に追加されます。

于 2015-11-29T15:57:25.750 に答える