- 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
Constructors Constructor Description FramingMessageSinkConduit(StreamSinkConduit next, boolean longLengths, Pooled<java.nio.ByteBuffer> transmitBuffer)Construct a new instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanflush()Flush out any unwritten, buffered output.booleansend(java.nio.ByteBuffer src)Send a complete message.booleansend(java.nio.ByteBuffer[] srcs, int offs, int len)Send a complete message.booleansendFinal(java.nio.ByteBuffer src)Send a complete message.booleansendFinal(java.nio.ByteBuffer[] srcs, int offs, int len)Send a complete message.voidterminateWrites()Signal that no more write data is forthcoming.voidtruncateWrites()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 Detail
-
FramingMessageSinkConduit
public FramingMessageSinkConduit(StreamSinkConduit next, boolean longLengths, Pooled<java.nio.ByteBuffer> transmitBuffer)
Construct a new instance.- Parameters:
next- the delegate conduit to setlongLengths-trueto use 4-byte lengths,falseto use 2-byte lengthstransmitBuffer- the transmit buffer to use
-
-
Method Detail
-
send
public boolean send(java.nio.ByteBuffer src) throws java.io.IOExceptionDescription copied from interface:MessageSinkConduitSend a complete message.- Specified by:
sendin interfaceMessageSinkConduit- Parameters:
src- the message to send- Returns:
- the result of the send operation;
trueif the message was sent, orfalseif it would block - Throws:
java.io.IOException- if an I/O error occurs
-
send
public boolean send(java.nio.ByteBuffer[] srcs, int offs, int len) throws java.io.IOExceptionDescription copied from interface:MessageSinkConduitSend a complete message.- Specified by:
sendin 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;
trueif the message was sent, orfalseif it would block - Throws:
java.io.IOException- if an I/O error occurs
-
sendFinal
public boolean sendFinal(java.nio.ByteBuffer src) throws java.io.IOExceptionDescription copied from interface:MessageSinkConduitSend a complete message. If the message is successfully sent then the sink will have its writes terminated.- Specified by:
sendFinalin interfaceMessageSinkConduit- Parameters:
src- the message to send- Returns:
- the result of the send operation;
trueif the message was sent, orfalseif it would block - Throws:
java.io.IOException- if an I/O error occurs
-
sendFinal
public boolean sendFinal(java.nio.ByteBuffer[] srcs, int offs, int len) throws java.io.IOExceptionDescription copied from interface:MessageSinkConduitSend a complete message. If the message is successfully sent then the sink will have its writes terminated.- Specified by:
sendFinalin 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;
trueif the message was sent, orfalseif it would block - Throws:
java.io.IOException- if an I/O error occurs
-
flush
public boolean flush() throws java.io.IOExceptionDescription copied from interface:SinkConduitFlush out any unwritten, buffered output.- Specified by:
flushin interfaceSinkConduit- Overrides:
flushin classAbstractSinkConduit<StreamSinkConduit>- Returns:
trueif everything is flushed,falseotherwise- Throws:
java.io.IOException- if flush fails
-
terminateWrites
public void terminateWrites() throws java.io.IOExceptionDescription copied from interface:SinkConduitSignal that no more write data is forthcoming. The conduit must beSinkConduit.flush()ed before it is considered to be shut down.- Specified by:
terminateWritesin interfaceSinkConduit- Overrides:
terminateWritesin classAbstractSinkConduit<StreamSinkConduit>- Throws:
java.io.IOException
-
truncateWrites
public void truncateWrites() throws java.io.IOExceptionDescription copied from interface:SinkConduitTerminate writes and discard any outstanding write data. The conduit is terminated and flushed regardless of the outcome of this method.- Specified by:
truncateWritesin interfaceSinkConduit- Overrides:
truncateWritesin classAbstractSinkConduit<StreamSinkConduit>- Throws:
java.io.IOException- if channel termination failed for some reason
-
-