in opencensus/src/main/scala/com/twitter/server/opencensus/ZPagesAdminRoutes.scala [13:35]
private def zpageHandlerToService(
handler: ZPageHandler,
name: String
): Service[Request, Response] =
new Service[Request, Response] {
override def toString: String = s"ZPageHandlerService($name)"
def apply(request: Request): Future[Response] = {
val requestParams =
request
.getParamNames().asScala.map { name => name -> request.getParam(name) }.toMap.asJava
// process in a FuturePool to handle the possibility
// of zpages having blocking code.
FuturePool.unboundedPool {
val output = new ByteArrayOutputStream()
handler.emitHtml(requestParams, output)
Response(request)
.status(Status.Ok)
.content(Buf.ByteArray.Owned(output.toByteArray))
}
}
}