java.lang.Object
org.xnio.conduits.AbstractConduit<D>
org.xnio.conduits.AbstractSinkConduit<StreamSinkConduit>
org.xnio.conduits.FramingMessageSinkConduit
- All Implemented Interfaces:
Conduit
,MessageSinkConduit
,SinkConduit
public final class FramingMessageSinkConduit
extends AbstractSinkConduit<StreamSinkConduit>
implements MessageSinkConduit
A message sink conduit which implements a simple message framing protocol over a stream conduit.
- Author:
- David M. Lloyd
-
Field Summary
Fields inherited from class org.xnio.conduits.AbstractConduit
next
-
Constructor Summary
ConstructorsConstructorDescriptionFramingMessageSinkConduit
(StreamSinkConduit next, boolean longLengths, Pooled<ByteBuffer> transmitBuffer) Construct a new instance. -
Method Summary
Modifier and TypeMethodDescriptionboolean
flush()
Flush out any unwritten, buffered output.boolean
send
(ByteBuffer src) Send a complete message.boolean
send
(ByteBuffer[] srcs, int offs, int len) Send a complete message.boolean
sendFinal
(ByteBuffer src) Send a complete message.boolean
sendFinal
(ByteBuffer[] srcs, int offs, int len) Send a complete message.void
Signal that no more write data is forthcoming.void
Terminate writes and discard any outstanding write data.Methods inherited from class org.xnio.conduits.AbstractSinkConduit
awaitWritable, awaitWritable, getWriteThread, isWriteResumed, isWriteShutdown, resumeWrites, setWriteReadyHandler, suspendWrites, wakeupWrites
Methods inherited from class org.xnio.conduits.AbstractConduit
getWorker
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.xnio.conduits.SinkConduit
awaitWritable, awaitWritable, getWriteThread, isWriteResumed, isWriteShutdown, resumeWrites, setWriteReadyHandler, suspendWrites, wakeupWrites
-
Constructor Details
-
FramingMessageSinkConduit
public FramingMessageSinkConduit(StreamSinkConduit next, boolean longLengths, Pooled<ByteBuffer> transmitBuffer) Construct a new instance.- Parameters:
next
- the delegate conduit to setlongLengths
-true
to use 4-byte lengths,false
to use 2-byte lengthstransmitBuffer
- the transmit buffer to use
-
-
Method Details
-
send
Description copied from interface:MessageSinkConduit
Send a complete message.- Specified by:
send
in interfaceMessageSinkConduit
- Parameters:
src
- the message to send- Returns:
- the result of the send operation;
true
if the message was sent, orfalse
if it would block - Throws:
IOException
- if an I/O error occurs
-
send
Description copied from interface:MessageSinkConduit
Send a complete message.- Specified by:
send
in interfaceMessageSinkConduit
- Parameters:
srcs
- 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 send- Returns:
- the result of the send operation;
true
if the message was sent, orfalse
if it would block - Throws:
IOException
- if an I/O error occurs
-
sendFinal
Description copied from interface:MessageSinkConduit
Send a complete message. If the message is successfully sent then the sink will have its writes terminated.- Specified by:
sendFinal
in interfaceMessageSinkConduit
- Parameters:
src
- the message to send- Returns:
- the result of the send operation;
true
if the message was sent, orfalse
if it would block - Throws:
IOException
- if an I/O error occurs
-
sendFinal
Description copied from interface:MessageSinkConduit
Send a complete message. If the message is successfully sent then the sink will have its writes terminated.- Specified by:
sendFinal
in interfaceMessageSinkConduit
- Parameters:
srcs
- 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 send- Returns:
- the result of the send operation;
true
if the message was sent, orfalse
if it would block - Throws:
IOException
- if an I/O error occurs
-
flush
Description copied from interface:SinkConduit
Flush out any unwritten, buffered output.- Specified by:
flush
in interfaceSinkConduit
- Overrides:
flush
in classAbstractSinkConduit<StreamSinkConduit>
- Returns:
true
if everything is flushed,false
otherwise- Throws:
IOException
- if flush fails
-
terminateWrites
Description copied from interface:SinkConduit
Signal that no more write data is forthcoming. The conduit must beSinkConduit.flush()
ed before it is considered to be shut down.- Specified by:
terminateWrites
in interfaceSinkConduit
- Overrides:
terminateWrites
in classAbstractSinkConduit<StreamSinkConduit>
- Throws:
IOException
-
truncateWrites
Description copied from interface:SinkConduit
Terminate writes and discard any outstanding write data. The conduit is terminated and flushed regardless of the outcome of this method.- Specified by:
truncateWrites
in interfaceSinkConduit
- Overrides:
truncateWrites
in classAbstractSinkConduit<StreamSinkConduit>
- Throws:
IOException
- if channel termination failed for some reason
-