public interface ContentChannel
Request
or a Response
to a recipient. It is the returned both by RequestHandler.handleRequest(Request, ResponseHandler)
and ResponseHandler.handleResponse(Response)
. Note that methods of this channel only schedule the appropriate
action - if you need to act on the result you will need submit a CompletionHandler
to the appropriate method.
Because a ContentChannel might have a different lifespan than the originating Request and Response
objects, all instances of this interface are internally backed by a reference to the Container
that was
active when the initial Request was created. This ensures that the configured environment of the ContentChannel is
stable throughout its lifetime. This also means that the close(CompletionHandler)
method MUST be called in
order to release that reference. Failure to do so will prevent the Container from ever shutting down. This
requirement is regardless of any errors that may occur while calling any of its other methods or its derived CompletionHandler
s.
Modifier and Type | Method and Description |
---|---|
void |
close(CompletionHandler handler)
Closes this ContentChannel.
|
void |
write(ByteBuffer buf,
CompletionHandler handler)
Schedules the given
ByteBuffer to be written to the content corresponding to this ContentChannel. |
void write(ByteBuffer buf, CompletionHandler handler)
ByteBuffer
to be written to the content corresponding to this ContentChannel. This
call transfers ownership of the given ByteBuffer to this ContentChannel, i.e. no further calls can be
made to the buffer. The execution of writes happen in the same order as this method was invoked.buf
- The ByteBuffer
to schedule for write. No further calls can be made to this buffer.handler
- The CompletionHandler
to call after the write has been executed.void close(CompletionHandler handler)
write(ByteBuffer,
CompletionHandler)
upon it will cause an IllegalStateException
to be thrown. If this channel is already
closed then invoking this method has no effect, but CompletionHandler.completed()
will still be called.
Notice that you MUST call this method, regardless of any exceptions that might have occurred while writing to this
ContentChannel. Failure to do so will prevent the Container
from ever shutting down.handler
- The CompletionHandler
to call after the close has been executed.Copyright © 2018. All rights reserved.