public static class Nio2Endpoint.Nio2SocketWrapper extends SocketWrapperBase<Nio2Channel>
SocketWrapperBase.CompletionCheck, SocketWrapperBase.CompletionHandlerCall, SocketWrapperBase.CompletionStatebufferedWrites, bufferedWriteSize, COMPLETE_WRITE, localAddr, localName, localPort, READ_DATA, remoteAddr, remoteHost, remotePort, sm, socketBufferHandler| Constructor and Description |
|---|
Nio2Endpoint.Nio2SocketWrapper(Nio2Channel channel,
Nio2Endpoint endpoint) |
| Modifier and Type | Method and Description |
|---|---|
void |
awaitBytes() |
boolean |
awaitReadComplete(long timeout,
TimeUnit unit)
If an asynchronous read operation is pending, this method will block
until the operation completes, or the specified amount of time
has passed.
|
boolean |
awaitWriteComplete(long timeout,
TimeUnit unit)
If an asynchronous write operation is pending, this method will block
until the operation completes, or the specified amount of time
has passed.
|
void |
close() |
SendfileDataBase |
createSendfileData(String filename,
long pos,
long length) |
void |
doClientAuth(SSLSupport sslSupport)
Require the client to perform CLIENT-CERT authentication if it hasn't
already done so.
|
protected void |
doWrite(boolean block,
ByteBuffer from)
Write the contents of the ByteBuffer to the socket.
|
protected void |
flushBlocking() |
protected boolean |
flushNonBlocking() |
Nio2Endpoint.SendfileData |
getSendfileData() |
SSLSupport |
getSslSupport(String clientCertProvider) |
boolean |
hasAsyncIO()
Allows using NIO2 style read/write only for connectors that can
efficiently support it.
|
boolean |
hasDataToWrite() |
boolean |
isClosed() |
boolean |
isReadPending()
Allows checking if an asynchronous read operation is currently pending.
|
boolean |
isReadyForRead() |
boolean |
isWritePending()
Allows checking if an asynchronous write operation is currently pending.
|
protected void |
populateLocalAddr() |
protected void |
populateLocalName() |
protected void |
populateLocalPort() |
protected void |
populateRemoteAddr() |
protected void |
populateRemoteHost() |
protected void |
populateRemotePort() |
SendfileState |
processSendfile(SendfileDataBase sendfileData)
Starts the sendfile process.
|
int |
read(boolean block,
byte[] b,
int off,
int len) |
int |
read(boolean block,
ByteBuffer to) |
<A> SocketWrapperBase.CompletionState |
read(ByteBuffer[] dsts,
int offset,
int length,
boolean block,
long timeout,
TimeUnit unit,
A attachment,
SocketWrapperBase.CompletionCheck check,
CompletionHandler<Long,? super A> handler)
Scatter read.
|
void |
registerReadInterest() |
void |
registerWriteInterest() |
void |
setAppReadBufHandler(ApplicationBufferHandler handler) |
void |
setSendfileData(Nio2Endpoint.SendfileData sf) |
<A> SocketWrapperBase.CompletionState |
write(ByteBuffer[] srcs,
int offset,
int length,
boolean block,
long timeout,
TimeUnit unit,
A attachment,
SocketWrapperBase.CompletionCheck check,
CompletionHandler<Long,? super A> handler)
Gather write.
|
protected void |
writeNonBlocking(byte[] buf,
int off,
int len)
Transfers the data to the socket write buffer (writing that data to the
socket if the buffer fills up using a non-blocking write) until either
all the data has been transferred and space remains in the socket write
buffer or a non-blocking write leaves data in the socket write buffer.
|
protected void |
writeNonBlocking(ByteBuffer from)
Writes the data to the socket (writing that data to the socket using a
non-blocking write) until either all the data has been transferred and
space remains in the socket write buffer or a non-blocking write leaves
data in the socket write buffer.
|
addToBuffers, addToBuffers, canWrite, checkError, decrementKeepAlive, doWrite, flush, getBlockingStatus, getBlockingStatusReadLock, getBlockingStatusWriteLock, getEndpoint, getError, getLocalAddr, getLocalName, getLocalPort, getNegotiatedProtocol, getReadTimeout, getRemoteAddr, getRemoteHost, getRemotePort, getSocket, getSocketBufferHandler, getWriteTimeout, isReadyForWrite, isSecure, isUpgraded, populateReadBuffer, populateReadBuffer, processSocket, read, setBlockingStatus, setError, setKeepAliveLeft, setNegotiatedProtocol, setReadTimeout, setSecure, setUpgraded, setWriteTimeout, toString, transfer, transfer, unRead, write, write, write, writeBlocking, writeBlocking, writeByteBufferBlocking, writeByteBufferNonBlockingpublic Nio2Endpoint.Nio2SocketWrapper(Nio2Channel channel, Nio2Endpoint endpoint)
public void setSendfileData(Nio2Endpoint.SendfileData sf)
public Nio2Endpoint.SendfileData getSendfileData()
public boolean isReadyForRead()
throws IOException
isReadyForRead in class SocketWrapperBase<Nio2Channel>IOExceptionpublic int read(boolean block,
byte[] b,
int off,
int len)
throws IOException
read in class SocketWrapperBase<Nio2Channel>IOExceptionpublic int read(boolean block,
ByteBuffer to)
throws IOException
read in class SocketWrapperBase<Nio2Channel>IOExceptionpublic void close()
throws IOException
close in class SocketWrapperBase<Nio2Channel>IOExceptionpublic boolean isClosed()
isClosed in class SocketWrapperBase<Nio2Channel>public boolean hasAsyncIO()
SocketWrapperBasehasAsyncIO in class SocketWrapperBase<Nio2Channel>falsepublic <A> SocketWrapperBase.CompletionState read(ByteBuffer[] dsts, int offset, int length, boolean block, long timeout, TimeUnit unit, A attachment, SocketWrapperBase.CompletionCheck check, CompletionHandler<Long,? super A> handler)
SocketWrapperBaseread in class SocketWrapperBase<Nio2Channel>A - The attachment typedsts - buffersoffset - in the buffer arraylength - in the buffer arrayblock - true to block until any pending read is done, if the
timeout occurs and a read is still pending, a
ReadPendingException will be thrown; false to
not block but any pending read operation will cause
a ReadPendingExceptiontimeout - timeout duration for the readunit - units for the timeout durationattachment - an object to attach to the I/O operation that will be
used when calling the completion handlercheck - for the IO operation completionhandler - to call when the IO is completepublic boolean isWritePending()
SocketWrapperBaseisWritePending in class SocketWrapperBase<Nio2Channel>true if the endpoint supports asynchronous IO and
a write operation is being processed asynchronouslypublic <A> SocketWrapperBase.CompletionState write(ByteBuffer[] srcs, int offset, int length, boolean block, long timeout, TimeUnit unit, A attachment, SocketWrapperBase.CompletionCheck check, CompletionHandler<Long,? super A> handler)
SocketWrapperBasewrite in class SocketWrapperBase<Nio2Channel>A - The attachment typesrcs - buffersoffset - in the buffer arraylength - in the buffer arrayblock - true to block until any pending write is done, if the
timeout occurs and a write is still pending, a
WritePendingException will be thrown; false to
not block but any pending write operation will cause
a WritePendingExceptiontimeout - timeout duration for the writeunit - units for the timeout durationattachment - an object to attach to the I/O operation that will be
used when calling the completion handlercheck - for the IO operation completionhandler - to call when the IO is completeprotected void writeNonBlocking(byte[] buf,
int off,
int len)
throws IOException
Overridden for NIO2 to enable a gathering write to be used to write all of the remaining data in a single additional write should a non-blocking write leave data in the buffer.
writeNonBlocking in class SocketWrapperBase<Nio2Channel>buf - The byte array containing the data to be writtenoff - The offset within the byte array of the data to be writtenlen - The length of the data to be writtenIOException - If an IO error occurs during the writeprotected void writeNonBlocking(ByteBuffer from) throws IOException
Overridden for NIO2 to enable a gathering write to be used to write all of the remaining data in a single additional write should a non-blocking write leave data in the buffer.
writeNonBlocking in class SocketWrapperBase<Nio2Channel>from - The ByteBuffer containing the data to be writtenIOException - If an IO error occurs during the writeprotected void doWrite(boolean block,
ByteBuffer from)
throws IOException
SocketWrapperBasedoWrite in class SocketWrapperBase<Nio2Channel>block - Ignored since this method is only called in the
blocking casefrom - the ByteBuffer containing the data to be writtenIOException - If an I/O error such as a timeout occurs during the
writeprotected void flushBlocking()
throws IOException
flushBlocking in class SocketWrapperBase<Nio2Channel>IOExceptionprotected boolean flushNonBlocking()
throws IOException
flushNonBlocking in class SocketWrapperBase<Nio2Channel>IOExceptionpublic boolean hasDataToWrite()
hasDataToWrite in class SocketWrapperBase<Nio2Channel>public boolean isReadPending()
SocketWrapperBaseisReadPending in class SocketWrapperBase<Nio2Channel>true if the endpoint supports asynchronous IO and
a read operation is being processed asynchronouslypublic boolean awaitReadComplete(long timeout,
TimeUnit unit)
SocketWrapperBaseawaitReadComplete in class SocketWrapperBase<Nio2Channel>timeout - The maximum amount of time to waitunit - The unit for the timeouttrue if the read operation is complete,
false if the operation is still pending and
the specified timeout has passedpublic boolean awaitWriteComplete(long timeout,
TimeUnit unit)
SocketWrapperBaseawaitWriteComplete in class SocketWrapperBase<Nio2Channel>timeout - The maximum amount of time to waitunit - The unit for the timeouttrue if the read operation is complete,
false if the operation is still pending and
the specified timeout has passedpublic void registerReadInterest()
registerReadInterest in class SocketWrapperBase<Nio2Channel>public void registerWriteInterest()
registerWriteInterest in class SocketWrapperBase<Nio2Channel>public void awaitBytes()
public SendfileDataBase createSendfileData(String filename, long pos, long length)
createSendfileData in class SocketWrapperBase<Nio2Channel>public SendfileState processSendfile(SendfileDataBase sendfileData)
SocketWrapperBaseprocessSendfile in class SocketWrapperBase<Nio2Channel>sendfileData - Data representing the file to sendprotected void populateRemoteAddr()
populateRemoteAddr in class SocketWrapperBase<Nio2Channel>protected void populateRemoteHost()
populateRemoteHost in class SocketWrapperBase<Nio2Channel>protected void populateRemotePort()
populateRemotePort in class SocketWrapperBase<Nio2Channel>protected void populateLocalName()
populateLocalName in class SocketWrapperBase<Nio2Channel>protected void populateLocalAddr()
populateLocalAddr in class SocketWrapperBase<Nio2Channel>protected void populateLocalPort()
populateLocalPort in class SocketWrapperBase<Nio2Channel>public SSLSupport getSslSupport(String clientCertProvider)
getSslSupport in class SocketWrapperBase<Nio2Channel>clientCertProvider - Ignored for this implementationpublic void doClientAuth(SSLSupport sslSupport)
SocketWrapperBasedoClientAuth in class SocketWrapperBase<Nio2Channel>sslSupport - The SSL/TLS support instance currently being used by
the connection that may need updating after the client
authenticationpublic void setAppReadBufHandler(ApplicationBufferHandler handler)
setAppReadBufHandler in class SocketWrapperBase<Nio2Channel>Copyright © 2000-2017 Apache Software Foundation. All Rights Reserved.