def negotiate()

in runtime/src/main/scala/org/apache/pekko/grpc/internal/Codecs.scala [47:61]


  def negotiate(request: jm.HttpRequest): Codec = {
    val headers = extractHeaders(request)
    val accepted = `Message-Accept-Encoding`.findIn(headers)

    if (accepted.length == 0) {
      Identity
    } else if (accepted.length == 1) {
      supportedByName.get(accepted(0)) match {
        case Some(codec) => codec
        case None        => Identity
      }
    } else {
      accepted.collectFirst { case a if supportedNames.contains(a) => supportedByName(a) }.getOrElse(Identity)
    }
  }