private def streamingTypes[RequestType: TypeTag, ResponseType: TypeTag]()

in http-server/src/main/scala/com/twitter/finatra/http/internal/routing/CallbackConverter.scala [195:228]


  private def streamingTypes[RequestType: TypeTag, ResponseType: TypeTag](
    requestCallback: Request => ResponseType,
    manifested: Manifest[_]
  ): Request => Future[Response] = {
    manifested match {
      case asyncStreamBuf if asyncStreamBuf == manifest[AsyncStream[Buf]] =>
        request: Request =>
          val asyncStream = requestCallback(request).asInstanceOf[AsyncStream[Buf]]
          responseBuilder.streaming(asyncStream).toFutureResponse()
      case asyncStream if runtimeClassEqs[AsyncStream[_]](asyncStream) =>
        request: Request =>
          val asyncStream = requestCallback(request).asInstanceOf[AsyncStream[_]]
          responseBuilder.streaming(asyncStream).toFutureResponse()
      case readerBuf if readerBuf == manifest[Reader[Buf]] =>
        request: Request =>
          val reader = requestCallback(request).asInstanceOf[Reader[Buf]]
          responseBuilder.streaming(reader).toFutureResponse()
      case reader if runtimeClassEqs[Reader[_]](reader) =>
        request: Request =>
          val reader = requestCallback(request).asInstanceOf[Reader[_]]
          responseBuilder.streaming(reader).toFutureResponse()
      case streamingResponse if runtimeClassEqs[StreamingResponse[Any, _]](streamingResponse) =>
        request: Request =>
          streamingResponse.typeArguments.head match {
            case _: Reader[_] =>
              requestCallback(request).asInstanceOf[StreamingResponse[Reader, _]].toFutureResponse()
            case _: AsyncStream[_] =>
              requestCallback(request)
                .asInstanceOf[StreamingResponse[AsyncStream, _]].toFutureResponse()
            case _ =>
              requestCallback(request).asInstanceOf[StreamingResponse[Any, _]].toFutureResponse()
          }
    }
  }