Class Window
java.lang.Object
org.apache.sshd.common.util.logging.AbstractLoggingBean
org.apache.sshd.common.channel.Window
- All Implemented Interfaces:
Closeable, AutoCloseable, ChannelHolder
- Direct Known Subclasses:
LocalWindow, RemoteWindow
public abstract class Window
extends org.apache.sshd.common.util.logging.AbstractLoggingBean
implements ChannelHolder, Closeable
A
Channel implements a sliding window flow control for data packets (SSH_MSG_CHANNEL_DATA and
SSH_MSG_CHANNEL_EXTENDED_DATA packets). Each channel has two windows, a local window describing how much data it is
prepared to receive (and the peer is allowed to send), and a remote window that reflects this side's view of the
peer's local window. When the local window size is zero, no data should be received; when the remote window size is
zero, no data should be sent. Peers update the other's remote window periodically, but at the latest when a window is
exhausted, by sending SSH_MSG_CHANNEL_WINDOW_ADJUST messages.- Author:
- Apache MINA SSHD Project
- See Also:
-
Field Summary
FieldsFields inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
log -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcheckInitialized(String location) voidclose()abstract longconsume(long len) Consumelenbytes from the window.longConsume all bytes from the window.longlonglonggetSize()Retrieves the current size of the window; i.e., the maximum number of bytes available for consumption viaconsume(long).protected voidinit(long size, long packetSize, org.apache.sshd.common.PropertyResolver resolver) booleanisOpen()largerThan(long minSize) toString()protected voidupdateSize(long size) 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
-
Field Details
-
lock
-
-
Constructor Details
-
Window
-
-
Method Details
-
largerThan
-
getChannel
- Specified by:
getChannelin interfaceChannelHolder- Returns:
- The associated
Channelinstance
-
getSize
public long getSize()Retrieves the current size of the window; i.e., the maximum number of bytes available for consumption viaconsume(long).The value is outdated immediately; you cannot rely on
long toConsume = ...; if (toConsume < window.getSize()) { window.consume(toConsume); // Might throw an exception if some other thread consumed some space already }not to throw an exception. Use the return value only for informative purposes, such as logging.
- Returns:
- the currently available window size
-
getMaxSize
public long getMaxSize() -
getPacketSize
public long getPacketSize() -
init
protected void init(long size, long packetSize, org.apache.sshd.common.PropertyResolver resolver) -
consume
Consumelenbytes from the window.- Parameters:
len- number of bytes to consume- Returns:
- the number of bytes by which the window was actually reduced
- Throws:
IOException- if the request cannot be honored
-
consumeAll
public long consumeAll()Consume all bytes from the window.- Returns:
- the number of bytes consumed
-
updateSize
protected void updateSize(long size) -
checkInitialized
-
isOpen
public boolean isOpen() -
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-
toString
-