public class Window extends AbstractLoggingBean implements java.nio.channels.Channel, ChannelHolder
Modifier and Type | Field and Description |
---|---|
private AbstractChannel |
channelInstance |
private java.util.concurrent.atomic.AtomicBoolean |
closed |
private java.util.concurrent.atomic.AtomicBoolean |
initialized |
private java.lang.Object |
lock |
private long |
maxSize |
private long |
packetSize |
private long |
size |
static java.util.function.Predicate<Window> |
SPACE_AVAILABLE_PREDICATE
Default
Predicate used to test if space became available |
private java.lang.String |
suffix |
log
Constructor and Description |
---|
Window(AbstractChannel channel,
java.lang.Object lock,
boolean client,
boolean local) |
Modifier and Type | Method and Description |
---|---|
void |
check(long maxFree) |
protected void |
checkInitialized(java.lang.String location) |
void |
close() |
void |
consume(long len) |
void |
consumeAndCheck(long len) |
void |
expand(int window) |
AbstractChannel |
getChannel() |
long |
getMaxSize() |
long |
getPacketSize() |
long |
getSize() |
void |
init(long size,
long packetSize,
PropertyResolver resolver) |
void |
init(PropertyResolver resolver) |
boolean |
isOpen() |
java.lang.String |
toString() |
protected void |
updateSize(long size) |
void |
waitAndConsume(long len,
java.time.Duration maxWaitTime)
Waits for enough data to become available to consume the specified size
|
void |
waitAndConsume(long len,
long maxWaitTime)
Waits for enough data to become available to consume the specified size
|
protected void |
waitForCondition(java.util.function.Predicate<? super Window> predicate,
java.time.Duration maxWaitTime)
Waits up to a specified amount of time for a condition to be satisfied and signaled via the lock.
|
long |
waitForSpace(java.time.Duration maxWaitTime)
Waits until some data becomes available or timeout expires
|
long |
waitForSpace(long maxWaitTime)
Waits until some data becomes available or timeout expires
|
public static final java.util.function.Predicate<Window> SPACE_AVAILABLE_PREDICATE
Predicate
used to test if space became availableprivate final java.util.concurrent.atomic.AtomicBoolean closed
private final java.util.concurrent.atomic.AtomicBoolean initialized
private final AbstractChannel channelInstance
private final java.lang.Object lock
private final java.lang.String suffix
private long size
private long maxSize
private long packetSize
public Window(AbstractChannel channel, java.lang.Object lock, boolean client, boolean local)
public AbstractChannel getChannel()
getChannel
in interface ChannelHolder
Channel
instancepublic long getSize()
public long getMaxSize()
public long getPacketSize()
public void init(PropertyResolver resolver)
public void init(long size, long packetSize, PropertyResolver resolver)
public void expand(int window)
public void consume(long len)
public void consumeAndCheck(long len) throws java.io.IOException
java.io.IOException
public void check(long maxFree) throws java.io.IOException
java.io.IOException
public void waitAndConsume(long len, long maxWaitTime) throws java.lang.InterruptedException, WindowClosedException, java.net.SocketTimeoutException
len
- Size of data to consumemaxWaitTime
- Max. time (millis) to wait for enough data to become availablejava.lang.InterruptedException
- If interrupted while waitingWindowClosedException
- If window closed while waitingjava.net.SocketTimeoutException
- If timeout expired before enough data became availablewaitForCondition(Predicate, Duration)
,
consume(long)
public void waitAndConsume(long len, java.time.Duration maxWaitTime) throws java.lang.InterruptedException, WindowClosedException, java.net.SocketTimeoutException
len
- Size of data to consumemaxWaitTime
- Max. time to wait for enough data to become availablejava.lang.InterruptedException
- If interrupted while waitingWindowClosedException
- If window closed while waitingjava.net.SocketTimeoutException
- If timeout expired before enough data became availablewaitForCondition(Predicate, Duration)
,
consume(long)
public long waitForSpace(long maxWaitTime) throws java.lang.InterruptedException, WindowClosedException, java.net.SocketTimeoutException
maxWaitTime
- Max. time (millis) to wait for space to become availablejava.lang.InterruptedException
- If interrupted while waitingWindowClosedException
- If window closed while waitingjava.net.SocketTimeoutException
- If timeout expired before space became availablewaitForCondition(Predicate, Duration)
public long waitForSpace(java.time.Duration maxWaitTime) throws java.lang.InterruptedException, WindowClosedException, java.net.SocketTimeoutException
maxWaitTime
- Max. time to wait for space to become availablejava.lang.InterruptedException
- If interrupted while waitingWindowClosedException
- If window closed while waitingjava.net.SocketTimeoutException
- If timeout expired before space became availablewaitForCondition(Predicate, Duration)
protected void waitForCondition(java.util.function.Predicate<? super Window> predicate, java.time.Duration maxWaitTime) throws WindowClosedException, java.lang.InterruptedException, java.net.SocketTimeoutException
predicate
- The Predicate
to check if the condition has been satisfied - the argument
to the predicate is this
referencemaxWaitTime
- Max. time to wait for the condition to be satisfiedWindowClosedException
- If window closed while waitingjava.lang.InterruptedException
- If interrupted while waitingjava.net.SocketTimeoutException
- If timeout expired before condition was satisfiedisOpen()
protected void updateSize(long size)
protected void checkInitialized(java.lang.String location)
public boolean isOpen()
isOpen
in interface java.nio.channels.Channel
public void close() throws java.io.IOException
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
close
in interface java.nio.channels.Channel
java.io.IOException
public java.lang.String toString()
toString
in class java.lang.Object