public final class ConduitWritableMessageChannel extends java.lang.Object implements WritableMessageChannel, WriteListenerSettable<ConduitWritableMessageChannel>, CloseListenerSettable<ConduitWritableMessageChannel>, java.lang.Cloneable
WriteListenerSettable.Setter<C extends java.nio.channels.Channel>
CloseListenerSettable.Setter<C extends java.nio.channels.Channel>
EMPTY
Constructor and Description |
---|
ConduitWritableMessageChannel(Configurable configurable,
MessageSinkConduit conduit)
Construct a new instance.
|
Modifier and Type | Method and Description |
---|---|
void |
awaitWritable()
Block until this channel becomes writable again.
|
void |
awaitWritable(long time,
java.util.concurrent.TimeUnit timeUnit)
Block until this channel becomes writable again, or until the timeout expires.
|
ConduitWritableMessageChannel |
clone()
Duplicate this channel.
|
void |
close()
Close this channel.
|
boolean |
flush()
Flush any waiting partial send or write.
|
ChannelListener<? super ConduitWritableMessageChannel> |
getCloseListener()
Get the close listener.
|
ChannelListener.Setter<ConduitWritableMessageChannel> |
getCloseSetter()
Get the setter which can be used to change the close listener for this channel.
|
MessageSinkConduit |
getConduit()
Get the underlying conduit for this channel.
|
XnioIoThread |
getIoThread()
Get the I/O thread associated with this channel.
|
<T> T |
getOption(Option<T> option)
Get the value of a channel option.
|
XnioWorker |
getWorker()
Get the worker for this channel.
|
ChannelListener<? super ConduitWritableMessageChannel> |
getWriteListener()
Get the write listener.
|
ChannelListener.Setter<ConduitWritableMessageChannel> |
getWriteSetter()
Get the setter which can be used to change the write listener for this channel.
|
XnioExecutor |
getWriteThread()
Deprecated.
|
boolean |
isOpen()
Determine whether this channel is open.
|
boolean |
isWriteResumed()
Determine whether writes are resumed.
|
void |
resumeWrites()
Resume writes on this channel.
|
boolean |
send(java.nio.ByteBuffer dst)
Send a complete message.
|
boolean |
send(java.nio.ByteBuffer[] srcs)
Send a complete message.
|
boolean |
send(java.nio.ByteBuffer[] dsts,
int offs,
int len)
Send a complete message.
|
boolean |
sendFinal(java.nio.ByteBuffer buffer)
Send a complete message.
|
boolean |
sendFinal(java.nio.ByteBuffer[] buffers)
Send a complete message.
|
boolean |
sendFinal(java.nio.ByteBuffer[] buffers,
int offs,
int len)
Send a complete message.
|
void |
setCloseListener(ChannelListener<? super ConduitWritableMessageChannel> closeListener)
Set the close listener.
|
void |
setConduit(MessageSinkConduit conduit)
Set the underlying conduit for this channel.
|
<T> T |
setOption(Option<T> option,
T value)
Set an option for this channel.
|
void |
setWriteListener(ChannelListener<? super ConduitWritableMessageChannel> writeListener)
Set the write listener.
|
void |
shutdownWrites()
Indicate that writing is complete for this channel.
|
boolean |
supportsOption(Option<?> option)
Determine whether an option is supported on 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. |
public ConduitWritableMessageChannel(Configurable configurable, MessageSinkConduit conduit)
configurable
- the configurable to delegate configuration requests toconduit
- the initial conduit to use for data transportpublic MessageSinkConduit getConduit()
public void setConduit(MessageSinkConduit conduit)
conduit
- the underlying conduit for this channelpublic ChannelListener<? super ConduitWritableMessageChannel> getWriteListener()
WriteListenerSettable
getWriteListener
in interface WriteListenerSettable<ConduitWritableMessageChannel>
public void setWriteListener(ChannelListener<? super ConduitWritableMessageChannel> writeListener)
WriteListenerSettable
setWriteListener
in interface WriteListenerSettable<ConduitWritableMessageChannel>
writeListener
- the write listenerpublic ChannelListener<? super ConduitWritableMessageChannel> getCloseListener()
CloseListenerSettable
getCloseListener
in interface CloseListenerSettable<ConduitWritableMessageChannel>
public void setCloseListener(ChannelListener<? super ConduitWritableMessageChannel> closeListener)
CloseListenerSettable
setCloseListener
in interface CloseListenerSettable<ConduitWritableMessageChannel>
closeListener
- the close listenerpublic ChannelListener.Setter<ConduitWritableMessageChannel> getWriteSetter()
WritableMessageChannel
getWriteSetter
in interface SuspendableWriteChannel
getWriteSetter
in interface WritableMessageChannel
public ChannelListener.Setter<ConduitWritableMessageChannel> getCloseSetter()
WritableMessageChannel
getCloseSetter
in interface CloseableChannel
getCloseSetter
in interface SuspendableWriteChannel
getCloseSetter
in interface WritableMessageChannel
public void suspendWrites()
SuspendableWriteChannel
suspendWrites
in interface SuspendableWriteChannel
public void resumeWrites()
SuspendableWriteChannel
resumeWrites
in interface SuspendableWriteChannel
public void wakeupWrites()
SuspendableWriteChannel
Resume writes
on this channel, and force the write listener to be triggered even if the
channel isn't actually writable.wakeupWrites
in interface SuspendableWriteChannel
public boolean isWriteResumed()
SuspendableWriteChannel
isWriteResumed
in interface SuspendableWriteChannel
true
if writes are resumed, false
if writes are suspendedpublic void awaitWritable() throws java.io.IOException
SuspendableWriteChannel
awaitWritable
in interface SuspendableWriteChannel
java.io.InterruptedIOException
- if the operation is interrupted; the thread's interrupt flag will be set as welljava.io.IOException
- if an I/O error occurspublic void awaitWritable(long time, java.util.concurrent.TimeUnit timeUnit) throws java.io.IOException
SuspendableWriteChannel
awaitWritable
in interface SuspendableWriteChannel
time
- the time to waittimeUnit
- the time unitjava.io.InterruptedIOException
- if the operation is interrupted; the thread's interrupt flag will be set as welljava.io.IOException
- if an I/O error occurspublic boolean send(java.nio.ByteBuffer dst) throws java.io.IOException
WritableMessageChannel
send
in interface WritableMessageChannel
dst
- the message to sendtrue
if the message was sent, or false
if it would blockjava.io.IOException
- if an I/O error occurspublic boolean send(java.nio.ByteBuffer[] srcs) throws java.io.IOException
WritableMessageChannel
send
in interface WritableMessageChannel
srcs
- the buffers holding the message to sendtrue
if the message was sent, or false
if it would blockjava.io.IOException
- if an I/O error occurspublic boolean send(java.nio.ByteBuffer[] dsts, int offs, int len) throws java.io.IOException
WritableMessageChannel
send
in interface WritableMessageChannel
dsts
- the buffers holding the message to sendoffs
- the offset into the buffer array of the first bufferlen
- the number of buffers that contain data to sendtrue
if the message was sent, or false
if it would blockjava.io.IOException
- if an I/O error occurspublic boolean sendFinal(java.nio.ByteBuffer buffer) throws java.io.IOException
WritableMessageChannel
sendFinal
in interface WritableMessageChannel
buffer
- the message to sendtrue
if the message was sent, or false
if it would blockjava.io.IOException
- if an I/O error occurspublic boolean sendFinal(java.nio.ByteBuffer[] buffers) throws java.io.IOException
WritableMessageChannel
sendFinal
in interface WritableMessageChannel
buffers
- the buffers holding the message to sendtrue
if the message was sent, or false
if it would blockjava.io.IOException
- if an I/O error occurspublic boolean sendFinal(java.nio.ByteBuffer[] buffers, int offs, int len) throws java.io.IOException
WritableMessageChannel
sendFinal
in interface WritableMessageChannel
buffers
- the buffers holding the message to sendoffs
- the offset into the buffer array of the first bufferlen
- the number of buffers that contain data to sendtrue
if the message was sent, or false
if it would blockjava.io.IOException
- if an I/O error occurspublic boolean flush() throws java.io.IOException
SuspendableWriteChannel
true
. If there is data to flush which cannot be immediately written, this method
will return false
. If this method returns true
after SuspendableWriteChannel.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.flush
in interface SuspendableWriteChannel
true
if the message was flushed, or false
if the result would blockjava.io.IOException
- if an I/O error occurspublic boolean supportsOption(Option<?> option)
Configurable
supportsOption
in interface Configurable
option
- the optiontrue
if it is supportedpublic <T> T getOption(Option<T> option) throws java.io.IOException
Configurable
getOption
in interface Configurable
T
- the type of the option valueoption
- the option to getnull
if it is not setjava.io.IOException
- if an I/O error occurred when reading the optionpublic <T> T setOption(Option<T> option, T value) throws java.lang.IllegalArgumentException, java.io.IOException
Configurable
setOption
in interface Configurable
T
- the type of the option valueoption
- the option to setvalue
- the value of the option to setjava.lang.IllegalArgumentException
- if the value is not acceptable for this optionjava.io.IOException
- if an I/O error occurred when modifying the optionpublic void shutdownWrites() throws java.io.IOException
SuspendableWriteChannel
SuspendableWriteChannel.flush()
method; once this is done, if the read side of the channel was shut down, the channel will
automatically close.shutdownWrites
in interface SuspendableWriteChannel
java.io.IOException
- if an I/O error occurspublic boolean isOpen()
SuspendableWriteChannel
false
if all directions are shut down,
even if there is unflushed write data pending.isOpen
in interface java.nio.channels.Channel
isOpen
in interface SuspendableWriteChannel
true
if the channel is open, false
otherwisepublic void close() throws java.io.IOException
SuspendableWriteChannel
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
close
in interface java.nio.channels.Channel
close
in interface java.nio.channels.InterruptibleChannel
close
in interface CloseableChannel
close
in interface SuspendableWriteChannel
java.io.IOException
- if the close failed@Deprecated public XnioExecutor getWriteThread()
SuspendableWriteChannel
getWriteThread
in interface SuspendableWriteChannel
null
if none is configured or availablepublic XnioIoThread getIoThread()
CloseableChannel
getIoThread
in interface CloseableChannel
public XnioWorker getWorker()
CloseableChannel
getWorker
in interface CloseableChannel
public ConduitWritableMessageChannel clone()
clone
in class java.lang.Object
Copyright © 2016 JBoss, a division of Red Hat, Inc.