public class HttpGenerator
extends java.lang.Object
If the system property "org.eclipse.jetty.http.HttpGenerator.STRICT" is set to true, then the generator will strictly pass on the exact strings received from methods and header fields. Otherwise a fast case insensitive string lookup is used that may alter the case and white space of some methods/headers
Modifier and Type | Class and Description |
---|---|
private static class |
HttpGenerator.PreparedResponse |
static class |
HttpGenerator.Result |
static class |
HttpGenerator.State |
Modifier and Type | Field and Description |
---|---|
private static Trie<java.lang.Boolean> |
__assumedContentMethods |
private static byte[] |
__colon_space |
private static HttpGenerator.PreparedResponse[] |
__preprepared |
static boolean |
__STRICT |
private long |
_contentPrepared |
private HttpTokens.EndOfContent |
_endOfContent |
private boolean |
_needCRLF |
private boolean |
_noContentResponse |
private java.lang.Boolean |
_persistent |
private int |
_send |
private HttpGenerator.State |
_state |
private java.util.function.Supplier<HttpFields> |
_trailers |
static int |
CHUNK_SIZE |
private static byte[] |
CONNECTION_CLOSE |
private static byte[] |
CONTENT_LENGTH_0 |
static MetaData.Response |
CONTINUE_100_INFO |
private static byte[] |
HTTP_1_1_SPACE |
private static byte[] |
LAST_CHUNK |
private static Logger |
LOG |
static MetaData.Response |
PROGRESS_102_INFO |
static MetaData.Response |
RESPONSE_500_INFO |
private static byte[][] |
SEND |
private static int |
SEND_SERVER |
private static int |
SEND_XPOWEREDBY |
private static byte[] |
TRANSFER_ENCODING_CHUNKED |
private static byte[] |
ZERO_CHUNK |
Constructor and Description |
---|
HttpGenerator() |
HttpGenerator(boolean sendServerVersion,
boolean sendXPoweredBy) |
Modifier and Type | Method and Description |
---|---|
void |
abort() |
private HttpGenerator.Result |
committed(java.nio.ByteBuffer chunk,
java.nio.ByteBuffer content,
boolean last) |
private HttpGenerator.Result |
completing(java.nio.ByteBuffer chunk,
java.nio.ByteBuffer content) |
private void |
generateHeaders(MetaData info,
java.nio.ByteBuffer header,
java.nio.ByteBuffer content,
boolean last) |
HttpGenerator.Result |
generateRequest(MetaData.Request info,
java.nio.ByteBuffer header,
java.nio.ByteBuffer chunk,
java.nio.ByteBuffer content,
boolean last) |
private void |
generateRequestLine(MetaData.Request request,
java.nio.ByteBuffer header) |
HttpGenerator.Result |
generateResponse(MetaData.Response info,
boolean head,
java.nio.ByteBuffer header,
java.nio.ByteBuffer chunk,
java.nio.ByteBuffer content,
boolean last) |
HttpGenerator.Result |
generateResponse(MetaData.Response info,
java.nio.ByteBuffer header,
java.nio.ByteBuffer chunk,
java.nio.ByteBuffer content,
boolean last)
Deprecated.
|
private void |
generateResponseLine(MetaData.Response response,
java.nio.ByteBuffer header) |
private void |
generateTrailers(java.nio.ByteBuffer buffer,
HttpFields trailer) |
long |
getContentPrepared() |
static byte[] |
getReasonBuffer(int code) |
private byte[] |
getReasonBytes(java.lang.String reason) |
boolean |
getSendServerVersion()
Deprecated.
|
HttpGenerator.State |
getState() |
boolean |
isChunking() |
boolean |
isCommitted() |
boolean |
isEnd() |
boolean |
isIdle() |
boolean |
isNoContent() |
boolean |
isPersistent() |
boolean |
isState(HttpGenerator.State state) |
boolean |
isWritten() |
private void |
prepareChunk(java.nio.ByteBuffer chunk,
int remaining) |
private static void |
putContentLength(java.nio.ByteBuffer header,
long contentLength) |
private static void |
putSanitisedName(java.lang.String s,
java.nio.ByteBuffer buffer) |
private static void |
putSanitisedValue(java.lang.String s,
java.nio.ByteBuffer buffer) |
static void |
putTo(HttpField field,
java.nio.ByteBuffer bufferInFillMode) |
static void |
putTo(HttpFields fields,
java.nio.ByteBuffer bufferInFillMode) |
void |
reset() |
static void |
setJettyVersion(java.lang.String serverVersion) |
void |
setPersistent(boolean persistent) |
void |
setSendServerVersion(boolean sendServerVersion)
Deprecated.
|
java.lang.String |
toString() |
private static final Logger LOG
public static final boolean __STRICT
private static final byte[] __colon_space
public static final MetaData.Response CONTINUE_100_INFO
public static final MetaData.Response PROGRESS_102_INFO
public static final MetaData.Response RESPONSE_500_INFO
public static final int CHUNK_SIZE
private HttpGenerator.State _state
private HttpTokens.EndOfContent _endOfContent
private long _contentPrepared
private boolean _noContentResponse
private java.lang.Boolean _persistent
private java.util.function.Supplier<HttpFields> _trailers
private final int _send
private static final int SEND_SERVER
private static final int SEND_XPOWEREDBY
private static final Trie<java.lang.Boolean> __assumedContentMethods
private boolean _needCRLF
private static final byte[] ZERO_CHUNK
private static final byte[] LAST_CHUNK
private static final byte[] CONTENT_LENGTH_0
private static final byte[] CONNECTION_CLOSE
private static final byte[] HTTP_1_1_SPACE
private static final byte[] TRANSFER_ENCODING_CHUNKED
private static final byte[][] SEND
private static final HttpGenerator.PreparedResponse[] __preprepared
public HttpGenerator()
public HttpGenerator(boolean sendServerVersion, boolean sendXPoweredBy)
public static void setJettyVersion(java.lang.String serverVersion)
public void reset()
@Deprecated public boolean getSendServerVersion()
@Deprecated public void setSendServerVersion(boolean sendServerVersion)
public HttpGenerator.State getState()
public boolean isState(HttpGenerator.State state)
public boolean isIdle()
public boolean isEnd()
public boolean isCommitted()
public boolean isChunking()
public boolean isNoContent()
public void setPersistent(boolean persistent)
public boolean isPersistent()
public boolean isWritten()
public long getContentPrepared()
public void abort()
public HttpGenerator.Result generateRequest(MetaData.Request info, java.nio.ByteBuffer header, java.nio.ByteBuffer chunk, java.nio.ByteBuffer content, boolean last) throws java.io.IOException
java.io.IOException
private HttpGenerator.Result committed(java.nio.ByteBuffer chunk, java.nio.ByteBuffer content, boolean last)
private HttpGenerator.Result completing(java.nio.ByteBuffer chunk, java.nio.ByteBuffer content)
@Deprecated public HttpGenerator.Result generateResponse(MetaData.Response info, java.nio.ByteBuffer header, java.nio.ByteBuffer chunk, java.nio.ByteBuffer content, boolean last) throws java.io.IOException
java.io.IOException
public HttpGenerator.Result generateResponse(MetaData.Response info, boolean head, java.nio.ByteBuffer header, java.nio.ByteBuffer chunk, java.nio.ByteBuffer content, boolean last) throws java.io.IOException
java.io.IOException
private void prepareChunk(java.nio.ByteBuffer chunk, int remaining)
private void generateTrailers(java.nio.ByteBuffer buffer, HttpFields trailer)
private void generateRequestLine(MetaData.Request request, java.nio.ByteBuffer header)
private void generateResponseLine(MetaData.Response response, java.nio.ByteBuffer header)
private byte[] getReasonBytes(java.lang.String reason)
private void generateHeaders(MetaData info, java.nio.ByteBuffer header, java.nio.ByteBuffer content, boolean last)
private static void putContentLength(java.nio.ByteBuffer header, long contentLength)
public static byte[] getReasonBuffer(int code)
public java.lang.String toString()
toString
in class java.lang.Object
private static void putSanitisedName(java.lang.String s, java.nio.ByteBuffer buffer)
private static void putSanitisedValue(java.lang.String s, java.nio.ByteBuffer buffer)
public static void putTo(HttpField field, java.nio.ByteBuffer bufferInFillMode)
public static void putTo(HttpFields fields, java.nio.ByteBuffer bufferInFillMode)