Package org.apache.sshd.common.channel
Class Window
- java.lang.Object
-
- org.apache.sshd.common.util.logging.AbstractLoggingBean
-
- org.apache.sshd.common.channel.Window
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,java.nio.channels.Channel,ChannelHolder
public class Window extends AbstractLoggingBean implements java.nio.channels.Channel, ChannelHolder
A Window for a given channel. Windows are used to not overflow the client or server when sending datas. Both clients and servers have a local and remote window and won't send anymore data until the window has been expanded. When the local window is
-
-
Field Summary
Fields Modifier and Type Field Description private AbstractChannelchannelInstanceprivate java.util.concurrent.atomic.AtomicBooleanclosedprivate java.util.concurrent.atomic.AtomicBooleaninitializedprivate java.lang.Objectlockprivate longmaxSizeprivate longpacketSizeprivate longsizestatic java.util.function.Predicate<Window>SPACE_AVAILABLE_PREDICATEDefaultPredicateused to test if space became availableprivate java.lang.Stringsuffix-
Fields inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
log
-
-
Constructor Summary
Constructors Constructor Description Window(AbstractChannel channel, java.lang.Object lock, boolean client, boolean local)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcheck(long maxFree)protected voidcheckInitialized(java.lang.String location)voidclose()voidconsume(long len)voidconsumeAndCheck(long len)voidexpand(int window)AbstractChannelgetChannel()longgetMaxSize()longgetPacketSize()longgetSize()voidinit(long size, long packetSize, PropertyResolver resolver)voidinit(PropertyResolver resolver)booleanisOpen()java.lang.StringtoString()protected voidupdateSize(long size)voidwaitAndConsume(long len, long maxWaitTime)Waits for enough data to become available to consume the specified sizeprotected voidwaitForCondition(java.util.function.Predicate<? super Window> predicate, long maxWaitTime)Waits up to a specified amount of time for a condition to be satisfied and signaled via the lock.longwaitForSpace(long maxWaitTime)Waits until some data becomes available or timeout expires-
Methods inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
getSimplifiedLogger
-
-
-
-
Field Detail
-
SPACE_AVAILABLE_PREDICATE
public static final java.util.function.Predicate<Window> SPACE_AVAILABLE_PREDICATE
DefaultPredicateused to test if space became available
-
closed
private final java.util.concurrent.atomic.AtomicBoolean closed
-
initialized
private final java.util.concurrent.atomic.AtomicBoolean initialized
-
channelInstance
private final AbstractChannel channelInstance
-
lock
private final java.lang.Object lock
-
suffix
private final java.lang.String suffix
-
size
private long size
-
maxSize
private long maxSize
-
packetSize
private long packetSize
-
-
Constructor Detail
-
Window
public Window(AbstractChannel channel, java.lang.Object lock, boolean client, boolean local)
-
-
Method Detail
-
getChannel
public AbstractChannel getChannel()
- Specified by:
getChannelin interfaceChannelHolder- Returns:
- The associated
Channelinstance
-
getSize
public long getSize()
-
getMaxSize
public long getMaxSize()
-
getPacketSize
public long getPacketSize()
-
init
public void init(PropertyResolver resolver)
-
init
public void init(long size, long packetSize, PropertyResolver resolver)
-
expand
public void expand(int window)
-
consume
public void consume(long len)
-
consumeAndCheck
public void consumeAndCheck(long len) throws java.io.IOException- Throws:
java.io.IOException
-
check
public void check(long maxFree) throws java.io.IOException- Throws:
java.io.IOException
-
waitAndConsume
public void waitAndConsume(long len, long maxWaitTime) throws java.lang.InterruptedException, WindowClosedException, java.net.SocketTimeoutExceptionWaits for enough data to become available to consume the specified size- Parameters:
len- Size of data to consumemaxWaitTime- ax. time (millis) to wait for enough data to become available- Throws:
java.lang.InterruptedException- If interrupted while waitingWindowClosedException- If window closed while waitingjava.net.SocketTimeoutException- If timeout expired before enough data became available- See Also:
waitForCondition(Predicate, long),consume(long)
-
waitForSpace
public long waitForSpace(long maxWaitTime) throws java.lang.InterruptedException, WindowClosedException, java.net.SocketTimeoutExceptionWaits until some data becomes available or timeout expires- Parameters:
maxWaitTime- Max. time (millis) to wait for space to become available- Returns:
- Amount of available data - always positive
- Throws:
java.lang.InterruptedException- If interrupted while waitingWindowClosedException- If window closed while waitingjava.net.SocketTimeoutException- If timeout expired before space became available- See Also:
waitForCondition(Predicate, long)
-
waitForCondition
protected void waitForCondition(java.util.function.Predicate<? super Window> predicate, long maxWaitTime) throws WindowClosedException, java.lang.InterruptedException, java.net.SocketTimeoutException
Waits up to a specified amount of time for a condition to be satisfied and signaled via the lock. Note: assumes that lock is acquired when this method is called.- Parameters:
predicate- ThePredicateto check if the condition has been satisfied - the argument to the predicate isthisreferencemaxWaitTime- Max. time (millis) to wait for the condition to be satisfied- Throws:
WindowClosedException- If window closed while waitingjava.lang.InterruptedException- If interrupted while waitingjava.net.SocketTimeoutException- If timeout expired before condition was satisfied- See Also:
isOpen()
-
updateSize
protected void updateSize(long size)
-
checkInitialized
protected void checkInitialized(java.lang.String location)
-
isOpen
public boolean isOpen()
- Specified by:
isOpenin interfacejava.nio.channels.Channel
-
close
public void close() throws java.io.IOException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.nio.channels.Channel- Specified by:
closein interfacejava.io.Closeable- Throws:
java.io.IOException
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-