in runtime/src/main/scala/org/apache/pekko/grpc/scaladsl/GrpcExceptionHandler.scala [35:54]
private def log(system: ActorSystem) = Logging(system, "org.apache.pekko.grpc.scaladsl.GrpcExceptionHandler")
def defaultMapper(system: ActorSystem): PartialFunction[Throwable, Trailers] = {
case e: ExecutionException =>
if (e.getCause == null) INTERNAL
else defaultMapper(system)(e.getCause)
case grpcException: GrpcServiceException => Trailers(grpcException.status, grpcException.metadata)
case e: NotImplementedError => Trailers(Status.UNIMPLEMENTED.withDescription(e.getMessage))
case e: UnsupportedOperationException => Trailers(Status.UNIMPLEMENTED.withDescription(e.getMessage))
case _: MissingParameterException => INVALID_ARGUMENT
case e: StatusRuntimeException =>
val meta = Option(e.getTrailers).getOrElse(new io.grpc.Metadata())
Trailers(e.getStatus, new GrpcMetadataImpl(meta))
case e: PeerClosedStreamException =>
log(system).warning(e, "Peer closed the stream: [{}]", e.getMessage)
INTERNAL
case other =>
log(system).error(other, "Unhandled error: [{}]", other.getMessage)
INTERNAL
}