Module 

Class MessageStreamSinkConduit

All Implemented Interfaces:
Conduit, SinkConduit, StreamSinkConduit

public final class MessageStreamSinkConduit extends AbstractSinkConduit<MessageSinkConduit> implements StreamSinkConduit
A stream sink conduit which wraps each write into a single message.
Author:
David M. Lloyd
  • Constructor Details

    • MessageStreamSinkConduit

      public MessageStreamSinkConduit(MessageSinkConduit next)
      Construct a new instance.
      Parameters:
      next - the delegate conduit to set
  • Method Details

    • transferFrom

      public long transferFrom(FileChannel src, long position, long count) throws IOException
      Description copied from interface: StreamSinkConduit
      Transfer bytes into this conduit from the given file.
      Specified by:
      transferFrom in interface StreamSinkConduit
      Parameters:
      src - the file to read from
      position - the position within the file from which the transfer is to begin
      count - the number of bytes to be transferred
      Returns:
      the number of bytes (possibly 0) that were actually transferred
      Throws:
      IOException - if an I/O error occurs
    • transferFrom

      public long transferFrom(StreamSourceChannel source, long count, ByteBuffer throughBuffer) throws IOException
      Description copied from interface: StreamSinkConduit
      Transfers bytes from the given channel source. On entry, throughBuffer will be cleared. On exit, the buffer will be flipped for emptying, and may be empty or may contain data. If this method returns a value less than count, then the remaining data in throughBuffer may contain data read from source which must be written to this channel to complete the operation.
      Specified by:
      transferFrom in interface StreamSinkConduit
      Parameters:
      source - the source to read from
      count - the number of bytes to be transferred
      throughBuffer - the buffer to copy through.
      Returns:
      the number of bytes (possibly 0) that were actually transferred, or -1 if the end of input was reached
      Throws:
      IOException - if an I/O error occurs
    • write

      public int write(ByteBuffer src) throws IOException
      Description copied from interface: StreamSinkConduit
      Writes a sequence of bytes to this conduit from the given buffer.
      Specified by:
      write in interface StreamSinkConduit
      Parameters:
      src - the buffer containing data to write
      Returns:
      the number of bytes written, possibly 0
      Throws:
      ClosedChannelException - if this conduit's SinkConduit.terminateWrites() method was previously called
      IOException - if an error occurs
    • write

      public long write(ByteBuffer[] srcs, int offs, int len) throws IOException
      Description copied from interface: StreamSinkConduit
      Writes a sequence of bytes to this conduit from the given buffers.
      Specified by:
      write in interface StreamSinkConduit
      Parameters:
      srcs - the buffers containing data to write
      offs - the offset into the buffer array
      len - the number of buffers to write
      Returns:
      the number of bytes written, possibly 0
      Throws:
      ClosedChannelException - if this conduit's SinkConduit.terminateWrites() method was previously called
      IOException - if an error occurs
    • writeFinal

      public int writeFinal(ByteBuffer src) throws IOException
      Description copied from interface: StreamSinkConduit
      Writes some data to the conduit, with the same semantics as StreamSinkConduit.write(java.nio.ByteBuffer). If all the data is written out then the conduit will have its writes terminated. Semantically this method is equivalent to: int rem = src.remaining(); int written = conduit.write(src); if(written == rem) { conduit.terminateWrites() }
      Specified by:
      writeFinal in interface StreamSinkConduit
      Parameters:
      src - The data to write
      Returns:
      The amount of data that was actually written.
      Throws:
      IOException
    • writeFinal

      public long writeFinal(ByteBuffer[] srcs, int offset, int length) throws IOException
      Description copied from interface: StreamSinkConduit
      Writes some data to the conduit, with the same semantics as StreamSinkConduit.write(java.nio.ByteBuffer[], int, int). If all the data is written out then the conduit will have its writes terminated.
      Specified by:
      writeFinal in interface StreamSinkConduit
      Parameters:
      srcs - The buffers from which bytes are to be retrieved
      offset - The offset within the buffer array of the first buffer from which bytes are to be retrieved; must be non-negative and no larger than srcs.length
      length - The maximum number of buffers to be accessed; must be non-negative and no larger than srcs.length - offset
      Returns:
      The amount of data that was actually written
      Throws:
      IOException