Packages

  • package root
    Definition Classes
    root
  • package com
    Definition Classes
    root
  • package twitter

    Start with com.twitter.finagle.

    Definition Classes
    com
  • package finagle

    Finagle is an extensible RPC system.

    Finagle is an extensible RPC system.

    Services are represented by class com.twitter.finagle.Service. Clients make use of com.twitter.finagle.Service objects while servers implement them.

    Finagle contains a number of protocol implementations; each of these implement Client and/or com.twitter.finagle.Server. For example, Finagle's HTTP implementation, com.twitter.finagle.Http (in package finagle-http), exposes both.

    Thus a simple HTTP server is built like this:

    import com.twitter.finagle.{Http, Service}
    import com.twitter.finagle.http.{Request, Response}
    import com.twitter.util.{Await, Future}
    
    val service = new Service[Request, Response] {
      def apply(req: Request): Future[Response] =
        Future.value(Response())
    }
    val server = Http.server.serve(":8080", service)
    Await.ready(server)

    We first define a service to which requests are dispatched. In this case, the service returns immediately with a HTTP 200 OK response, and with no content.

    This service is then served via the Http protocol on TCP port 8080. Finally we wait for the server to stop serving.

    We can now query our web server:

    % curl -D - localhost:8080
    HTTP/1.1 200 OK

    Building an HTTP client is also simple. (Note that type annotations are added for illustration.)

    import com.twitter.finagle.{Http, Service}
    import com.twitter.finagle.http.{Request, Response}
    import com.twitter.util.{Future, Return, Throw}
    
    val client: Service[Request, Response] = Http.client.newService("localhost:8080")
    val f: Future[Response] = client(Request()).respond {
      case Return(rep) =>
        printf("Got HTTP response %s\n", rep)
      case Throw(exc) =>
        printf("Got error %s\n", exc)
    }

    Http.client.newService("localhost:8080") constructs a new com.twitter.finagle.Service instance connected to localhost TCP port 8080. We then issue a HTTP/1.1 GET request to URI "/". The service returns a com.twitter.util.Future representing the result of the operation. We listen to this future, printing an appropriate message when the response arrives.

    The Finagle homepage contains useful documentation and resources for using Finagle.

    Definition Classes
    twitter
  • package http2
    Definition Classes
    finagle
  • package transport
    Definition Classes
    http2
  • package common
    Definition Classes
    transport
  • ClientDiscardedRequestException
  • StripHeadersHandler

object StripHeadersHandler extends ChannelDuplexHandler

Netty uses a denylist containing common connection-related headers that should be removed from h2 messages. However, a few cases need to be handled separately: 1) All headers mentioned in the "connection" header must be stripped 2) The "TE" header can exist iff its value is "trailers" See https://tools.ietf.org/html/rfc7540#section-8.1.2.2 3) The "http2-settings" headers is left on the server side, but we probably don't need it anymore.

Annotations
@Sharable()
Linear Supertypes
ChannelDuplexHandler, ChannelOutboundHandler, ChannelInboundHandlerAdapter, ChannelInboundHandler, ChannelHandlerAdapter, ChannelHandler, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. StripHeadersHandler
  2. ChannelDuplexHandler
  3. ChannelOutboundHandler
  4. ChannelInboundHandlerAdapter
  5. ChannelInboundHandler
  6. ChannelHandlerAdapter
  7. ChannelHandler
  8. AnyRef
  9. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. val HandlerName: String
  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def bind(arg0: ChannelHandlerContext, arg1: SocketAddress, arg2: ChannelPromise): Unit
    Definition Classes
    ChannelDuplexHandler → ChannelOutboundHandler
    Annotations
    @throws(classOf[java.lang.Exception]) @Skip()
  7. def channelActive(arg0: ChannelHandlerContext): Unit
    Definition Classes
    ChannelInboundHandlerAdapter → ChannelInboundHandler
    Annotations
    @throws(classOf[java.lang.Exception]) @Skip()
  8. def channelInactive(arg0: ChannelHandlerContext): Unit
    Definition Classes
    ChannelInboundHandlerAdapter → ChannelInboundHandler
    Annotations
    @throws(classOf[java.lang.Exception]) @Skip()
  9. def channelRead(ctx: ChannelHandlerContext, msg: AnyRef): Unit
    Definition Classes
    StripHeadersHandler → ChannelInboundHandlerAdapter → ChannelInboundHandler
  10. def channelReadComplete(arg0: ChannelHandlerContext): Unit
    Definition Classes
    ChannelInboundHandlerAdapter → ChannelInboundHandler
    Annotations
    @throws(classOf[java.lang.Exception]) @Skip()
  11. def channelRegistered(arg0: ChannelHandlerContext): Unit
    Definition Classes
    ChannelInboundHandlerAdapter → ChannelInboundHandler
    Annotations
    @throws(classOf[java.lang.Exception]) @Skip()
  12. def channelUnregistered(arg0: ChannelHandlerContext): Unit
    Definition Classes
    ChannelInboundHandlerAdapter → ChannelInboundHandler
    Annotations
    @throws(classOf[java.lang.Exception]) @Skip()
  13. def channelWritabilityChanged(arg0: ChannelHandlerContext): Unit
    Definition Classes
    ChannelInboundHandlerAdapter → ChannelInboundHandler
    Annotations
    @throws(classOf[java.lang.Exception]) @Skip()
  14. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  15. def close(arg0: ChannelHandlerContext, arg1: ChannelPromise): Unit
    Definition Classes
    ChannelDuplexHandler → ChannelOutboundHandler
    Annotations
    @throws(classOf[java.lang.Exception]) @Skip()
  16. def connect(arg0: ChannelHandlerContext, arg1: SocketAddress, arg2: SocketAddress, arg3: ChannelPromise): Unit
    Definition Classes
    ChannelDuplexHandler → ChannelOutboundHandler
    Annotations
    @throws(classOf[java.lang.Exception]) @Skip()
  17. def deregister(arg0: ChannelHandlerContext, arg1: ChannelPromise): Unit
    Definition Classes
    ChannelDuplexHandler → ChannelOutboundHandler
    Annotations
    @throws(classOf[java.lang.Exception]) @Skip()
  18. def disconnect(arg0: ChannelHandlerContext, arg1: ChannelPromise): Unit
    Definition Classes
    ChannelDuplexHandler → ChannelOutboundHandler
    Annotations
    @throws(classOf[java.lang.Exception]) @Skip()
  19. def ensureNotSharable(): Unit
    Attributes
    protected[channel]
    Definition Classes
    ChannelHandlerAdapter
  20. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  21. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  22. def exceptionCaught(arg0: ChannelHandlerContext, arg1: Throwable): Unit
    Definition Classes
    ChannelInboundHandlerAdapter → ChannelInboundHandler → ChannelHandlerAdapter → ChannelHandler
    Annotations
    @throws(classOf[java.lang.Exception]) @Skip()
  23. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  24. def flush(arg0: ChannelHandlerContext): Unit
    Definition Classes
    ChannelDuplexHandler → ChannelOutboundHandler
    Annotations
    @throws(classOf[java.lang.Exception]) @Skip()
  25. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  26. def handlerAdded(arg0: ChannelHandlerContext): Unit
    Definition Classes
    ChannelHandlerAdapter → ChannelHandler
    Annotations
    @throws(classOf[java.lang.Exception])
  27. def handlerRemoved(arg0: ChannelHandlerContext): Unit
    Definition Classes
    ChannelHandlerAdapter → ChannelHandler
    Annotations
    @throws(classOf[java.lang.Exception])
  28. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  29. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  30. def isSharable(): Boolean
    Definition Classes
    ChannelHandlerAdapter
  31. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  32. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  33. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  34. def read(arg0: ChannelHandlerContext): Unit
    Definition Classes
    ChannelDuplexHandler → ChannelOutboundHandler
    Annotations
    @throws(classOf[java.lang.Exception]) @Skip()
  35. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  36. def toString(): String
    Definition Classes
    AnyRef → Any
  37. def userEventTriggered(arg0: ChannelHandlerContext, arg1: AnyRef): Unit
    Definition Classes
    ChannelInboundHandlerAdapter → ChannelInboundHandler
    Annotations
    @throws(classOf[java.lang.Exception]) @Skip()
  38. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  39. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  40. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  41. def write(ctx: ChannelHandlerContext, msg: AnyRef, p: ChannelPromise): Unit
    Definition Classes
    StripHeadersHandler → ChannelDuplexHandler → ChannelOutboundHandler

Inherited from ChannelDuplexHandler

Inherited from ChannelOutboundHandler

Inherited from ChannelInboundHandlerAdapter

Inherited from ChannelInboundHandler

Inherited from ChannelHandlerAdapter

Inherited from ChannelHandler

Inherited from AnyRef

Inherited from Any

Ungrouped