Package org.apache.coyote.http11
Class Http11OutputBuffer
java.lang.Object
org.apache.coyote.http11.Http11OutputBuffer
- All Implemented Interfaces:
- HttpOutputBuffer,- OutputBuffer
Provides buffering for the HTTP headers (allowing responses to be reset before they have been committed) and the link
 to the Socket for writing the headers (once committed) and the response body. Note that buffering of the response
 body happens at a higher level.
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionprotected classThis class is an output buffer which will write data to a socket.
- 
Field SummaryFieldsModifier and TypeFieldDescriptionprotected OutputFilter[]Active filters for the current request.protected longBytes written to client for the current requestprotected OutputFilter[]Filter library for processing the response body.protected final ByteBufferThe buffer used for header composition.protected intIndex of the last active filter.protected HttpOutputBufferUnderlying output buffer.protected final ResponseAssociated Coyote response.protected booleanFinished flag.protected static final StringManagerThe string manager for this package.protected SocketWrapperBase<?>Wrapper for socket where data will be written to.
- 
Constructor SummaryConstructorsModifierConstructorDescriptionprotectedHttp11OutputBuffer(Response response, int headerBufferSize) 
- 
Method SummaryModifier and TypeMethodDescriptionvoidaddActiveFilter(OutputFilter filter) Add an output filter to the active filters for the current response.voidaddFilter(OutputFilter filter) Add an output filter to the filter library.protected voidcommit()Commit the response.intdoWrite(ByteBuffer chunk) Write the given data to the response.voidend()Finish writing the current response.voidEnd the header block.voidflush()Flush the response.protected booleanflushBuffer(boolean block) Writes any remaining buffered data.longBytes written to the underlying socket.Get filters.booleanvoidinit(SocketWrapperBase<?> socketWrapper) protected final booleanIs standard Servlet blocking IO being used for output?protected final booleanisReady()voidEnd processing of current HTTP request.voidrecycle()Recycle the output buffer.voidvoidsendAck()voidsendHeader(MessageBytes name, MessageBytes value) Send a header.voidSend the response status line.voidwrite(byte[] b) This method will write the contents of the specified byte buffer to the output stream, without filtering.
- 
Field Details- 
smThe string manager for this package.
- 
responseAssociated Coyote response.
- 
responseFinishedprotected boolean responseFinishedFinished flag.
- 
headerBufferThe buffer used for header composition.
- 
filterLibraryFilter library for processing the response body.
- 
activeFiltersActive filters for the current request.
- 
lastActiveFilterprotected int lastActiveFilterIndex of the last active filter.
- 
outputStreamOutputBufferUnderlying output buffer.
- 
socketWrapperWrapper for socket where data will be written to.
- 
byteCountprotected long byteCountBytes written to client for the current request
 
- 
- 
Constructor Details- 
Http11OutputBuffer
 
- 
- 
Method Details- 
addFilterAdd an output filter to the filter library. Note that calling this method resets the currently active filters to none.- Parameters:
- filter- The filter to add
 
- 
getFiltersGet filters.- Returns:
- The current filter library containing all possible filters
 
- 
addActiveFilterAdd an output filter to the active filters for the current response.The filter does not have to be present in getFilters().A filter can only be added to a response once. If the filter has already been added to this response then this method will be a NO-OP. - Parameters:
- filter- The filter to add
 
- 
doWriteDescription copied from interface:OutputBufferWrite the given data to the response. The caller owns the chunks.- Specified by:
- doWritein interface- OutputBuffer
- Parameters:
- chunk- data to write
- Returns:
- The number of bytes written which may be less than available in the input chunk
- Throws:
- IOException- an underlying I/O error occurred
 
- 
getBytesWrittenpublic long getBytesWritten()Description copied from interface:OutputBufferBytes written to the underlying socket. This includes the effects of chunking, compression, etc.- Specified by:
- getBytesWrittenin interface- OutputBuffer
- Returns:
- Bytes written for the current request
 
- 
flushFlush the response.- Specified by:
- flushin interface- HttpOutputBuffer
- Throws:
- IOException- an underlying I/O error occurred
 
- 
endDescription copied from interface:HttpOutputBufferFinish writing the current response. It is acceptable to write extra bytes usingOutputBuffer.doWrite(java.nio.ByteBuffer)during the execution of this method.- Specified by:
- endin interface- HttpOutputBuffer
- Throws:
- IOException- If an I/O error occurs while writing to the client
 
- 
recyclepublic void recycle()Recycle the output buffer. This should be called when closing the connection.
- 
nextRequestpublic void nextRequest()End processing of current HTTP request. Note: All bytes of the current request should have been already consumed. This method only resets all the pointers so that we are ready to parse the next HTTP request.
- 
init
- 
sendAck- Throws:
- IOException
 
- 
commitCommit the response.- Throws:
- IOException- an underlying I/O error occurred
 
- 
sendStatuspublic void sendStatus()Send the response status line.
- 
sendHeaderSend a header.- Parameters:
- name- Header name
- value- Header value
 
- 
endHeaderspublic void endHeaders()End the header block.
- 
writepublic void write(byte[] b) This method will write the contents of the specified byte buffer to the output stream, without filtering. This method is meant to be used to write the response header.- Parameters:
- b- data to be written
 
- 
flushBufferWrites any remaining buffered data.- Parameters:
- block- Should this method block until the buffer is empty
- Returns:
- trueif data remains in the buffer (which can only happen in non-blocking mode) else- false.
- Throws:
- IOException- Error writing data
 
- 
isBlockingprotected final boolean isBlocking()Is standard Servlet blocking IO being used for output?- Returns:
- trueif this is blocking IO
 
- 
isReadyprotected final boolean isReady()
- 
hasDataToWritepublic boolean hasDataToWrite()
- 
registerWriteInterestpublic void registerWriteInterest()
 
-