in runtime/src/main/scala/org/apache/pekko/grpc/internal/GrpcResponseHelpers.scala [44:70]
def apply[T](e: Source[T, NotUsed])(
implicit m: ProtobufSerializer[T],
writer: GrpcProtocolWriter,
system: ClassicActorSystemProvider): HttpResponse =
GrpcResponseHelpers(e, Source.single(TrailerOk))
def apply[T](e: Source[T, NotUsed], eHandler: ActorSystem => PartialFunction[Throwable, Trailers])(
implicit m: ProtobufSerializer[T],
writer: GrpcProtocolWriter,
system: ClassicActorSystemProvider): HttpResponse =
GrpcResponseHelpers(e, Source.single(TrailerOk), eHandler)
def responseForSingleElement[T](e: T, eHandler: ActorSystem => PartialFunction[Throwable, Trailers])(
implicit m: ProtobufSerializer[T],
writer: GrpcProtocolWriter,
system: ClassicActorSystemProvider): HttpResponse = {
val responseHeaders = headers.`Message-Encoding`(writer.messageEncoding.name) :: Nil
try writer.encodeDataToResponse(m.serialize(e), responseHeaders, TrailerOkAttribute)
catch {
case NonFatal(ex) =>
val trailers = GrpcEntityHelpers.handleException(ex, eHandler)
writer.encodeDataToResponse(
ByteString.empty,
responseHeaders,
Trailer(GrpcEntityHelpers.trailer(trailers.status, trailers.metadata).trailers))
}
}