public class StreamSession extends AbstractSession implements IStreamSession
IStreamSession interface.| Constructor and Description |
|---|
StreamSession(IStreamHandler handler)
Constructs a stream-oriented session associated with a handler.
|
StreamSession(String name,
IStreamHandler handler)
Constructs a named stream-oriented session associated with a handler.
|
| Modifier and Type | Method and Description |
|---|---|
ByteBuffer |
allocate(int capacity)
Allocates a byte buffer by using the allocator associated with this session.
|
void |
close()
Gently closes this session after all pending data waiting for writing are fully flushed.
|
void |
dirtyClose()
Quickly closes this session without flushing any pending data and without following
close procedure of an application layer (e.g.
|
IFuture<Void> |
execute(Runnable task)
Executes a task in the selector-loop's thread this session is registered
with.
|
void |
executenf(Runnable task)
Executes a task in the selector-loop's thread this session is registered
with.
|
IFuture<Void> |
getCloseFuture()
Gets the future that can be use to wait for the completion of the closing
phase.
|
ICodecPipeline |
getCodecPipeline()
Gets the codec pipeline that is associated with this session.
|
ISessionConfig |
getConfig()
Gets the configuration of this session.
|
IFuture<Void> |
getCreateFuture()
Gets the future that can be use to wait for the completion of the
creation phase.
|
long |
getCreationTime()
Gets the session's creation time in milliseconds.
|
IFuture<Void> |
getEndFuture()
Gets the future that can be use to wait for the completion of the ending
phase.
|
IStreamHandler |
getHandler()
Gets the stream-oriented handler associated with this session
|
long |
getLastIoTime()
Gets the time in milliseconds when I/O operation occurred lastly.
|
long |
getLastReadTime()
Gets the time in milliseconds when read operation occurred lastly.
|
long |
getLastWriteTime()
Gets the time in milliseconds when write operation occurred lastly.
|
SocketAddress |
getLocalAddress()
Return the local address this session is bound to.
|
IFuture<Void> |
getOpenFuture()
Gets the future that can be use to wait for the completion of the opening
phase.
|
IStreamSession |
getParent()
Gets the parent session.
|
ISessionPipeline<IStreamSession> |
getPipeline()
Gets the pipeline of stream-oriented sessions currently associated with this
session.
|
long |
getReadBytes()
Gets the total number of bytes which were read from this session.
|
double |
getReadBytesThroughput()
Gets the number of read bytes per second.
|
IFuture<Void> |
getReadyFuture()
Gets the future that can be use to wait for the completion of the ready
phase.
|
SocketAddress |
getRemoteAddress()
Returns the remote address to which this session is connected.
|
SessionState |
getState()
Gets the current state of this session.
|
ISessionTimer |
getTimer()
Gets the session timer associated with this session.
|
long |
getWrittenBytes()
Gets the total number of bytes which were written to this session.
|
double |
getWrittenBytesThroughput()
Gets the number of written bytes per second.
|
boolean |
isDataCopyingOptimized()
Tells if the processing of data is optimized to reduce data copying between
byte buffers.
|
boolean |
isOpen()
Tells if this session is open.
|
boolean |
isReadSuspended()
Tells if read operations are suspended for this session.
|
boolean |
isWriteSuspended()
Tells if write operations are suspended for this session.
|
void |
quickClose()
Quickly closes this session without flushing any pending data.
|
void |
release(ByteBuffer buffer)
Release given byte buffer by the allocator associated with this session.
|
void |
resumeRead()
Resumes read operations for this session.
|
void |
resumeWrite()
Resumes write operations for this session.
|
void |
suspendRead()
Suspends read operations for this session.
|
void |
suspendWrite()
Suspends write operations for this session.
|
IFuture<Void> |
write(byte[] data)
Writes
data.length bytes from the specified byte array
to the stream-oriented channel associated with this session. |
IFuture<Void> |
write(byte[] data,
int offset,
int length)
Writes
length bytes from the specified byte array
to the stream-oriented channel associated with this session. |
IFuture<Void> |
write(ByteBuffer data)
Writes
data.remaining() bytes from the specified
byte buffer to the stream-oriented channel associated with
this session. |
IFuture<Void> |
write(ByteBuffer data,
int length)
Writes
length bytes from the specified byte buffer
to the stream-oriented channel associated with this session. |
IFuture<Void> |
write(IByteBufferHolder holder)
Writes
holder.remaining() bytes from the specified byte buffer
holder to the stream-oriented channel associated with this session. |
IFuture<Void> |
write(Object msg)
Writes a message to the stream-oriented channel associated with this
session.
|
void |
writenf(byte[] data)
Writes
data.length bytes from the specified byte array
to the stream-oriented channel associated with this session. |
void |
writenf(byte[] data,
int offset,
int length)
Writes
length bytes from the specified byte array
to the stream-oriented channel associated with this session. |
void |
writenf(ByteBuffer data)
Writes
data.remaining() bytes from the specified
byte buffer to the stream-oriented channel associated with
this session. |
void |
writenf(ByteBuffer data,
int length)
Writes
length bytes from the specified byte buffer
to the stream-oriented channel associated with this session. |
void |
writenf(IByteBufferHolder holder)
Writes
holder.remaining() bytes from the specified
byte buffer holder to the stream-oriented channel associated with
this session. |
void |
writenf(Object msg)
Writes a message to the stream-oriented channel associated with this
session.
|
getAttributesgetId, getName, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitallocate, dirtyClose, execute, executenf, getAttributes, getCloseFuture, getCodecPipeline, getConfig, getCreateFuture, getCreationTime, getEndFuture, getId, getLastIoTime, getLastReadTime, getLastWriteTime, getName, getOpenFuture, getReadBytes, getReadBytesThroughput, getReadyFuture, getTimer, getWrittenBytes, getWrittenBytesThroughput, isDataCopyingOptimized, isOpen, isReadSuspended, isWriteSuspended, quickClose, release, resumeRead, resumeWrite, suspendRead, suspendWritepublic StreamSession(String name, IStreamHandler handler)
name - the name for this session, or null if the
handler's name should be used for this session's namehandler - the handler that should be associated with this sessionpublic StreamSession(IStreamHandler handler)
handler - the handler that should be associated with this sessionpublic ISessionPipeline<IStreamSession> getPipeline()
IStreamSessionThe pipeline determines the sessions that will be processed prior to the session being the owner of the pipeline. All sessions in the pipeline along with the owning session will operate on the same connection (i.e the socket channel).
Unless the pipeline is marked for closing or a failure occurred closing of a session in the pipeline moves the processing to the next session in the pipeline or if the closed session was the last one in the pipeline to the session being the owner of the pipeline.
getPipeline in interface IStreamSessionpublic SessionState getState()
ISessionpublic IStreamHandler getHandler()
IStreamSessiongetHandler in interface ISessiongetHandler in interface IStreamSessionpublic IStreamSession getParent()
ISessionSome sessions may not implement its own I/O functionalities and use their parent's ones instead.
getParent in interface ISessiongetParent in interface IStreamSessionnull if it does not exist.public IFuture<Void> write(byte[] data)
IStreamSessiondata.length bytes from the specified byte array
to the stream-oriented channel associated with this session.
The operation is asynchronous.
write in interface IStreamSessiondata - bytes to be writtenpublic void writenf(byte[] data)
IStreamSessiondata.length bytes from the specified byte array
to the stream-oriented channel associated with this session.
The operation is asynchronous.
This method should be used whenever there will be no need to synchronize on a future object. This will save some resources and may improve performance.
writenf in interface IStreamSessiondata - bytes to be writtenpublic IFuture<Void> write(byte[] data, int offset, int length)
IStreamSessionlength bytes from the specified byte array
to the stream-oriented channel associated with this session.
The operation is asynchronous.
write in interface IStreamSessiondata - bytes to be writtenoffset - offset within the array of the first byte to be writtenlength - number of bytes to be writtenpublic void writenf(byte[] data,
int offset,
int length)
IStreamSessionlength bytes from the specified byte array
to the stream-oriented channel associated with this session.
The operation is asynchronous.
This method should be used whenever there will be no need to synchronize on a future object. This will save some resources and may improve performance.
writenf in interface IStreamSessiondata - bytes to be writtenoffset - offset within the array of the first byte to be writtenlength - number of bytes to be writtenpublic IFuture<Void> write(ByteBuffer data)
IStreamSessiondata.remaining() bytes from the specified
byte buffer to the stream-oriented channel associated with
this session.
The operation is asynchronous.
write in interface IStreamSessiondata - bytes to be writtenpublic void writenf(ByteBuffer data)
IStreamSessiondata.remaining() bytes from the specified
byte buffer to the stream-oriented channel associated with
this session.
The operation is asynchronous.
This method should be used whenever there will be no need to synchronize on a future object. This will save some resources and may improve performance.
writenf in interface IStreamSessiondata - bytes to be writtenpublic IFuture<Void> write(IByteBufferHolder holder)
IStreamSessionholder.remaining() bytes from the specified byte buffer
holder to the stream-oriented channel associated with this session.
The operation is asynchronous.
NOTE: The behavior of this method may change if the specified byte buffer holder is marked as a message.
write in interface IStreamSessionholder - bytes to be writtenIByteBufferHolder.isMessage()public void writenf(IByteBufferHolder holder)
IStreamSessionholder.remaining() bytes from the specified
byte buffer holder to the stream-oriented channel associated with
this session.
The operation is asynchronous.
This method should be used whenever there will be no need to synchronize on a future object. This will save some resources and may improve performance.
NOTE: The behavior of this method may change if the specified byte buffer holder is marked as a message.
writenf in interface IStreamSessionholder - bytes to be writtenIByteBufferHolder.isMessage()public IFuture<Void> write(ByteBuffer data, int length)
IStreamSessionlength bytes from the specified byte buffer
to the stream-oriented channel associated with this session.
The operation is asynchronous.
write in interface IStreamSessiondata - bytes to be writtenlength - number of bytes to be writtenpublic void writenf(ByteBuffer data, int length)
IStreamSessionlength bytes from the specified byte buffer
to the stream-oriented channel associated with this session.
The operation is asynchronous.
This method should be used whenever there will be no need to synchronize on a future object. This will save some resources and may improve performance.
writenf in interface IStreamSessiondata - bytes to be writtenlength - number of bytes to be writtenpublic IFuture<Void> write(Object msg)
IStreamSessionThe operation is asynchronous.
This method usually requires that the session has configured a codec
pipeline with at least one encoder that accepts the msg as the inbound
data. If a codec pipeline is not configured or no encoder accept the msg
object it still accepts messages that are of the byte[] or
ByteBuffer type.
write in interface IStreamSessionmsg - the message to be writtenpublic void writenf(Object msg)
IStreamSessionThe operation is asynchronous.
This method usually requires that the session has configured a codec
pipeline with at least one encoder that accepts the msg as the inbound
data. If a codec pipeline is not configured or no encoder accept the msg
object it still accepts messages that are of the byte[] or
ByteBuffer type.
This method should be used whenever there will be no need to synchronize on a future object. This will save some resources and may improve performance.
writenf in interface IStreamSessionmsg - the message to be writtenpublic void close()
ISessionAfter returning from this method any consecutive writes will be simply discarded.
public SocketAddress getLocalAddress()
ISessiongetLocalAddress in interface ISessionnull if this session is not
bound yetSocketpublic SocketAddress getRemoteAddress()
ISessiongetRemoteAddress in interface ISessionnull if this session is not
connected yetSocketpublic IFuture<Void> getCreateFuture()
ISessiongetCreateFuture in interface ISessionpublic IFuture<Void> getOpenFuture()
ISessiongetOpenFuture in interface ISessionpublic IFuture<Void> getReadyFuture()
ISessiongetReadyFuture in interface ISessionpublic IFuture<Void> getCloseFuture()
ISessiongetCloseFuture in interface ISessionpublic IFuture<Void> getEndFuture()
ISessiongetEndFuture in interface ISessionpublic ISessionConfig getConfig()
ISessionpublic ICodecPipeline getCodecPipeline()
ISessiongetCodecPipeline in interface ISessionnull if the session does not
support itpublic boolean isOpen()
ISessionIt is equal to:
return getState() == SessionState.OPEN
public void quickClose()
ISessionAfter returning from this method any consecutive writes will be simply discarded.
quickClose in interface ISessionpublic void dirtyClose()
ISessiondirtyClose in interface ISessionpublic void suspendRead()
ISessionsuspendRead in interface ISessionpublic void suspendWrite()
ISessionsuspendWrite in interface ISessionpublic void resumeRead()
ISessionresumeRead in interface ISessionpublic void resumeWrite()
ISessionresumeWrite in interface ISessionpublic boolean isReadSuspended()
ISessionisReadSuspended in interface ISessiontrue if suspendedpublic boolean isWriteSuspended()
ISessionisWriteSuspended in interface ISessiontrue if suspendedpublic final long getReadBytes()
ISessiongetReadBytes in interface ISessionpublic final long getWrittenBytes()
ISessiongetWrittenBytes in interface ISessionpublic final double getReadBytesThroughput()
ISessiongetReadBytesThroughput in interface ISessionpublic final double getWrittenBytesThroughput()
ISessiongetWrittenBytesThroughput in interface ISessionpublic final long getCreationTime()
ISessiongetCreationTime in interface ISessionpublic final long getLastIoTime()
ISessiongetLastIoTime in interface ISessionpublic final long getLastReadTime()
ISessiongetLastReadTime in interface ISessionpublic final long getLastWriteTime()
ISessiongetLastWriteTime in interface ISessionpublic ISessionTimer getTimer()
ISessionpublic boolean isDataCopyingOptimized()
ISession
Checking this flag can be helpful in determining if a buffer allocated by the
ISession.allocate(int) method need to be released after passing it to the
session's write/send methods. For example, if the returned value is
true the buffer will be released automatically and so it should not
be released by a user's implementation.
isDataCopyingOptimized in interface ISessiontrue if the processing of data is optimizedISessionConfig.optimizeDataCopying()public ByteBuffer allocate(int capacity)
ISessionpublic void release(ByteBuffer buffer)
ISessionpublic IFuture<Void> execute(Runnable task)
ISessionpublic void executenf(Runnable task)
ISessionThis method should be used whenever there will be no need to synchronize on a future associated with the specified task. This will save some resources and may improve performance.
Copyright © 2017–2022 SNF4J.ORG. All rights reserved.