T - the type of request messages.public abstract class AbstractServerExchangeHandler<T> extends Object implements AsyncServerExchangeHandler
| Constructor and Description | 
|---|
| AbstractServerExchangeHandler() | 
| Modifier and Type | Method and Description | 
|---|---|
| int | available()Returns the number of bytes immediately available for output. | 
| void | consume(ByteBuffer src)Triggered to pass incoming data to the data consumer. | 
| void | failed(Exception cause)Triggered to signal a failure in data processing. | 
| protected abstract void | handle(T requestMessage,
      AsyncServerRequestHandler.ResponseTrigger responseTrigger,
      HttpContext context)Triggered to handles the request object produced by the  AsyncRequestConsumerreturned
 from thesupplyConsumer(HttpRequest, EntityDetails, HttpContext)method. | 
| void | handleRequest(HttpRequest request,
             EntityDetails entityDetails,
             ResponseChannel responseChannel,
             HttpContext context)Processes the actual HTTP request. | 
| void | produce(DataStreamChannel channel)Triggered to signal the ability of the underlying data channel
 to accept more data. | 
| void | releaseResources() | 
| void | streamEnd(List<? extends Header> trailers)Triggered to signal termination of the data stream. | 
| protected abstract AsyncRequestConsumer<T> | supplyConsumer(HttpRequest request,
              EntityDetails entityDetails,
              HttpContext context)Triggered to supply a request consumer to process the incoming request. | 
| void | updateCapacity(CapacityChannel capacityChannel)Triggered to signal ability of the underlying data stream to receive
 data capacity update. | 
protected abstract AsyncRequestConsumer<T> supplyConsumer(HttpRequest request, EntityDetails entityDetails, HttpContext context) throws HttpException
request - the request message.entityDetails - the request entity details.context - the actual execution context.HttpException - in case of an HTTP protocol violation.protected abstract void handle(T requestMessage, AsyncServerRequestHandler.ResponseTrigger responseTrigger, HttpContext context) throws HttpException, IOException
AsyncRequestConsumer returned
 from the supplyConsumer(HttpRequest, EntityDetails, HttpContext) method. The handler
 can choose to send response messages immediately inside the call or asynchronously
 at some later point.requestMessage - the request message.responseTrigger - the response trigger.context - the actual execution context.HttpException - in case of an HTTP protocol violation.IOException - in case of an I/O error.public final void handleRequest(HttpRequest request, EntityDetails entityDetails, ResponseChannel responseChannel, HttpContext context) throws HttpException, IOException
AsyncServerExchangeHandlerhandleRequest in interface AsyncServerExchangeHandlerrequest - the actual request.entityDetails - the request entity details or null if the request
                      does not enclose an entity.responseChannel - the response channel.context - the actual execution context.HttpException - in case of an HTTP protocol violation.IOException - in case of an I/O error.public final void updateCapacity(CapacityChannel capacityChannel) throws IOException
AsyncDataConsumerupdateCapacity in interface AsyncDataConsumercapacityChannel - the channel for capacity updates.IOException - in case of an I/O error.public final void consume(ByteBuffer src) throws IOException
AsyncDataConsumerconsume in interface AsyncDataConsumersrc - data source.IOException - in case of an I/O error.public final void streamEnd(List<? extends Header> trailers) throws HttpException, IOException
AsyncDataConsumerstreamEnd in interface AsyncDataConsumertrailers - data stream trailers.HttpException - in case of an HTTP protocol violation.IOException - in case of an I/O error.public final int available()
AsyncDataProducer
 Please note this method should return zero if the data producer
 is unable to produce any more data, in which case
 AsyncDataProducer.produce(DataStreamChannel) method will not get triggered.
 The producer can resume writing out data asynchronously
 once more data becomes available or request output readiness events
 with DataStreamChannel.requestOutput().
available in interface AsyncDataProducerAsyncDataProducer.produce(DataStreamChannel), 
DataStreamChannel.requestOutput()public final void produce(DataStreamChannel channel) throws IOException
AsyncDataProducer
 Please note this method gets triggered only if AsyncDataProducer.available()
 returns a positive value.
produce in interface AsyncDataProducerchannel - the data channel capable of accepting more data.IOException - in case of an I/O error.AsyncDataProducer.available()public final void failed(Exception cause)
AsyncDataExchangeHandlerfailed in interface AsyncDataExchangeHandlercause - the cause of the failure.public final void releaseResources()
releaseResources in interface ResourceHolderCopyright © 2005–2021 The Apache Software Foundation. All rights reserved.