org.apache.coyote.http11

## Class Http11AprProcessor

- java.lang.Object
- - org.apache.coyote.AbstractProcessor<S>
  - - org.apache.coyote.http11.AbstractHttp11Processor<Long>
    - - org.apache.coyote.http11.Http11AprProcessor

All Implemented Interfaces:
  ActionHook, Processor<Long>

    public class Http11AprProcessor
    extends AbstractHttp11Processor<Long>

Processes HTTP requests.

Author:
  Remy Maucherat

### Field Summary

Fields
`protected String` `clientCertProvider` When client certificate information is presented in a form other than instances of `X509Certificate` it needs to be converted before it can be used and this property controls which JSSE provider is used to perform the conversion.
`protected InternalAprInputBuffer` `inputBuffer` Input.
`protected InternalAprOutputBuffer` `outputBuffer` Output.
`protected AprEndpoint.SendfileData` `sendfileData` Sendfile data.

### Fields inherited from class org.apache.coyote.http11.AbstractHttp11Processor

`comet, compressableMimeTypes, compressionLevel, compressionMinSize, connectionUploadTimeout, contentDelimitation, disableUploadTimeout, error, expectation, hostNameC, http09, http11, httpUpgradeHandler, keepAlive, keepAliveTimeout, keptAlive, localAddr, localName, localPort, maxKeepAliveRequests, maxSavePostSize, noCompressionUserAgents, openSocket, readComplete, remoteAddr, remoteHost, remotePort, restrictedUserAgents, sendfileInProgress, server, sm, socketBuffer, upgradeInbound`

### Fields inherited from class org.apache.coyote.AbstractProcessor

`adapter, asyncStateMachine, endpoint, request, response, socketWrapper`

### Constructor Summary

Constructors
Constructor and Description
`Http11AprProcessor(int headerBufferSize, AprEndpoint endpoint, int maxTrailerSize, int maxExtensionSize)`

### Method Summary

Methods
`void` `actionInternal(ActionCode actionCode, Object param)` Send an action to the connector.
`protected boolean` `breakKeepAliveLoop(SocketWrapper<Long> socketWrapper)` Checks to see if the keep-alive loop should be broken, performing any processing (e.g. sendfile handling) that may have an impact on whether or not the keep-alive loop should be broken.
`protected boolean` `disableKeepAlive()` Processors (currently only HTTP BIO) may elect to disable HTTP keep-alive in some circumstances.
`AbstractEndpoint.Handler.SocketState` `event(SocketStatus status)` Process pipelined HTTP requests using the specified input and output streams.
`String` `getClientCertProvider()`
`protected AbstractInputBuffer<Long>` `getInputBuffer()` Exposes input buffer to super class to allow better code re-use.
`protected Log` `getLog()`
`protected AbstractOutputBuffer<Long>` `getOutputBuffer()` Exposes output buffer to super class to allow better code re-use.
`protected boolean` `handleIncompleteRequestLineRead()` Defines how a connector handles an incomplete request line read.
`protected void` `prepareRequestInternal()` Connector implementation specific request preparation.
`protected boolean` `prepareSendfile(OutputFilter[] outputFilters)`
`void` `recycleInternal()`
`protected void` `resetTimeouts()` Provides a mechanism for those connector implementations (currently only NIO) that need to reset timeouts from Async timeouts to standard HTTP timeouts once async processing completes.
`void` `setClientCertProvider(String s)`
`protected void` `setCometTimeouts(SocketWrapper<Long> socketWrapper)` Provides a mechanism for those connectors (currently only NIO) that need that need to set comet timeouts.
`protected void` `setRequestLineReadTimeout()` Configures the timeout to be used for reading the request line.
`protected void` `setSocketTimeout(int timeout)` Set the socket timeout.
`void` `setSslSupport(SSLSupport sslSupport)`

### Methods inherited from class org.apache.coyote.http11.AbstractHttp11Processor

`action, addCompressableMimeType, addInputFilter, asyncDispatch, endRequest, findBytes, getCompression, getConnectionUploadTimeout, getDisableUploadTimeout, getHttpUpgradeHandler, getKeepAliveTimeout, getMaxKeepAliveRequests, getMaxSavePostSize, getServer, getSocketBuffer, getUpgradeInbound, initializeFilters, isComet, isUpgrade, parseHost, prepareRequest, process, recycle, setCompressableMimeTypes, setCompressableMimeTypes, setCompression, setCompressionMinSize, setConnectionUploadTimeout, setDisableUploadTimeout, setKeepAliveTimeout, setMaxKeepAliveRequests, setMaxSavePostSize, setNoCompressionUserAgents, setRestrictedUserAgents, setServer, setSocketBuffer, statusDropsConnection, upgradeDispatch, upgradeDispatch`

### Methods inherited from class org.apache.coyote.AbstractProcessor

`asyncPostProcess, getAdapter, getEndpoint, getExecutor, getRequest, getSocketWrapper, isAsync, setAdapter, setSocketWrapper`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### inputBuffer

    protected InternalAprInputBuffer inputBuffer

Input.

#### outputBuffer

    protected InternalAprOutputBuffer outputBuffer

Output.

#### sendfileData

    protected AprEndpoint.SendfileData sendfileData

Sendfile data.

#### clientCertProvider

    protected String clientCertProvider

When client certificate information is presented in a form other than instances of `X509Certificate` it needs to be converted before it can be used and this property controls which JSSE provider is used to perform the conversion. For example it is used with the AJP connectors, the HTTP APR connector and with the `SSLValve`. If not specified, the default provider will be used.

### Constructor Detail

#### Http11AprProcessor

    public Http11AprProcessor(int headerBufferSize,
                      AprEndpoint endpoint,
                      int maxTrailerSize,
                      int maxExtensionSize)

### Method Detail

#### getLog

    protected Log getLog()

Specified by:
  `getLog` in class `AbstractHttp11Processor<Long>`

#### getClientCertProvider

    public String getClientCertProvider()

#### setClientCertProvider

    public void setClientCertProvider(String s)

#### event

    public AbstractEndpoint.Handler.SocketState event(SocketStatus status)
                                               throws IOException

Process pipelined HTTP requests using the specified input and output streams.

Specified by:
  `event` in interface `Processor<Long>`
Specified by:
  `event` in class `AbstractProcessor<Long>`
Throws:
  `IOException` - error during an I/O operation

#### disableKeepAlive

    protected boolean disableKeepAlive()

Description copied from class: `AbstractHttp11Processor`
Processors (currently only HTTP BIO) may elect to disable HTTP keep-alive in some circumstances. This method allows the processor implementation to determine if keep-alive should be disabled or not.

Specified by:
  `disableKeepAlive` in class `AbstractHttp11Processor<Long>`

#### setRequestLineReadTimeout

    protected void setRequestLineReadTimeout()
                                      throws IOException

Description copied from class: `AbstractHttp11Processor`
Configures the timeout to be used for reading the request line.

Specified by:
  `setRequestLineReadTimeout` in class `AbstractHttp11Processor<Long>`
Throws:
  `IOException`

#### handleIncompleteRequestLineRead

    protected boolean handleIncompleteRequestLineRead()

Description copied from class: `AbstractHttp11Processor`
Defines how a connector handles an incomplete request line read.

Specified by:
  `handleIncompleteRequestLineRead` in class `AbstractHttp11Processor<Long>`
Returns:
  `true` if the processor should break out of the processing loop, otherwise `false`.

#### setSocketTimeout

    protected void setSocketTimeout(int timeout)

Description copied from class: `AbstractHttp11Processor`
Set the socket timeout.

Specified by:
  `setSocketTimeout` in class `AbstractHttp11Processor<Long>`

#### setCometTimeouts

    protected void setCometTimeouts(SocketWrapper<Long> socketWrapper)

Description copied from class: `AbstractHttp11Processor`
Provides a mechanism for those connectors (currently only NIO) that need that need to set comet timeouts.

Specified by:
  `setCometTimeouts` in class `AbstractHttp11Processor<Long>`

#### breakKeepAliveLoop

    protected boolean breakKeepAliveLoop(SocketWrapper<Long> socketWrapper)

Description copied from class: `AbstractHttp11Processor`
Checks to see if the keep-alive loop should be broken, performing any processing (e.g. sendfile handling) that may have an impact on whether or not the keep-alive loop should be broken.

Specified by:
  `breakKeepAliveLoop` in class `AbstractHttp11Processor<Long>`
Returns:
  true if the keep-alive loop should be broken

#### resetTimeouts

    protected void resetTimeouts()

Description copied from class: `AbstractHttp11Processor`
Provides a mechanism for those connector implementations (currently only NIO) that need to reset timeouts from Async timeouts to standard HTTP timeouts once async processing completes.

Specified by:
  `resetTimeouts` in class `AbstractHttp11Processor<Long>`

#### recycleInternal

    public void recycleInternal()

Specified by:
  `recycleInternal` in class `AbstractHttp11Processor<Long>`

#### setSslSupport

    public void setSslSupport(SSLSupport sslSupport)

#### actionInternal

    public void actionInternal(ActionCode actionCode,
                      Object param)

Send an action to the connector.

Parameters:
  `actionCode` - Type of the action
  `param` - Action parameter

#### prepareRequestInternal

    protected void prepareRequestInternal()

Description copied from class: `AbstractHttp11Processor`
Connector implementation specific request preparation. Ideally, this will go away in the future.

Specified by:
  `prepareRequestInternal` in class `AbstractHttp11Processor<Long>`

#### prepareSendfile

    protected boolean prepareSendfile(OutputFilter[] outputFilters)

#### getInputBuffer

    protected AbstractInputBuffer<Long> getInputBuffer()

Description copied from class: `AbstractHttp11Processor`
Exposes input buffer to super class to allow better code re-use.

Specified by:
  `getInputBuffer` in class `AbstractHttp11Processor<Long>`
Returns:
  The input buffer used by the processor.

#### getOutputBuffer

    protected AbstractOutputBuffer<Long> getOutputBuffer()

Description copied from class: `AbstractHttp11Processor`
Exposes output buffer to super class to allow better code re-use.

Specified by:
  `getOutputBuffer` in class `AbstractHttp11Processor<Long>`
Returns:
  The output buffer used by the processor.