# Class UpgradeProcessorExternal

java.lang.Object
org.apache.coyote.AbstractProcessorLight
org.apache.coyote.http11.upgrade.UpgradeProcessorBase
org.apache.coyote.http11.upgrade.UpgradeProcessorExternal

All Implemented Interfaces:
  `WebConnection, AutoCloseable, Processor`

public class UpgradeProcessorExternal extends UpgradeProcessorBase
Upgrade processor for external (Servlet-based) upgrade handlers.

## Field Summary

### Fields inherited from class UpgradeProcessorBase

`INFINITE_TIMEOUT`

## Constructor Summary

Constructors
Constructor
Description
`UpgradeProcessorExternal(SocketWrapperBase<?> wrapper, UpgradeToken upgradeToken, UpgradeGroupInfo upgradeGroupInfo)`
Constructs a new UpgradeProcessorExternal.

## Method Summary

Modifier and Type
Method
Description
`void`
`close()`
`final AbstractEndpoint.Handler.SocketState`
`dispatch(SocketEvent status)`
Process an in-progress request that is no longer in standard HTTP mode.
`ServletInputStream`
`getInputStream()`
Provides access to the `ServletInputStream` for reading data from the client.
`protected Log`
`getLog()`
Returns the logger associated with this processor type.
`ServletOutputStream`
`getOutputStream()`
Provides access to the `ServletOutputStream` for writing data to the client.
`void`
`pause()`
Informs the processor that the underlying I/O layer has stopped accepting new connections.
`final void`
`setSslSupport(SSLSupport sslSupport)`
Set the SSL information for this HTTP connection.

### Methods inherited from class UpgradeProcessorBase

`asyncPostProcess, checkAsyncTimeoutGeneration, getLeftoverInput, getRequest, getUpgradeToken, isAsync, isUpgrade, recycle, service, timeoutAsync`

### Methods inherited from class AbstractProcessorLight

`addDispatch, clearDispatches, getIteratorAndClearDispatches, logAccess, process`

### Methods inherited from class Object

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

## Constructor Details

### UpgradeProcessorExternal

public UpgradeProcessorExternal(SocketWrapperBase<?> wrapper, UpgradeToken upgradeToken, UpgradeGroupInfo upgradeGroupInfo)
Constructs a new UpgradeProcessorExternal.

Parameters:
  `wrapper` - the socket wrapper
  `upgradeToken` - the upgrade token
  `upgradeGroupInfo` - the group info for statistics

## Method Details

### getLog

protected Log getLog()
Description copied from class: `AbstractProcessorLight`
Returns the logger associated with this processor type.

Specified by:
  `getLog` in class `AbstractProcessorLight`
Returns:
  the logger associated with this processor type

### close

public void close() throws Exception

Throws:
  `Exception`

### getInputStream

public ServletInputStream getInputStream() throws IOException
Description copied from interface: `jakarta.servlet.http.WebConnection`
Provides access to the `ServletInputStream` for reading data from the client.

Returns:
  the input stream
Throws:
  `IOException` - If an I/O occurs while obtaining the stream

### getOutputStream

public ServletOutputStream getOutputStream() throws IOException
Description copied from interface: `jakarta.servlet.http.WebConnection`
Provides access to the `ServletOutputStream` for writing data to the client.

Returns:
  the output stream
Throws:
  `IOException` - If an I/O occurs while obtaining the stream

### dispatch

public final AbstractEndpoint.Handler.SocketState dispatch(SocketEvent status)
Description copied from class: `AbstractProcessorLight`
Process an in-progress request that is no longer in standard HTTP mode. Uses currently include Servlet 3.0 Async and HTTP upgrade connections. Further uses may be added in the future. These will typically start as HTTP requests.

Specified by:
  `dispatch` in class `AbstractProcessorLight`
Parameters:
  `status` - The event to process
Returns:
  The state the caller should put the socket in when this method returns

### setSslSupport

public final void setSslSupport(SSLSupport sslSupport)
Description copied from interface: `Processor`
Set the SSL information for this HTTP connection.

Parameters:
  `sslSupport` - The SSL support object to use for this connection

### pause

public void pause()
Description copied from interface: `Processor`
Informs the processor that the underlying I/O layer has stopped accepting new connections. This is primarily intended to enable processors that use multiplexed connections to prevent further 'streams' being added to an existing multiplexed connection.