def decodeMessageBody()

in finagle-mux/src/main/scala/com/twitter/finagle/mux/transport/Message.scala [627:652]


  def decodeMessageBody(typ: Byte, tag: Int, byteReader: ByteReader): Message = {
    if (Tags.isFragment(tag)) Fragment(typ, tag, byteReader.readAll())
    else
      typ match {
        case Types.Tinit =>
          val (version, ctx) = Init.decode(byteReader)
          Tinit(tag, version, ctx)
        case Types.Rinit =>
          val (version, ctx) = Init.decode(byteReader)
          Rinit(tag, version, ctx)
        case Types.Treq => decodeTreq(tag, byteReader)
        case Types.Rreq => decodeRreq(tag, byteReader)
        case Types.Tdispatch => decodeTdispatch(tag, byteReader)
        case Types.Rdispatch => decodeRdispatch(tag, byteReader)
        case Types.Tdrain => Tdrain(tag)
        case Types.Rdrain => Rdrain(tag)
        case Types.Tping => Tping(tag)
        case Types.Rping => Rping(tag)
        case Types.Rerr | Types.BAD_Rerr => Rerr(tag, decodeUtf8(byteReader.readAll()))
        case Types.Rdiscarded => Rdiscarded(tag)
        case Types.Tdiscarded | Types.BAD_Tdiscarded => decodeTdiscarded(byteReader)
        case Types.Tlease => decodeTlease(byteReader)
        case unknown =>
          throwBadMessageException(unknownMessageDescription(unknown, tag, byteReader))
      }
  }