XNIO API 3.0.4.GA

org.xnio.channels
Interface SuspendableWriteChannel

All Superinterfaces:
Channel, Closeable, CloseableChannel, Configurable, InterruptibleChannel
All Known Subinterfaces:
BoundMultipointMessageChannel, ConnectedMessageChannel, ConnectedSslStreamChannel, ConnectedStreamChannel, MessageChannel, MulticastMessageChannel, MultipointMessageChannel, StreamChannel, StreamSinkChannel, SuspendableChannel, WritableMessageChannel, WritableMultipointMessageChannel
All Known Implementing Classes:
FramedMessageChannel, TranslatingSuspendableChannel

public interface SuspendableWriteChannel
extends CloseableChannel

A suspendable writable channel. This type of channel is associated with a listener which can suspend and resume writes as needed.


Method Summary
 void awaitWritable()
          Block until this channel becomes writable again.
 void awaitWritable(long time, TimeUnit timeUnit)
          Block until this channel becomes writable again, or until the timeout expires.
 void close()
          Close this channel.
 boolean flush()
          Flush any waiting partial send or write.
 ChannelListener.Setter<? extends SuspendableWriteChannel> getCloseSetter()
          Get the setter which can be used to change the close listener for this channel.
 ChannelListener.Setter<? extends SuspendableWriteChannel> getWriteSetter()
          Get the setter which can be used to change the write listener for this channel.
 XnioExecutor getWriteThread()
          Get the write thread for this channel.
 boolean isWriteResumed()
          Determine whether writes are resumed.
 void resumeWrites()
          Resume writes on this channel.
 void shutdownWrites()
          Indicate that writing is complete for this channel.
 void suspendWrites()
          Suspend further write notifications on this channel.
 void wakeupWrites()
          Resume writes on this channel, and force the write listener to be triggered even if the channel isn't actually writable.
 
Methods inherited from interface org.xnio.channels.CloseableChannel
getWorker
 
Methods inherited from interface java.nio.channels.Channel
isOpen
 
Methods inherited from interface org.xnio.channels.Configurable
getOption, setOption, supportsOption
 

Method Detail

suspendWrites

void suspendWrites()
Suspend further write notifications on this channel.


resumeWrites

void resumeWrites()
Resume writes on this channel. The write listener will be called as soon as the channel becomes writable.


isWriteResumed

boolean isWriteResumed()
Determine whether writes are resumed.

Returns:
true if writes are resumed, false if writes are suspended

wakeupWrites

void wakeupWrites()
Resume writes on this channel, and force the write listener to be triggered even if the channel isn't actually writable.


shutdownWrites

void shutdownWrites()
                    throws IOException
Indicate that writing is complete for this channel. Further attempts to write data to this channel after this method is invoked will result in an exception. If this method was already called, calling this method again will have no additional effect. After this method is called, any remaining data still must be flushed out via the flush() method; once this is done, if the read side of the channel was shut down, the channel will automatically close.

Throws:
IOException - if an I/O error occurs

awaitWritable

void awaitWritable()
                   throws IOException
Block until this channel becomes writable again. This method may return spuriously before the channel becomes writable.

Throws:
InterruptedIOException - if the operation is interrupted; the thread's interrupt flag will be set as well
IOException - if an I/O error occurs
Since:
1.2

awaitWritable

void awaitWritable(long time,
                   TimeUnit timeUnit)
                   throws IOException
Block until this channel becomes writable again, or until the timeout expires. This method may return spuriously before the channel becomes writable or the timeout expires.

Parameters:
time - the time to wait
timeUnit - the time unit
Throws:
InterruptedIOException - if the operation is interrupted; the thread's interrupt flag will be set as well
IOException - if an I/O error occurs
Since:
1.2

getWriteThread

XnioExecutor getWriteThread()
Get the write thread for this channel.

Returns:
the thread, or null if none is configured or available

getWriteSetter

ChannelListener.Setter<? extends SuspendableWriteChannel> getWriteSetter()
Get the setter which can be used to change the write listener for this channel. When the listener is called, additional notifications are automatically suspended.

Returns:
the setter
Since:
2.0

getCloseSetter

ChannelListener.Setter<? extends SuspendableWriteChannel> getCloseSetter()
Get the setter which can be used to change the close listener for this channel. If the channel is already closed, then the listener will not be called.

Specified by:
getCloseSetter in interface CloseableChannel
Returns:
the setter

flush

boolean flush()
              throws IOException
Flush any waiting partial send or write. If there is no data to flush, or if the flush completed successfully, this method will return true. If there is data to flush which cannot be immediately written, this method will return false. If this method returns true after shutdownWrites() was called on this channel, the write listener will no longer be invoked on this channel. If this is case and additionally this is a write-only channel or the read side was previously shut down, then the channel will automatically be closed.

Returns:
true if the message was flushed, or false if the result would block
Throws:
IOException - if an I/O error occurs

close

void close()
           throws IOException
Close this channel. If data has been written but not flushed, that data may be discarded, depending on the channel implementation. When a channel is closed, its close listener is invoked. Invoking this method more than once has no additional effect.

Specified by:
close in interface Channel
Specified by:
close in interface Closeable
Specified by:
close in interface CloseableChannel
Specified by:
close in interface InterruptibleChannel
Throws:
IOException - if the close failed

XNIO API 3.0.4.GA

Copyright © 2010 JBoss, a division of Red Hat, Inc.