Превратите `func (in: Source [A]): ​​Source [B]` в `Flow [A, B]` - PullRequest
0 голосов
/ 21 марта 2019

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

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

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

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

1 Ответ

0 голосов
/ 22 марта 2019

Решение:

  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.

...