Package io.undertow.conduits
Class AbstractFramedStreamSinkConduit
- java.lang.Object
-
- org.xnio.conduits.AbstractConduit<D>
-
- org.xnio.conduits.AbstractSinkConduit<D>
-
- org.xnio.conduits.AbstractStreamSinkConduit<org.xnio.conduits.StreamSinkConduit>
-
- io.undertow.conduits.AbstractFramedStreamSinkConduit
-
- All Implemented Interfaces:
org.xnio.conduits.Conduit,org.xnio.conduits.SinkConduit,org.xnio.conduits.StreamSinkConduit
public class AbstractFramedStreamSinkConduit extends org.xnio.conduits.AbstractStreamSinkConduit<org.xnio.conduits.StreamSinkConduit>Utility class to ease the implementation of framed protocols. This call provides a queue of frames, and a callback that can be invoked when a frame event occurs.When a write takes place all frames are attempted to be written out at once via a gathering write. Frames can be queued via
queueFrame(io.undertow.conduits.AbstractFramedStreamSinkConduit.FrameCallBack, java.nio.ByteBuffer...).- Author:
- Stuart Douglas
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceAbstractFramedStreamSinkConduit.FrameCallBackInterface that is called when a frame event takes place.protected static classAbstractFramedStreamSinkConduit.PooledBufferFrameCallbackprotected static classAbstractFramedStreamSinkConduit.PooledBuffersFrameCallback
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractFramedStreamSinkConduit(org.xnio.conduits.StreamSinkConduit next)Construct a new instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voiddoTerminateWrites()protected voidfinished()protected booleanflushQueuedData()protected booleanisWritesTerminated()protected voidqueueCloseFrames()protected longqueuedDataLength()protected voidqueueFrame(AbstractFramedStreamSinkConduit.FrameCallBack callback, ByteBuffer... data)Queues a frame for sending.voidterminateWrites()longtransferFrom(FileChannel src, long position, long count)longtransferFrom(org.xnio.channels.StreamSourceChannel source, long count, ByteBuffer throughBuffer)voidtruncateWrites()intwrite(ByteBuffer src)longwrite(ByteBuffer[] srcs, int offs, int len)intwriteFinal(ByteBuffer src)longwriteFinal(ByteBuffer[] srcs, int offs, int len)-
Methods inherited from class org.xnio.conduits.AbstractSinkConduit
awaitWritable, awaitWritable, flush, getWriteThread, isWriteResumed, isWriteShutdown, resumeWrites, setWriteReadyHandler, suspendWrites, wakeupWrites
-
-
-
-
Method Detail
-
queueFrame
protected void queueFrame(AbstractFramedStreamSinkConduit.FrameCallBack callback, ByteBuffer... data)
Queues a frame for sending.- Parameters:
callback-data-
-
transferFrom
public long transferFrom(FileChannel src, long position, long count) throws IOException
- Specified by:
transferFromin interfaceorg.xnio.conduits.StreamSinkConduit- Overrides:
transferFromin classorg.xnio.conduits.AbstractStreamSinkConduit<org.xnio.conduits.StreamSinkConduit>- Throws:
IOException
-
transferFrom
public long transferFrom(org.xnio.channels.StreamSourceChannel source, long count, ByteBuffer throughBuffer) throws IOException- Specified by:
transferFromin interfaceorg.xnio.conduits.StreamSinkConduit- Overrides:
transferFromin classorg.xnio.conduits.AbstractStreamSinkConduit<org.xnio.conduits.StreamSinkConduit>- Throws:
IOException
-
write
public int write(ByteBuffer src) throws IOException
- Specified by:
writein interfaceorg.xnio.conduits.StreamSinkConduit- Overrides:
writein classorg.xnio.conduits.AbstractStreamSinkConduit<org.xnio.conduits.StreamSinkConduit>- Throws:
IOException
-
write
public long write(ByteBuffer[] srcs, int offs, int len) throws IOException
- Specified by:
writein interfaceorg.xnio.conduits.StreamSinkConduit- Overrides:
writein classorg.xnio.conduits.AbstractStreamSinkConduit<org.xnio.conduits.StreamSinkConduit>- Throws:
IOException
-
writeFinal
public int writeFinal(ByteBuffer src) throws IOException
- Specified by:
writeFinalin interfaceorg.xnio.conduits.StreamSinkConduit- Overrides:
writeFinalin classorg.xnio.conduits.AbstractStreamSinkConduit<org.xnio.conduits.StreamSinkConduit>- Throws:
IOException
-
writeFinal
public long writeFinal(ByteBuffer[] srcs, int offs, int len) throws IOException
- Specified by:
writeFinalin interfaceorg.xnio.conduits.StreamSinkConduit- Overrides:
writeFinalin classorg.xnio.conduits.AbstractStreamSinkConduit<org.xnio.conduits.StreamSinkConduit>- Throws:
IOException
-
queuedDataLength
protected long queuedDataLength()
-
terminateWrites
public void terminateWrites() throws IOException- Specified by:
terminateWritesin interfaceorg.xnio.conduits.SinkConduit- Overrides:
terminateWritesin classorg.xnio.conduits.AbstractSinkConduit<org.xnio.conduits.StreamSinkConduit>- Throws:
IOException
-
doTerminateWrites
protected void doTerminateWrites() throws IOException- Throws:
IOException
-
flushQueuedData
protected boolean flushQueuedData() throws IOException- Throws:
IOException
-
truncateWrites
public void truncateWrites() throws IOException- Specified by:
truncateWritesin interfaceorg.xnio.conduits.SinkConduit- Overrides:
truncateWritesin classorg.xnio.conduits.AbstractSinkConduit<org.xnio.conduits.StreamSinkConduit>- Throws:
IOException
-
isWritesTerminated
protected boolean isWritesTerminated()
-
queueCloseFrames
protected void queueCloseFrames()
-
finished
protected void finished()
-
-