public abstract class AbstractFramedStreamSinkChannel<C extends AbstractFramedChannel<C,R,S>,R extends AbstractFramedStreamSourceChannel<C,R,S>,S extends AbstractFramedStreamSinkChannel<C,R,S>> extends Object implements org.xnio.channels.StreamSinkChannel
Thread safety notes:
The general contract is that this channel is only to be used by a single thread at a time. The only exception to this is during flush. A flush will only happen when readyForFlush is set, and while this bit is set the buffer must not be modified.
| Modifier | Constructor and Description |
|---|---|
protected | AbstractFramedStreamSinkChannel(C channel) |
| Modifier and Type | Method and Description |
|---|---|
void | awaitWritable() |
void | awaitWritable(long l, TimeUnit timeUnit) |
protected void | channelForciblyClosed() Called when a channel has been forcibly closed, and data (frames) have already been written. |
void | close() |
protected SendFrameHeader | createFrameHeader() |
boolean | flush() |
ByteBuffer | getBuffer() |
C | getChannel() |
org.xnio.ChannelListener.Setter<? extends S> | getCloseSetter() |
org.xnio.XnioIoThread | getIoThread() |
<T> T | getOption(org.xnio.Option<T> tOption) |
org.xnio.XnioWorker | getWorker() |
org.xnio.ChannelListener.Setter<? extends S> | getWriteSetter() |
org.xnio.XnioExecutor | getWriteThread() |
protected void | handleFlushComplete(boolean finalFrame) |
boolean | isBroken() |
boolean | isBufferFull() |
protected boolean | isFinalFrameQueued() |
protected boolean | isFirstDataWritten() |
protected boolean | isFlushRequiredOnEmptyBuffer() |
protected abstract boolean | isLastFrame() |
boolean | isOpen() |
boolean | isReadyForFlush() |
boolean | isWriteResumed() |
boolean | isWritesShutdown() Returns true writes have been shutdown |
void | markBroken() |
protected PooledByteBuffer | preWriteTransform(PooledByteBuffer body) |
void | resumeWrites() |
protected void | resumeWritesInternal(boolean wakeup) |
protected boolean | safeToSend() |
boolean | send(PooledByteBuffer pooled) Send a buffer to this channel. |
protected boolean | sendInternal(PooledByteBuffer pooled) |
<T> T | setOption(org.xnio.Option<T> tOption, T t) |
void | shutdownWrites() |
boolean | supportsOption(org.xnio.Option<?> option) |
void | suspendWrites() |
long | transferFrom(FileChannel src, long position, long count) |
long | transferFrom(org.xnio.channels.StreamSourceChannel source, long count, ByteBuffer throughBuffer) |
void | wakeupWrites() |
int | write(ByteBuffer src) |
long | write(ByteBuffer[] srcs) |
long | write(ByteBuffer[] srcs, int offset, int length) |
int | writeFinal(ByteBuffer src) |
long | writeFinal(ByteBuffer[] srcs) |
long | writeFinal(ByteBuffer[] srcs, int offset, int length) |
protected AbstractFramedStreamSinkChannel(C channel)
public long transferFrom(FileChannel src, long position, long count) throws IOException
transferFrom in interface org.xnio.channels.StreamSinkChannelIOExceptionpublic long transferFrom(org.xnio.channels.StreamSourceChannel source,
long count,
ByteBuffer throughBuffer)
throws IOException transferFrom in interface org.xnio.channels.StreamSinkChannelIOExceptionpublic void suspendWrites()
suspendWrites in interface org.xnio.channels.SuspendableWriteChannelprotected SendFrameHeader createFrameHeader() throws IOException
IOExceptionprotected PooledByteBuffer preWriteTransform(PooledByteBuffer body)
public boolean isWriteResumed()
isWriteResumed in interface org.xnio.channels.SuspendableWriteChannelpublic void wakeupWrites()
wakeupWrites in interface org.xnio.channels.SuspendableWriteChannelpublic void resumeWrites()
resumeWrites in interface org.xnio.channels.SuspendableWriteChannelprotected void resumeWritesInternal(boolean wakeup)
public void shutdownWrites()
throws IOException shutdownWrites in interface org.xnio.channels.SuspendableWriteChannelIOExceptionprotected boolean isFinalFrameQueued()
public void awaitWritable()
throws IOException awaitWritable in interface org.xnio.channels.SuspendableWriteChannelIOExceptionpublic void awaitWritable(long l,
TimeUnit timeUnit)
throws IOException awaitWritable in interface org.xnio.channels.SuspendableWriteChannelIOExceptionpublic org.xnio.XnioExecutor getWriteThread()
getWriteThread in interface org.xnio.channels.SuspendableWriteChannelpublic org.xnio.ChannelListener.Setter<? extends S> getWriteSetter()
getWriteSetter in interface org.xnio.channels.StreamSinkChannelgetWriteSetter in interface org.xnio.channels.SuspendableWriteChannelpublic org.xnio.ChannelListener.Setter<? extends S> getCloseSetter()
getCloseSetter in interface org.xnio.channels.CloseableChannelgetCloseSetter in interface org.xnio.channels.StreamSinkChannelgetCloseSetter in interface org.xnio.channels.SuspendableWriteChannelpublic org.xnio.XnioWorker getWorker()
getWorker in interface org.xnio.channels.CloseableChannelpublic org.xnio.XnioIoThread getIoThread()
getIoThread in interface org.xnio.channels.CloseableChannelpublic boolean flush()
throws IOException flush in interface org.xnio.channels.SuspendableWriteChannelIOExceptionprotected boolean isFlushRequiredOnEmptyBuffer()
public long write(ByteBuffer[] srcs, int offset, int length) throws IOException
write in interface GatheringByteChannelIOExceptionpublic long write(ByteBuffer[] srcs) throws IOException
write in interface GatheringByteChannelIOExceptionpublic int write(ByteBuffer src) throws IOException
write in interface WritableByteChannelIOExceptionpublic boolean send(PooledByteBuffer pooled) throws IOException
pooled - Pooled ByteBuffer to send. The buffer should have data available. This channel will free the buffer after sending dataIOException - if this channel is closedprotected boolean sendInternal(PooledByteBuffer pooled) throws IOException
IOExceptionprotected boolean safeToSend()
throws IOException IOExceptionpublic long writeFinal(ByteBuffer[] srcs, int offset, int length) throws IOException
writeFinal in interface org.xnio.channels.StreamSinkChannelIOExceptionpublic long writeFinal(ByteBuffer[] srcs) throws IOException
writeFinal in interface org.xnio.channels.StreamSinkChannelIOExceptionpublic int writeFinal(ByteBuffer src) throws IOException
writeFinal in interface org.xnio.channels.StreamSinkChannelIOExceptionprotected abstract boolean isLastFrame()
true If this is the last frame that will be sent on this connectionpublic boolean isReadyForFlush()
public boolean isWritesShutdown()
public boolean isOpen()
public void close()
throws IOException close in interface Closeableclose in interface AutoCloseableclose in interface Channelclose in interface InterruptibleChannelclose in interface org.xnio.channels.CloseableChannelclose in interface org.xnio.channels.SuspendableWriteChannelIOExceptionprotected void channelForciblyClosed()
throws IOException IOExceptionpublic boolean supportsOption(org.xnio.Option<?> option)
supportsOption in interface org.xnio.channels.Configurablepublic <T> T getOption(org.xnio.Option<T> tOption)
throws IOException getOption in interface org.xnio.channels.ConfigurableIOExceptionpublic <T> T setOption(org.xnio.Option<T> tOption,
T t)
throws IllegalArgumentException,
IOException setOption in interface org.xnio.channels.ConfigurableIllegalArgumentExceptionIOExceptionpublic ByteBuffer getBuffer()
protected void handleFlushComplete(boolean finalFrame)
protected boolean isFirstDataWritten()
public void markBroken()
public C getChannel()
public boolean isBroken()
public boolean isBufferFull()
Copyright © 2020 JBoss by Red Hat. All rights reserved.