Превратите `func(in: Source[A]) : Source[B]` в `Flow[A, B]`

Я использую akka-grpc для создания привязок клиентов. Обычно они имеют вид

func[A, B](in: Source[A]) : Source[B],

то есть они потребляют Source[A] и предлагают Source[B].

Теперь я хочу превратить func в Flow[A, B], чтобы использовать их с akka-stream.


person user3612643    schedule 21.03.2019    source источник


Ответы (1)


Решение:

  def SourceProcessor[In, Out](f : Source[In, NotUsed] => Source[Out, NotUsed]): Flow[In, Out, NotUsed] = 
    Flow[In].prefixAndTail(0).flatMapConcat { case (Nil, in) => f(in) }

Он использует prefixAndTail, чтобы захватить андерилинга Source.

person user3612643    schedule 22.03.2019