in server/src/main/scala/com/twitter/server/AdminHttpServer.scala [147:167]
private[server] def combine(
muxers: Seq[HttpMuxer],
indexEntries: () => Seq[IndexView.Entry]
): Service[Request, Response] =
new Service[Request, Response] {
def apply(req: Request): Future[Response] = {
val routes = muxers.flatMap(_.route(req))
if (routes.isEmpty) {
Future.value(Response(req.version, Status.NotFound))
} else {
val route = routes.maxBy(_.pattern.length)
val alias = route.index.map(_.alias).getOrElse(route.pattern)
val indexFilter = new IndexView(alias, route.pattern, indexEntries)
val svc = indexFilter.andThen(route.handler)
svc(req)
}
}
override def close(deadline: Time): Future[Unit] =
Closable.all(muxers: _*).close(deadline)
}