All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.twitter.server.view.EndpointRegistryView.scala Maven / Gradle / Ivy

There is a newer version: 18.9.1
Show newest version
package com.twitter.server.view

import com.twitter.finagle.{Addr, Dentry, Dtab}
import com.twitter.finagle.Namer.AddrWeightKey

private[server] object EndpointRegistryView {

  private[this] def renderDtab(dtab: Dtab): String =
    s"""
      
    ${ (for (Dentry(prefix, dst) <- dtab) yield { s"""
  • ${prefix.show} => ${dst.show}
  • """ }).mkString("") }
""" /** * Render current weights and socket addresses for paths in each dtab * @param observations Map of Dtabs to map of paths to Addrs */ def render( dtabEntries: Map[Dtab, Map[String, Addr]] ): String = s"""

Endpoints

    ${ (for((dtab, observations) <- dtabEntries) yield { s"""
  • Dtab
    ${renderDtab(dtab)}
    Resolved Endpoints
      ${ (for((path, addr) <- observations) yield { s"""
    • Path: ${path}
      """ + (addr match { case Addr.Bound(endpoints, metadata) => val weight: Double = metadata.get(AddrWeightKey) match { case Some(w: Double) => w case Some(failed) => // Namer records weights as Doubles, so this should never happen. -1.0 case None => 1.0 } s"""Weight: ${weight}
      Endpoints:
        ${ (for(endpoint <- endpoints) yield { s"""
      • ${endpoint}
      • """ }).mkString("\n") }
    • """ case Addr.Failed(why) => s"""Endpoint Resolution Failed: ${why}""" case _ => s"""Unbound Addr: ${addr}""" }) }).mkString("\n") }
  • """ }).mkString("\n") }
""" }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy