Interface HttpObject

All Known Subinterfaces:
FullHttpMessage, FullHttpRequest, FullHttpResponse, HttpContent, HttpMessage, HttpRequest, HttpResponse, LastHttpContent
All Known Implementing Classes:
DefaultFullHttpRequest, DefaultFullHttpResponse, DefaultHttpContent, DefaultHttpRequest, DefaultHttpResponse, DefaultLastHttpContent, HttpCache.Answer, ServerReplay.Replayed

public sealed interface HttpObject permits HttpMessage, HttpContent
Base type of everything that flows through HttpFilters: a message head (HttpRequest / HttpResponse), a piece of body (HttpContent), the end of a body (LastHttpContent), or a whole message (FullHttpRequest / FullHttpResponse).

This mirrors the object model LittleProxy inherited from Netty, so filters port over with little more than an import change.

The hierarchy is sealed: its implementations are the Default* classes, which filters construct and may subclass. A switch over these types can therefore be exhaustive; put the FullHttp* cases before HttpRequest/HttpResponse, and LastHttpContent before HttpContent:


 switch (httpObject) {
     case FullHttpResponse full -> ...;   // a whole buffered response
     case HttpResponse head -> ...;       // a streamed response's head
     case LastHttpContent last -> ...;    // the end of a body (with trailers)
     case HttpContent piece -> ...;       // a piece of a body
     case HttpRequest request -> ...;
 }