Package org.apache.sshd.common.io.nio2
Class Nio2Session
java.lang.Object
org.apache.sshd.common.util.logging.AbstractLoggingBean
org.apache.sshd.common.util.closeable.IoBaseCloseable
org.apache.sshd.common.util.closeable.AbstractCloseable
org.apache.sshd.common.io.nio2.Nio2Session
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Channel
,Closeable
,IoSession
,ConnectionEndpointsIndicator
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.sshd.common.util.closeable.AbstractCloseable
AbstractCloseable.State
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final SocketAddress
private final AtomicReference<Nio2DefaultIoWriteFuture>
static final int
private final long
private final IoHandler
private final AtomicLong
private final AtomicLong
private final SocketAddress
private final PropertyResolver
private final AtomicLong
private Runnable
private final SocketAddress
private final Nio2Service
private static final AtomicLong
private final AsynchronousSocketChannel
private boolean
private final Object
private final AtomicLong
private final Queue<Nio2DefaultIoWriteFuture>
Fields inherited from class org.apache.sshd.common.util.closeable.AbstractCloseable
closeFuture, futureLock, state
Fields inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
log
-
Constructor Summary
ConstructorsConstructorDescriptionNio2Session
(Nio2Service service, PropertyResolver propertyResolver, IoHandler handler, AsynchronousSocketChannel socket, SocketAddress acceptanceAddress) -
Method Summary
Modifier and TypeMethodDescriptionprotected Nio2CompletionHandler<Integer,
Object> createReadCycleCompletionHandler
(ByteBuffer buffer, Readable bufReader) protected Nio2CompletionHandler<Integer,
Object> createWriteCycleCompletionHandler
(Nio2DefaultIoWriteFuture future, AsynchronousSocketChannel socket, ByteBuffer buffer) protected CloseFuture
protected void
doCloseImmediately is called once and only once with state == Immediateprotected void
doReadCycle
(ByteBuffer buffer, Nio2CompletionHandler<Integer, Object> completion) protected void
doReadCycle
(ByteBuffer buffer, Readable bufReader) protected void
doWriteCycle
(ByteBuffer buffer, Nio2CompletionHandler<Integer, Object> completion) protected void
exceptionCaught
(Throwable exc) protected void
finishWrite
(Nio2DefaultIoWriteFuture future) getAttribute
(Object key) Returns the value of the user-defined attribute of this session.long
getId()
protected void
handleCompletedWriteCycle
(Nio2DefaultIoWriteFuture future, AsynchronousSocketChannel socket, ByteBuffer buffer, int writeLen, Nio2CompletionHandler<Integer, Object> completionHandler, Integer result, Object attachment) protected void
handleReadCycleCompletion
(ByteBuffer buffer, Readable bufReader, Nio2CompletionHandler<Integer, Object> completionHandler, Integer result, Object attachment) protected void
handleReadCycleFailure
(ByteBuffer buffer, Readable bufReader, Throwable exc, Object attachment) protected void
handleWriteCycleFailure
(Nio2DefaultIoWriteFuture future, AsynchronousSocketChannel socket, ByteBuffer buffer, int writeLen, Throwable exc, Object attachment) removeAttribute
(Object key) Removes a user-defined attribute with the specified key.void
Resume read operations on this session.setAttribute
(Object key, Object value) Sets a user-defined attribute.setAttributeIfAbsent
(Object key, Object value) Sets a user defined attribute if the attribute with the specified key is not set yet.void
Handle received EOF.void
void
startReading
(byte[] buf) void
startReading
(byte[] buf, int offset, int len) void
startReading
(int bufSize) void
startReading
(ByteBuffer buffer) protected void
void
suspend()
void
Suspend read operations on this session.toString()
writeBuffer
(Buffer buffer) Write a packet on the socket.Methods inherited from class org.apache.sshd.common.util.closeable.AbstractCloseable
addCloseFutureListener, builder, close, getFutureLock, isClosed, isClosing, preClose, removeCloseFutureListener
Methods inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
debug, debug, debug, debug, debug, error, error, error, error, error, getSimplifiedLogger, info, info, warn, warn, warn, warn, warn, warn, warn, warn
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.apache.sshd.common.Closeable
addCloseFutureListener, close, isClosed, isClosing, isOpen, removeCloseFutureListener
-
Field Details
-
DEFAULT_READBUF_SIZE
public static final int DEFAULT_READBUF_SIZE- See Also:
-
SESSION_ID_GENERATOR
-
id
private final long id -
service
-
ioHandler
-
socketChannel
-
attributes
-
localAddress
-
remoteAddress
-
acceptanceAddress
-
propertyResolver
-
writes
-
currentWrite
-
readCyclesCounter
-
lastReadCycleStart
-
writeCyclesCounter
-
lastWriteCycleStart
-
suspendLock
-
suspend
private volatile boolean suspend -
readRunnable
-
-
Constructor Details
-
Nio2Session
public Nio2Session(Nio2Service service, PropertyResolver propertyResolver, IoHandler handler, AsynchronousSocketChannel socket, SocketAddress acceptanceAddress) throws IOException - Throws:
IOException
-
-
Method Details
-
getId
public long getId() -
getAttribute
Description copied from interface:IoSession
Returns the value of the user-defined attribute of this session.- Specified by:
getAttribute
in interfaceIoSession
- Parameters:
key
- the key of the attribute- Returns:
null
if there is no attribute with the specified key
-
setAttribute
Description copied from interface:IoSession
Sets a user-defined attribute.- Specified by:
setAttribute
in interfaceIoSession
- Parameters:
key
- the key of the attributevalue
- the value of the attribute- Returns:
- The old value of the attribute -
null
if it is new.
-
setAttributeIfAbsent
Description copied from interface:IoSession
Sets a user defined attribute if the attribute with the specified key is not set yet. This method is same with the following code except that the operation is performed atomically.if (containsAttribute(key)) { return getAttribute(key); } else { return setAttribute(key, value); }
- Specified by:
setAttributeIfAbsent
in interfaceIoSession
- Parameters:
key
- The key of the attribute we want to setvalue
- The value we want to set- Returns:
- The old value of the attribute -
null
if not found.
-
removeAttribute
Description copied from interface:IoSession
Removes a user-defined attribute with the specified key.- Specified by:
removeAttribute
in interfaceIoSession
- Parameters:
key
- The key of the attribute we want to remove- Returns:
- The old value of the attribute -
null
if not found.
-
getRemoteAddress
- Specified by:
getRemoteAddress
in interfaceConnectionEndpointsIndicator
- Returns:
- the socket address of remote peer.
-
getLocalAddress
- Specified by:
getLocalAddress
in interfaceConnectionEndpointsIndicator
- Returns:
- the socket address of local machine which is associated with this session.
-
getAcceptanceAddress
- Specified by:
getAcceptanceAddress
in interfaceIoSession
- Returns:
- The service address through which this session was accepted -
null
if session was initiated by this peer instead of being accepted
-
getSocket
-
getIoHandler
-
suspend
public void suspend() -
writeBuffer
Description copied from interface:IoSession
Write a packet on the socket. Multiple writes can be issued concurrently and will be queued.- Specified by:
writeBuffer
in interfaceIoSession
- Parameters:
buffer
- the buffer send. NOTE: the buffer must not be touched until the returned write future is completed.- Returns:
- An
IoWriteFuture
that can be used to check when the packet has actually been sent - Throws:
IOException
- if an error occurred when sending the packet
-
exceptionCaught
-
doCloseGracefully
- Overrides:
doCloseGracefully
in classAbstractCloseable
-
doCloseImmediately
protected void doCloseImmediately()Description copied from class:AbstractCloseable
doCloseImmediately is called once and only once with state == Immediate
Overriding methods should always call the base implementation. It may be called concurrently while preClose() or doCloseGracefully is executing
- Overrides:
doCloseImmediately
in classAbstractCloseable
-
getService
- Specified by:
getService
in interfaceIoSession
- Returns:
- the
IoService
that created this session.
-
shutdownOutputStream
Description copied from interface:IoSession
Handle received EOF.- Specified by:
shutdownOutputStream
in interfaceIoSession
- Throws:
IOException
- If failed to shutdown the stream
-
startReading
public void startReading() -
startReading
public void startReading(int bufSize) -
startReading
public void startReading(byte[] buf) -
startReading
public void startReading(byte[] buf, int offset, int len) -
startReading
-
doReadCycle
-
createReadCycleCompletionHandler
protected Nio2CompletionHandler<Integer,Object> createReadCycleCompletionHandler(ByteBuffer buffer, Readable bufReader) -
handleReadCycleCompletion
protected void handleReadCycleCompletion(ByteBuffer buffer, Readable bufReader, Nio2CompletionHandler<Integer, Object> completionHandler, Integer result, Object attachment) -
handleReadCycleFailure
protected void handleReadCycleFailure(ByteBuffer buffer, Readable bufReader, Throwable exc, Object attachment) -
suspendRead
public void suspendRead()Description copied from interface:IoSession
Suspend read operations on this session. May do nothing if not supported by the session implementation. If the session usage includes a graceful shutdown with messages being exchanged, the caller needs to take care of resuming reading the input in order to actually be able to carry on the conversation with the peer.- Specified by:
suspendRead
in interfaceIoSession
-
resumeRead
public void resumeRead()Description copied from interface:IoSession
Resume read operations on this session. May do nothing if not supported by the session implementation.- Specified by:
resumeRead
in interfaceIoSession
-
doReadCycle
-
startWriting
protected void startWriting() -
doWriteCycle
-
createWriteCycleCompletionHandler
protected Nio2CompletionHandler<Integer,Object> createWriteCycleCompletionHandler(Nio2DefaultIoWriteFuture future, AsynchronousSocketChannel socket, ByteBuffer buffer) -
handleCompletedWriteCycle
protected void handleCompletedWriteCycle(Nio2DefaultIoWriteFuture future, AsynchronousSocketChannel socket, ByteBuffer buffer, int writeLen, Nio2CompletionHandler<Integer, Object> completionHandler, Integer result, Object attachment) -
handleWriteCycleFailure
protected void handleWriteCycleFailure(Nio2DefaultIoWriteFuture future, AsynchronousSocketChannel socket, ByteBuffer buffer, int writeLen, Throwable exc, Object attachment) -
finishWrite
-
toString
-