Превратить ` функцию (в: источнике[A]): источнике[B]` в `Поток[A, B]`

#akka-stream #akka-grpc

#akka-поток #akka-grpc

Вопрос:

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

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

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

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

Ответ №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 .