public abstract class NIOConnection extends Object implements Connection<SocketAddress>
Connection
implementation for Java NIO Connections.Connection.CloseListener, Connection.CloseType
Modifier and Type | Field and Description |
---|---|
protected TaskQueue<AsyncReadQueueRecord> |
asyncReadQueue |
protected TaskQueue<AsyncWriteQueueRecord> |
asyncWriteQueue |
protected AttributeHolder |
attributes |
protected SelectableChannel |
channel |
protected AtomicReference<CloseType> |
closeTypeFlag |
protected AtomicReference<Object> |
connectCloseSemaphor |
protected boolean |
isBlocking |
protected boolean |
isStandalone |
protected int |
maxAsyncWriteQueueSize |
protected DefaultMonitoringConfig<ConnectionProbe> |
monitoringConfig
Connection probes
|
protected static Object |
NOTIFICATION_CLOSED_COMPLETE |
protected static Object |
NOTIFICATION_INITIALIZED |
protected Processor |
processor |
protected ProcessorSelector |
processorSelector |
protected long |
readTimeoutMillis |
protected SelectionKey |
selectionKey |
protected SelectorRunner |
selectorRunner |
protected NIOTransport |
transport |
protected long |
writeTimeoutMillis |
protected short |
zeroByteReadCount |
Constructor and Description |
---|
NIOConnection(NIOTransport transport) |
Modifier and Type | Method and Description |
---|---|
void |
addCloseListener(CloseListener closeListener)
Add the
Connection.CloseListener , which will be notified once Connection
will be closed. |
void |
addCloseListener(Connection.CloseListener closeListener)
Add the
Connection.CloseListener , which will be notified once Connection
will be closed. |
void |
attachToSelectorRunner(SelectorRunner selectorRunner) |
protected void |
checkEmptyRead(int size) |
GrizzlyFuture<Closeable> |
close()
Close the
Connection |
void |
close(CompletionHandler<Closeable> completionHandler)
Close the
Connection |
protected void |
close0(CompletionHandler<Closeable> completionHandler,
boolean isClosedLocally) |
void |
closeSilently()
Close the
Connection silently, no notification required on
completion or failure. |
void |
configureBlocking(boolean isBlocking)
Sets the
Connection mode. |
void |
configureStandalone(boolean isStandalone) |
void |
detachSelectorRunner() |
void |
disableIOEvent(IOEvent ioEvent) |
void |
enableIOEvent(IOEvent ioEvent) |
TaskQueue<AsyncReadQueueRecord> |
getAsyncReadQueue() |
TaskQueue<AsyncWriteQueueRecord> |
getAsyncWriteQueue() |
AttributeHolder |
getAttributes()
Get associated
AttributeHolder . |
SelectableChannel |
getChannel() |
int |
getMaxAsyncWriteQueueSize()
Get the max size (in bytes) of asynchronous write queue associated
with connection.
|
MonitoringConfig<ConnectionProbe> |
getMonitoringConfig()
Return the object associated
MonitoringConfig . |
Processor |
getProcessor()
Gets the default
Processor , which will process Connection
I/O events. |
ProcessorSelector |
getProcessorSelector()
Gets the default
ProcessorSelector , which will be used to get
Processor to process Connection I/O events, in case if
this Connection 's Processor is null. |
long |
getReadTimeout(TimeUnit timeUnit) |
SelectionKey |
getSelectionKey() |
SelectorRunner |
getSelectorRunner() |
Transport |
getTransport()
Get the
Transport , to which this Connection belongs to. |
long |
getWriteTimeout(TimeUnit timeUnit) |
boolean |
isBlocking() |
boolean |
isOpen()
Is
Connection open and ready. |
boolean |
isStandalone() |
void |
notifyConnectionError(Throwable error)
Method gets invoked, when error occur during the Connection lifecycle.
|
protected static void |
notifyIOEventDisabled(NIOConnection connection,
IOEvent ioEvent)
Notify registered
ConnectionProbe s about the IO Event disabled event. |
protected static void |
notifyIOEventEnabled(NIOConnection connection,
IOEvent ioEvent)
Notify registered
ConnectionProbe s about the IO Event enabled event. |
protected static void |
notifyIOEventReady(NIOConnection connection,
IOEvent ioEvent)
Notify registered
ConnectionProbe s about the IO Event ready event. |
protected static void |
notifyProbesAccept(NIOConnection serverConnection,
NIOConnection clientConnection)
Notify registered
ConnectionProbe s about the accept event. |
protected static void |
notifyProbesBind(NIOConnection connection)
Notify registered
ConnectionProbe s about the bind event. |
protected static void |
notifyProbesClose(NIOConnection connection)
Notify registered
ConnectionProbe s about the close event. |
protected static void |
notifyProbesConnect(NIOConnection connection)
Notify registered
ConnectionProbe s about the connect event. |
protected static void |
notifyProbesError(NIOConnection connection,
Throwable error)
Notify registered
ConnectionProbe s about the error. |
protected static void |
notifyProbesRead(NIOConnection connection,
Buffer data,
int size)
Notify registered
ConnectionProbe s about the read event. |
protected static void |
notifyProbesWrite(NIOConnection connection,
Buffer data,
long size)
Notify registered
ConnectionProbe s about the write event. |
Processor |
obtainProcessor(IOEvent ioEvent)
Gets the
Processor , which will process Connection
I/O event. |
<E> E |
obtainProcessorState(Processor processor,
NullaryFunction<E> factory)
Returns the
Processor state associated with this Connection. |
protected void |
preClose() |
<M> GrizzlyFuture<ReadResult<M,SocketAddress>> |
read()
Method reads data.
|
<M> void |
read(CompletionHandler<ReadResult<M,SocketAddress>> completionHandler) |
boolean |
removeCloseListener(CloseListener closeListener)
Remove the
Connection.CloseListener . |
boolean |
removeCloseListener(Connection.CloseListener closeListener)
Remove the
Connection.CloseListener . |
protected void |
setChannel(SelectableChannel channel) |
void |
setMaxAsyncWriteQueueSize(int maxAsyncWriteQueueSize)
Set the max size (in bytes) of asynchronous write queue associated
with connection.
|
void |
setProcessor(Processor preferableProcessor)
Sets the default
Processor , which will process Connection
I/O events. |
void |
setProcessorSelector(ProcessorSelector preferableProcessorSelector)
Sets the default
ProcessorSelector , which will be used to get
Processor to process Connection I/O events, in case if
this Connection 's Processor is null. |
void |
setReadTimeout(long timeout,
TimeUnit timeUnit) |
protected void |
setSelectionKey(SelectionKey selectionKey) |
protected void |
setSelectorRunner(SelectorRunner selectorRunner) |
void |
setWriteTimeout(long timeout,
TimeUnit timeUnit) |
void |
simulateIOEvent(IOEvent ioEvent) |
<M> GrizzlyFuture<WriteResult<M,SocketAddress>> |
write(M message)
Method writes the buffer.
|
<M> void |
write(M message,
CompletionHandler<WriteResult<M,SocketAddress>> completionHandler)
Method writes the buffer.
|
<M> void |
write(M message,
CompletionHandler<WriteResult<M,SocketAddress>> completionHandler,
PushBackHandler pushbackHandler)
Deprecated.
|
<M> void |
write(SocketAddress dstAddress,
M message,
CompletionHandler<WriteResult<M,SocketAddress>> completionHandler)
Method writes the buffer to the specific address.
|
<M> void |
write(SocketAddress dstAddress,
M message,
CompletionHandler<WriteResult<M,SocketAddress>> completionHandler,
PushBackHandler pushbackHandler)
Deprecated.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getLocalAddress, getPeerAddress, getReadBufferSize, getWriteBufferSize, setReadBufferSize, setWriteBufferSize
canWrite, canWrite, notifyCanWrite, notifyCanWrite
protected static final Object NOTIFICATION_INITIALIZED
protected static final Object NOTIFICATION_CLOSED_COMPLETE
protected final NIOTransport transport
protected volatile int maxAsyncWriteQueueSize
protected volatile long readTimeoutMillis
protected volatile long writeTimeoutMillis
protected volatile SelectableChannel channel
protected volatile SelectionKey selectionKey
protected volatile SelectorRunner selectorRunner
protected volatile Processor processor
protected volatile ProcessorSelector processorSelector
protected final AttributeHolder attributes
protected final TaskQueue<AsyncReadQueueRecord> asyncReadQueue
protected final TaskQueue<AsyncWriteQueueRecord> asyncWriteQueue
protected final AtomicReference<Object> connectCloseSemaphor
protected final AtomicReference<CloseType> closeTypeFlag
protected volatile boolean isBlocking
protected volatile boolean isStandalone
protected short zeroByteReadCount
protected final DefaultMonitoringConfig<ConnectionProbe> monitoringConfig
public NIOConnection(NIOTransport transport)
public void configureBlocking(boolean isBlocking)
Connection
Connection
mode.configureBlocking
in interface Connection<SocketAddress>
isBlocking
- the Connection
mode. true,
if Connection
should operate in blocking mode, or
false otherwise.public boolean isBlocking()
isBlocking
in interface Connection<SocketAddress>
Connection
mode.
true, if Connection
is operating in blocking mode, or
false otherwise.public void configureStandalone(boolean isStandalone)
configureStandalone
in interface Connection<SocketAddress>
public boolean isStandalone()
isStandalone
in interface Connection<SocketAddress>
public Transport getTransport()
Connection
Transport
, to which this Connection
belongs to.getTransport
in interface Connection<SocketAddress>
Transport
, to which this Connection
belongs to.public int getMaxAsyncWriteQueueSize()
getMaxAsyncWriteQueueSize
in interface Connection<SocketAddress>
public void setMaxAsyncWriteQueueSize(int maxAsyncWriteQueueSize)
setMaxAsyncWriteQueueSize
in interface Connection<SocketAddress>
maxAsyncWriteQueueSize
- the max size (in bytes) of asynchronous
write queue associated with connection.public long getReadTimeout(TimeUnit timeUnit)
getReadTimeout
in interface Connection<SocketAddress>
public void setReadTimeout(long timeout, TimeUnit timeUnit)
setReadTimeout
in interface Connection<SocketAddress>
public long getWriteTimeout(TimeUnit timeUnit)
getWriteTimeout
in interface Connection<SocketAddress>
public void setWriteTimeout(long timeout, TimeUnit timeUnit)
setWriteTimeout
in interface Connection<SocketAddress>
public SelectorRunner getSelectorRunner()
protected void setSelectorRunner(SelectorRunner selectorRunner)
public void attachToSelectorRunner(SelectorRunner selectorRunner) throws IOException
IOException
public void detachSelectorRunner() throws IOException
IOException
public SelectableChannel getChannel()
protected void setChannel(SelectableChannel channel)
public SelectionKey getSelectionKey()
protected void setSelectionKey(SelectionKey selectionKey)
public Processor obtainProcessor(IOEvent ioEvent)
Connection
Processor
, which will process Connection
I/O event.
If Processor
is null, - then Transport
will try
to get Processor
using Connection
's
ProcessorSelector.select(IOEvent, Connection)
. If
ProcessorSelector
, associated withthe Connection
is also
null - will ask Transport
for a Processor
.obtainProcessor
in interface Connection<SocketAddress>
Processor
, which will process
Connection
I/O events.public Processor getProcessor()
Connection
Processor
, which will process Connection
I/O events.
If Processor
is null, - then Transport
will try
to get Processor
using Connection
's
ProcessorSelector.select(IOEvent, Connection)
. If
ProcessorSelector
, associated withthe Connection
is also
null - Transport
will try to get Processor
using own settings.getProcessor
in interface Connection<SocketAddress>
Processor
, which will process
Connection
I/O events.public void setProcessor(Processor preferableProcessor)
Connection
Processor
, which will process Connection
I/O events.
If Processor
is null, - then Transport
will try
to get Processor
using Connection
's
ProcessorSelector.select(IOEvent, Connection)
. If
ProcessorSelector
, associated withthe Connection
is also
null - Transport
will try to get Processor
using own settings.setProcessor
in interface Connection<SocketAddress>
preferableProcessor
- the default Processor
, which will
process Connection
I/O events.public ProcessorSelector getProcessorSelector()
Connection
ProcessorSelector
, which will be used to get
Processor
to process Connection
I/O events, in case if
this Connection
's Processor
is null.getProcessorSelector
in interface Connection<SocketAddress>
ProcessorSelector
, which will be used to get
Processor
to process Connection
I/O events, in case if
this Connection
's Processor
is null.public void setProcessorSelector(ProcessorSelector preferableProcessorSelector)
Connection
ProcessorSelector
, which will be used to get
Processor
to process Connection
I/O events, in case if
this Connection
's Processor
is null.setProcessorSelector
in interface Connection<SocketAddress>
preferableProcessorSelector
- the default ProcessorSelector
,
which will be used to get Processor
to process Connection
I/O events, in case if this Connection
's Processor
is null.public <E> E obtainProcessorState(Processor processor, NullaryFunction<E> factory)
Connection
Processor
state associated with this Connection.obtainProcessorState
in interface Connection<SocketAddress>
processor
- Processor
Processor
state associated with this Connection.public TaskQueue<AsyncReadQueueRecord> getAsyncReadQueue()
public TaskQueue<AsyncWriteQueueRecord> getAsyncWriteQueue()
public AttributeHolder getAttributes()
AttributeStorage
AttributeHolder
.
Implementation may return null if AttributeHolder
wasn't
initialized yet.getAttributes
in interface AttributeStorage
AttributeHolder
.
Implementation may return null if AttributeHolder
wasn't
initialized yet.public <M> GrizzlyFuture<ReadResult<M,SocketAddress>> read()
Readable
read
in interface Readable<SocketAddress>
Future
, using which it's possible to check the resultpublic <M> void read(CompletionHandler<ReadResult<M,SocketAddress>> completionHandler)
read
in interface Readable<SocketAddress>
public <M> GrizzlyFuture<WriteResult<M,SocketAddress>> write(M message)
Writeable
write
in interface Writeable<SocketAddress>
message
- the buffer, from which the data will be writtenFuture
, using which it's possible to check the
resultpublic <M> void write(M message, CompletionHandler<WriteResult<M,SocketAddress>> completionHandler)
Writeable
write
in interface Writeable<SocketAddress>
message
- the buffer, from which the data will be writtencompletionHandler
- CompletionHandler
,
which will get notified, when write will be completed@Deprecated public <M> void write(M message, CompletionHandler<WriteResult<M,SocketAddress>> completionHandler, PushBackHandler pushbackHandler)
Writeable
write
in interface Writeable<SocketAddress>
message
- the buffer, from which the data will be writtencompletionHandler
- CompletionHandler
,
which will get notified, when write will be completedpushbackHandler
- PushBackHandler
, which will be notified
if message was accepted by transport write queue or refusedpublic <M> void write(SocketAddress dstAddress, M message, CompletionHandler<WriteResult<M,SocketAddress>> completionHandler)
Writeable
write
in interface Writeable<SocketAddress>
dstAddress
- the destination address the buffer will be
sent tomessage
- the buffer, from which the data will be writtencompletionHandler
- CompletionHandler
,
which will get notified, when write will be completed@Deprecated public <M> void write(SocketAddress dstAddress, M message, CompletionHandler<WriteResult<M,SocketAddress>> completionHandler, PushBackHandler pushbackHandler)
Writeable
write
in interface Writeable<SocketAddress>
dstAddress
- the destination address the buffer will be
sent tomessage
- the buffer, from which the data will be writtencompletionHandler
- CompletionHandler
,
which will get notified, when write will be completedpushbackHandler
- PushBackHandler
, which will be notified
if message was accepted by transport write queue or refusedpublic boolean isOpen()
Connection
Connection
open and ready.
Returns true, if connection is open and ready, or false
otherwise.isOpen
in interface Connection<SocketAddress>
public GrizzlyFuture<Closeable> close()
Connection
Connection
close
in interface Closeable
close
in interface Connection<SocketAddress>
Future
, which could be checked in case, if close operation
will be run asynchronouslypublic void close(CompletionHandler<Closeable> completionHandler)
Connection
Connection
close
in interface Closeable
close
in interface Connection<SocketAddress>
completionHandler
- CompletionHandler
to be called, when
the connection is closed.public final void closeSilently()
Connection
Connection
silently, no notification required on
completion or failure.closeSilently
in interface Connection<SocketAddress>
protected void close0(CompletionHandler<Closeable> completionHandler, boolean isClosedLocally)
public void addCloseListener(CloseListener closeListener)
Connection.CloseListener
, which will be notified once Connection
will be closed.addCloseListener
in interface Closeable
addCloseListener
in interface Connection<SocketAddress>
closeListener
- Connection.CloseListener
.public boolean removeCloseListener(CloseListener closeListener)
Connection.CloseListener
.removeCloseListener
in interface Closeable
removeCloseListener
in interface Connection<SocketAddress>
closeListener
- Connection.CloseListener
.public void addCloseListener(Connection.CloseListener closeListener)
Connection
Connection.CloseListener
, which will be notified once Connection
will be closed.addCloseListener
in interface Connection<SocketAddress>
closeListener
- Connection.CloseListener
public boolean removeCloseListener(Connection.CloseListener closeListener)
Connection
Connection.CloseListener
.removeCloseListener
in interface Connection<SocketAddress>
closeListener
- Connection.CloseListener
.public void notifyConnectionError(Throwable error)
notifyConnectionError
in interface Connection<SocketAddress>
error
- Throwable
.public final MonitoringConfig<ConnectionProbe> getMonitoringConfig()
MonitoringConfig
.getMonitoringConfig
in interface Connection<SocketAddress>
getMonitoringConfig
in interface MonitoringAware<ConnectionProbe>
MonitoringConfig
.protected static void notifyProbesBind(NIOConnection connection)
ConnectionProbe
s about the bind event.connection
- the Connection event occurred on.protected static void notifyProbesAccept(NIOConnection serverConnection, NIOConnection clientConnection)
ConnectionProbe
s about the accept event.serverConnection
- the server Connection, which accepted the client connection.clientConnection
- the client Connection.protected static void notifyProbesConnect(NIOConnection connection)
ConnectionProbe
s about the connect event.connection
- the Connection event occurred on.protected static void notifyProbesRead(NIOConnection connection, Buffer data, int size)
ConnectionProbe
s about the read event.protected static void notifyProbesWrite(NIOConnection connection, Buffer data, long size)
ConnectionProbe
s about the write event.protected static void notifyIOEventReady(NIOConnection connection, IOEvent ioEvent)
ConnectionProbe
s about the IO Event ready event.connection
- the Connection event occurred on.ioEvent
- the IOEvent
.protected static void notifyIOEventEnabled(NIOConnection connection, IOEvent ioEvent)
ConnectionProbe
s about the IO Event enabled event.connection
- the Connection event occurred on.ioEvent
- the IOEvent
.protected static void notifyIOEventDisabled(NIOConnection connection, IOEvent ioEvent)
ConnectionProbe
s about the IO Event disabled event.connection
- the Connection event occurred on.ioEvent
- the IOEvent
.protected static void notifyProbesClose(NIOConnection connection)
ConnectionProbe
s about the close event.connection
- the Connection event occurred on.protected static void notifyProbesError(NIOConnection connection, Throwable error)
ConnectionProbe
s about the error.connection
- the Connection event occurred on.protected void preClose()
public void simulateIOEvent(IOEvent ioEvent) throws IOException
simulateIOEvent
in interface Connection<SocketAddress>
IOException
public final void enableIOEvent(IOEvent ioEvent) throws IOException
enableIOEvent
in interface Connection<SocketAddress>
IOException
public final void disableIOEvent(IOEvent ioEvent) throws IOException
disableIOEvent
in interface Connection<SocketAddress>
IOException
protected final void checkEmptyRead(int size)
Copyright © 2014 Oracle Corporation. All rights reserved.