|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.sun.grizzly.TCPConnectorHandler
public class TCPConnectorHandler
Non blocking TCP Connector Handler. The recommended way to use this class is by creating an external Controller and share the same SelectorHandler instance.
Recommended -----------
Controller controller = new Controller();
// new TCPSelectorHandler(true) means the Selector will be used only
// for client operation (OP_READ, OP_WRITE, OP_CONNECT).
TCPSelectorHandler tcpSelectorHandler = new TCPSelectorHandler(true);
controller.setSelectorHandler(tcpSelectorHandler);
TCPConnectorHandler tcpConnectorHandler = new TCPConnectorHandler();
tcpConnectorHandler.connect(localhost,port, new CallbackHandler(){...},
tcpSelectorHandler);
TCPConnectorHandler tcpConnectorHandler2 = new TCPConnectorHandler();
tcpConnectorHandler2.connect(localhost,port, new CallbackHandler(){...},
tcpSelectorHandler);
Not recommended (but still works) ---------------------------------
TCPConnectorHandler tcpConnectorHandler = new TCPConnectorHandler();
tcpConnectorHandler.connect(localhost,port);
Internally, a new Controller will be created everytime connect(localhost,port) is invoked, which has an impact on performance.
Field Summary | |
---|---|
protected int |
connectionTimeout
Connection timeout is milliseconds |
protected int |
linger
The socket linger. |
protected boolean |
reuseAddress
The socket reuseAddress |
protected TCPSelectorHandler |
selectorHandler
The underlying TCPSelectorHandler used to mange SelectionKeys. |
protected SocketChannel |
socketChannel
The connection's SocketChannel. |
protected boolean |
tcpNoDelay
The socket tcpDelay. |
Constructor Summary | |
---|---|
TCPConnectorHandler()
|
Method Summary | |
---|---|
void |
close()
Close the underlying connection. |
void |
configureChannel(SelectableChannel channel)
|
void |
connect(SocketAddress remoteAddress)
Connect to hostname:port. |
void |
connect(SocketAddress remoteAddress,
CallbackHandler callbackHandler)
Connect to hostname:port. |
void |
connect(SocketAddress remoteAddress,
CallbackHandler callbackHandler,
TCPSelectorHandler selectorHandler)
Connect to hostname:port. |
void |
connect(SocketAddress remoteAddress,
SocketAddress localAddress)
Connect to hostname:port. |
void |
connect(SocketAddress remoteAddress,
SocketAddress localAddress,
CallbackHandler callbackHandler)
Connect to hostname:port. |
void |
connect(SocketAddress remoteAddress,
SocketAddress localAddress,
CallbackHandler callbackHandler,
TCPSelectorHandler selectorHandler)
Connect to hostname:port. |
void |
finishConnect(SelectionKey key)
Finish handling the OP_CONNECT interest ops. |
CallbackHandler |
getCallbackHandler()
Returns ConnectorHandler 's callback handler instance,
which is used to process occuring events |
int |
getConnectionTimeout()
Get TCP channel connection timeout in milliseconds |
Controller |
getController()
Return the Controller |
int |
getLinger()
|
TCPSelectorHandler |
getSelectorHandler()
Method returns SelectorHandler , which manages this
ConnectorHandler |
SelectableChannel |
getUnderlyingChannel()
Method returns ConnectorHandler 's underlying channel |
boolean |
isConnected()
Is the underlying SocketChannel connected. |
boolean |
isReuseAddress()
|
boolean |
isTcpNoDelay()
Return the tcpNoDelay value used by the underlying accepted Sockets. |
Controller.Protocol |
protocol()
A token decribing the protocol supported by an implementation of this interface |
long |
read(ByteBuffer byteBuffer,
boolean blocking)
Read bytes. |
void |
readFromAsyncQueue(ByteBuffer buffer,
AsyncReadCallbackHandler callbackHandler)
Method reads data to the ByteBuffer using async read queue. |
void |
readFromAsyncQueue(ByteBuffer buffer,
AsyncReadCallbackHandler callbackHandler,
AsyncReadCondition condition)
Method reads data to the ByteBuffer using async read queue. |
void |
readFromAsyncQueue(ByteBuffer buffer,
AsyncReadCallbackHandler callbackHandler,
AsyncReadCondition condition,
AsyncQueueDataProcessor readPostProcessor)
Method reads data to the ByteBuffer using async read queue. |
void |
setCallbackHandler(CallbackHandler callbackHandler)
Sets ConnectorHandler 's callback handler instance,
which is used to process occuring events |
void |
setConnectionTimeout(int connectionTimeout)
Set TCP channel connection timeout in milliseconds |
void |
setController(Controller controller)
Set the Controller associated with this instance. |
void |
setLinger(int linger)
|
void |
setReuseAddress(boolean reuseAddress)
|
void |
setTcpNoDelay(boolean tcpNoDelay)
Enable (true) or disable (false) the underlying Socket's tcpNoDelay. |
long |
write(ByteBuffer byteBuffer,
boolean blocking)
Writes bytes. |
void |
writeToAsyncQueue(ByteBuffer buffer)
Method writes ByteBuffer using async write queue. |
void |
writeToAsyncQueue(ByteBuffer buffer,
AsyncWriteCallbackHandler callbackHandler)
Method writes ByteBuffer using async write queue. |
void |
writeToAsyncQueue(ByteBuffer buffer,
AsyncWriteCallbackHandler callbackHandler,
AsyncQueueDataProcessor writePreProcessor)
Method writes ByteBuffer using async write queue. |
void |
writeToAsyncQueue(ByteBuffer buffer,
AsyncWriteCallbackHandler callbackHandler,
AsyncQueueDataProcessor writePreProcessor,
boolean isCloneByteBuffer)
Method writes ByteBuffer using async write queue. |
void |
writeToAsyncQueue(SocketAddress dstAddress,
ByteBuffer buffer)
Method sends ByteBuffer using async write queue. |
void |
writeToAsyncQueue(SocketAddress dstAddress,
ByteBuffer buffer,
AsyncWriteCallbackHandler callbackHandler)
Method sends ByteBuffer using async write queue. |
void |
writeToAsyncQueue(SocketAddress dstAddress,
ByteBuffer buffer,
AsyncWriteCallbackHandler callbackHandler,
AsyncQueueDataProcessor writePreProcessor)
Method sends ByteBuffer using async write queue. |
void |
writeToAsyncQueue(SocketAddress dstAddress,
ByteBuffer buffer,
AsyncWriteCallbackHandler callbackHandler,
AsyncQueueDataProcessor writePreProcessor,
boolean isCloneByteBuffer)
Method sends ByteBuffer using async write queue. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected TCPSelectorHandler selectorHandler
protected SocketChannel socketChannel
protected boolean tcpNoDelay
protected boolean reuseAddress
protected int linger
protected int connectionTimeout
Constructor Detail |
---|
public TCPConnectorHandler()
Method Detail |
---|
public void connect(SocketAddress remoteAddress, CallbackHandler callbackHandler) throws IOException
Controller
will invoke
the CallBackHandler.
connect
in interface ConnectorHandler<TCPSelectorHandler,CallbackHandler>
remoteAddress
- remote address to connectcallbackHandler
- the handler invoked by the Controller when
an non blocking operation is ready to be handled.
IOException
public void connect(SocketAddress remoteAddress, SocketAddress localAddress, CallbackHandler callbackHandler) throws IOException
Controller
will invoke
the CallBackHandler.
connect
in interface ConnectorHandler<TCPSelectorHandler,CallbackHandler>
remoteAddress
- remote address to connectlocalAddress
- local address to bindcallbackHandler
- the handler invoked by the Controller when
an non blocking operation is ready to be handled.
IOException
public void connect(SocketAddress remoteAddress, CallbackHandler callbackHandler, TCPSelectorHandler selectorHandler) throws IOException
Controller
will invoke
the CallBackHandler.
connect
in interface ConnectorHandler<TCPSelectorHandler,CallbackHandler>
remoteAddress
- remote address to connectcallbackHandler
- the handler invoked by the Controller when
an non blocking operation is ready to be handled.selectorHandler
- an instance of SelectorHandler.
IOException
public void connect(SocketAddress remoteAddress, SocketAddress localAddress, CallbackHandler callbackHandler, TCPSelectorHandler selectorHandler) throws IOException
Controller
will invoke
the CallBackHandler.
connect
in interface ConnectorHandler<TCPSelectorHandler,CallbackHandler>
remoteAddress
- remote address to connectlocalAddress
- local address to bincallbackHandler
- the handler invoked by the Controller when
an non blocking operation is ready to be handled.selectorHandler
- an instance of SelectorHandler.
IOException
public void connect(SocketAddress remoteAddress) throws IOException
connect
in interface ConnectorHandler<TCPSelectorHandler,CallbackHandler>
remoteAddress
- remote address to connect
IOException
public void connect(SocketAddress remoteAddress, SocketAddress localAddress) throws IOException
connect
in interface ConnectorHandler<TCPSelectorHandler,CallbackHandler>
remoteAddress
- remote address to connectlocalAddress
- local address to bin
IOException
public long read(ByteBuffer byteBuffer, boolean blocking) throws IOException
Selector
will be used to read bytes.
read
in interface ConnectorHandler<TCPSelectorHandler,CallbackHandler>
byteBuffer
- The byteBuffer to store bytes.blocking
- true if a a pool of temporary Selector
is required to handle a blocking read.
IOException
public long write(ByteBuffer byteBuffer, boolean blocking) throws IOException
Selector
will be used to writes bytes.
write
in interface ConnectorHandler<TCPSelectorHandler,CallbackHandler>
byteBuffer
- The byteBuffer to write.blocking
- true if a a pool of temporary Selector
is required to handle a blocking write.
IOException
public void readFromAsyncQueue(ByteBuffer buffer, AsyncReadCallbackHandler callbackHandler) throws IOException
ByteBuffer
using async read queue.
First, if read queue is empty - it tries to read to the
ByteBuffer
directly (without putting to the queue).
If associated read queue is not empty or after direct reading
ByteBuffer
still has remaining place for next read -
ByteBuffer
will be added to AsyncQueue
.
If an exception occurs, during direct reading - it will be propagated
to the caller directly, otherwise, if the ByteBuffer
is
added to a reading queue - exception notification will come via
AsyncReadCallbackHandler.onIOException()
readFromAsyncQueue
in interface AsyncQueueReadable
buffer
- ByteBuffer
callbackHandler
- AsyncReadCallbackHandler
,
which will get notified, when
ByteBuffer
will get full
IOException
public void readFromAsyncQueue(ByteBuffer buffer, AsyncReadCallbackHandler callbackHandler, AsyncReadCondition condition) throws IOException
ByteBuffer
using async read queue.
First, if read queue is empty - it tries to read to the
ByteBuffer
directly (without putting to the queue).
If associated read queue is not empty or after direct reading
ByteBuffer
still has remaining place for next read -
ByteBuffer
will be added to AsyncQueue
.
If an exception occurs, during direct reading - it will be propagated
to the caller directly, otherwise, if the ByteBuffer
is
added to a reading queue - exception notification will come via
AsyncReadCallbackHandler.onIOException()
readFromAsyncQueue
in interface AsyncQueueReadable
buffer
- ByteBuffer
callbackHandler
- AsyncReadCallbackHandler
,
which will get notified, when
ByteBuffer
will get fullcondition
- AsyncReadCondition
, which will be called to
check if read data is complete, and callbackHandler could
be called
IOException
public void readFromAsyncQueue(ByteBuffer buffer, AsyncReadCallbackHandler callbackHandler, AsyncReadCondition condition, AsyncQueueDataProcessor readPostProcessor) throws IOException
ByteBuffer
using async read queue.
First, if read queue is empty - it tries to read to the
ByteBuffer
directly (without putting to the queue).
If associated read queue is not empty or after direct reading
ByteBuffer
still has remaining place for next read -
ByteBuffer
will be added to AsyncQueue
.
If an exception occurs, during direct reading - it will be propagated
to the caller directly, otherwise, if the ByteBuffer
is
added to a reading queue - exception notification will come via
AsyncReadCallbackHandler.onIOException()
readFromAsyncQueue
in interface AsyncQueueReadable
buffer
- ByteBuffer
callbackHandler
- AsyncReadCallbackHandler
,
which will get notified, when
ByteBuffer
will get fullcondition
- AsyncReadCondition
, which will be called to
check if read data is complete, and callbackHandler could
be calledreadPostProcessor
- post processor, to be called to process read data
IOException
public void writeToAsyncQueue(ByteBuffer buffer) throws IOException
ByteBuffer
using async write queue.
First, if write queue is empty - it tries to write ByteBuffer
directly (without putting to the queue).
If associated write queue is not empty or after direct writing
ByteBuffer
still has ready data to be written -
ByteBuffer
will be added to AsyncQueue
.
If an exception occurs, during direct writing - it will be propagated
to the caller directly, otherwise it will be just logged by
Grizzly framework.
writeToAsyncQueue
in interface AsyncQueueWritable
buffer
- ByteBuffer
IOException
public void writeToAsyncQueue(ByteBuffer buffer, AsyncWriteCallbackHandler callbackHandler) throws IOException
ByteBuffer
using async write queue.
First, if write queue is empty - it tries to write ByteBuffer
directly (without putting to the queue).
If associated write queue is not empty or after direct writing
ByteBuffer
still has ready data to be written -
ByteBuffer
will be added to AsyncQueue
.
If an exception occurs, during direct writing - it will be propagated
to the caller directly, otherwise, if the ByteBuffer
is
added to a writing queue - exception notification will come via
AsyncWriteCallbackHandler.onIOException()
writeToAsyncQueue
in interface AsyncQueueWritable
buffer
- ByteBuffer
callbackHandler
- AsyncWriteCallbackHandler
,
which will get notified, when
ByteBuffer
will be completely written
IOException
public void writeToAsyncQueue(ByteBuffer buffer, AsyncWriteCallbackHandler callbackHandler, AsyncQueueDataProcessor writePreProcessor) throws IOException
ByteBuffer
using async write queue.
First, if write queue is empty - it tries to write ByteBuffer
directly (without putting to the queue).
If associated write queue is not empty or after direct writing
ByteBuffer
still has ready data to be written -
ByteBuffer
will be added to AsyncQueue
.
If an exception occurs, during direct writing - it will be propagated
to the caller directly, otherwise, if the ByteBuffer
is
added to a writing queue - exception notification will come via
AsyncWriteCallbackHandler.onIOException()
Before data will be written on SelectableChannel
, first it
will be passed for preprocessing to AsyncQueueDataProcessor
,
and then preprocessor result data
(AsyncQueueDataProcessor.getResultByteBuffer()
) will be
written on the SelectableChannel
.
writeToAsyncQueue
in interface AsyncQueueWritable
buffer
- ByteBuffer
callbackHandler
- AsyncWriteCallbackHandler
,
which will get notified, when
ByteBuffer
will be completely writtenwritePreProcessor
- AsyncQueueDataProcessor
, which
will perform data processing, before it will be
written on SelectableChannel
IOException
public void writeToAsyncQueue(ByteBuffer buffer, AsyncWriteCallbackHandler callbackHandler, AsyncQueueDataProcessor writePreProcessor, boolean isCloneByteBuffer) throws IOException
ByteBuffer
using async write queue.
First, if write queue is empty - it tries to write ByteBuffer
directly (without putting to the queue).
If associated write queue is not empty or after direct writing
ByteBuffer
still has ready data to be written -
ByteBuffer
will be added to AsyncQueue
.
If an exception occurs, during direct writing - it will be propagated
to the caller directly, otherwise, if the ByteBuffer
is
added to a writing queue - exception notification will come via
AsyncWriteCallbackHandler.onIOException()
Before data will be written on SelectableChannel
, first it
will be passed for preprocessing to AsyncQueueDataProcessor
,
and then preprocessor result data
(AsyncQueueDataProcessor.getResultByteBuffer()
) will be
written on the SelectableChannel
.
writeToAsyncQueue
in interface AsyncQueueWritable
buffer
- ByteBuffer
callbackHandler
- AsyncWriteCallbackHandler
,
which will get notified, when
ByteBuffer
will be completely writtenwritePreProcessor
- AsyncQueueDataProcessor
, which
will perform data processing, before it will be
written on SelectableChannel
isCloneByteBuffer
- if true - AsyncQueueWriter
will clone given
ByteBuffer
before puting it to the
AsyncQueue
IOException
public void writeToAsyncQueue(SocketAddress dstAddress, ByteBuffer buffer) throws IOException
ByteBuffer
using async write queue.
First, if write queue is empty - it tries to send ByteBuffer
to the given SocketAddress
directly
(without putting to the queue).
If associated write queue is not empty or after direct sending
ByteBuffer
still has ready data to be written -
ByteBuffer
will be added to AsyncQueue
.
If an exception occurs, during direct writing - it will be propagated
to the caller directly, otherwise it will be just logged by
Grizzly framework.
writeToAsyncQueue
in interface AsyncQueueWritable
dstAddress
- destination SocketAddress
data will
be sent tobuffer
- ByteBuffer
IOException
public void writeToAsyncQueue(SocketAddress dstAddress, ByteBuffer buffer, AsyncWriteCallbackHandler callbackHandler) throws IOException
ByteBuffer
using async write queue.
First, if write queue is empty - it tries to send ByteBuffer
to the given SocketAddress
directly
(without putting to the queue).
If associated write queue is not empty or after direct sending
ByteBuffer
still has ready data to be written -
ByteBuffer
will be added to AsyncQueue
.
If an exception occurs, during direct writing - it will be propagated
to the caller directly, otherwise, if the ByteBuffer
is
added to a writing queue - exception notification will come via
AsyncWriteCallbackHandler.onIOException()
writeToAsyncQueue
in interface AsyncQueueWritable
dstAddress
- destination SocketAddress
data will
be sent tobuffer
- ByteBuffer
callbackHandler
- AsyncWriteCallbackHandler
,
which will get notified, when
ByteBuffer
will be completely written
IOException
public void writeToAsyncQueue(SocketAddress dstAddress, ByteBuffer buffer, AsyncWriteCallbackHandler callbackHandler, AsyncQueueDataProcessor writePreProcessor) throws IOException
ByteBuffer
using async write queue.
First, if write queue is empty - it tries to send ByteBuffer
to the given SocketAddress
directly
(without putting to the queue).
If associated write queue is not empty or after direct sending
ByteBuffer
still has ready data to be written -
ByteBuffer
will be added to AsyncQueue
.
If an exception occurs, during direct writing - it will be propagated
to the caller directly, otherwise, if the ByteBuffer
is
added to a writing queue - exception notification will come via
AsyncWriteCallbackHandler.onIOException()
Before data will be written on SelectableChannel
, first it
will be passed for preprocessing to AsyncQueueDataProcessor
,
and then preprocessor result data
(AsyncQueueDataProcessor.getResultByteBuffer()
) will be
written on the SelectableChannel
.
writeToAsyncQueue
in interface AsyncQueueWritable
dstAddress
- destination SocketAddress
data will
be sent tobuffer
- ByteBuffer
callbackHandler
- AsyncWriteCallbackHandler
,
which will get notified, when
ByteBuffer
will be completely writtenwritePreProcessor
- AsyncQueueDataProcessor
, which
will perform data processing, before it will be
written on SelectableChannel
IOException
public void writeToAsyncQueue(SocketAddress dstAddress, ByteBuffer buffer, AsyncWriteCallbackHandler callbackHandler, AsyncQueueDataProcessor writePreProcessor, boolean isCloneByteBuffer) throws IOException
ByteBuffer
using async write queue.
First, if write queue is empty - it tries to send ByteBuffer
to the given SocketAddress
directly
(without putting to the queue).
If associated write queue is not empty or after direct sending
ByteBuffer
still has ready data to be written -
ByteBuffer
will be added to AsyncQueue
.
If an exception occurs, during direct writing - it will be propagated
to the caller directly, otherwise, if the ByteBuffer
is
added to a writing queue - exception notification will come via
AsyncWriteCallbackHandler.onIOException()
Before data will be written on SelectableChannel
, first it
will be passed for preprocessing to AsyncQueueDataProcessor
,
and then preprocessor result data
(AsyncQueueDataProcessor.getResultByteBuffer()
) will be
written on the SelectableChannel
.
writeToAsyncQueue
in interface AsyncQueueWritable
dstAddress
- destination SocketAddress
data will
be sent tobuffer
- ByteBuffer
callbackHandler
- AsyncWriteCallbackHandler
,
which will get notified, when
ByteBuffer
will be completely writtenwritePreProcessor
- AsyncQueueDataProcessor
, which
will perform data processing, before it will be
written on SelectableChannel
isCloneByteBuffer
- if true - AsyncQueueWriter
will clone given
ByteBuffer
before puting it to the
AsyncQueue
IOException
public void close() throws IOException
close
in interface ConnectorHandler<TCPSelectorHandler,CallbackHandler>
close
in interface Closeable
IOException
public void finishConnect(SelectionKey key) throws IOException
finishConnect
in interface ConnectorHandler<TCPSelectorHandler,CallbackHandler>
key
- - a SelectionKey
IOException
public void configureChannel(SelectableChannel channel) throws IOException
IOException
public Controller.Protocol protocol()
protocol
in interface ConnectorHandler<TCPSelectorHandler,CallbackHandler>
ConnectorHandler
's protocolpublic boolean isConnected()
public Controller getController()
ConnectorHandler
Controller
getController
in interface ConnectorHandler<TCPSelectorHandler,CallbackHandler>
public void setController(Controller controller)
ConnectorHandler
Controller
associated with this instance.
setController
in interface ConnectorHandler<TCPSelectorHandler,CallbackHandler>
controller
- Controller
public SelectableChannel getUnderlyingChannel()
ConnectorHandler
ConnectorHandler
's underlying channel
getUnderlyingChannel
in interface ConnectorHandler<TCPSelectorHandler,CallbackHandler>
public CallbackHandler getCallbackHandler()
ConnectorHandler
ConnectorHandler
's callback handler instance,
which is used to process occuring events
getCallbackHandler
in interface ConnectorHandler<TCPSelectorHandler,CallbackHandler>
public void setCallbackHandler(CallbackHandler callbackHandler)
ConnectorHandler
ConnectorHandler
's callback handler instance,
which is used to process occuring events
setCallbackHandler
in interface ConnectorHandler<TCPSelectorHandler,CallbackHandler>
callbackHandler
- handlerpublic TCPSelectorHandler getSelectorHandler()
ConnectorHandler
SelectorHandler
, which manages this
ConnectorHandler
getSelectorHandler
in interface ConnectorHandler<TCPSelectorHandler,CallbackHandler>
SelectorHandler
public boolean isTcpNoDelay()
public void setTcpNoDelay(boolean tcpNoDelay)
public int getLinger()
public void setLinger(int linger)
public int getConnectionTimeout()
public void setConnectionTimeout(int connectionTimeout)
connectionTimeout
- TCP channel connection timeout in millisecondspublic boolean isReuseAddress()
public void setReuseAddress(boolean reuseAddress)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |