Package org.xnio.conduits
Class SynchronizedStreamSourceConduit
java.lang.Object
org.xnio.conduits.AbstractConduit<D>
org.xnio.conduits.AbstractSynchronizedConduit<D>
org.xnio.conduits.AbstractSynchronizedSourceConduit<StreamSourceConduit>
org.xnio.conduits.SynchronizedStreamSourceConduit
- All Implemented Interfaces:
Conduit,SourceConduit,StreamSourceConduit
public final class SynchronizedStreamSourceConduit
extends AbstractSynchronizedSourceConduit<StreamSourceConduit>
implements StreamSourceConduit
A synchronized stream source conduit. All conduit operations are wrapped in synchronization blocks for simplified
thread safety.
- Author:
- David M. Lloyd
-
Field Summary
Fields inherited from class org.xnio.conduits.AbstractSynchronizedConduit
lockFields inherited from class org.xnio.conduits.AbstractConduit
next -
Constructor Summary
ConstructorsConstructorDescriptionConstruct a new instance.SynchronizedStreamSourceConduit(StreamSourceConduit next, Object lock) Construct a new instance. -
Method Summary
Modifier and TypeMethodDescriptionintread(ByteBuffer dst) Read a sequence of bytes from this conduit to the given buffer.longread(ByteBuffer[] dsts, int offs, int len) Read a sequence of bytes from this conduit to the given buffers.longtransferTo(long position, long count, FileChannel target) Transfers bytes into the given file from this channel.longtransferTo(long count, ByteBuffer throughBuffer, StreamSinkChannel target) Transfers bytes into the given channel target.Methods inherited from class org.xnio.conduits.AbstractSynchronizedSourceConduit
awaitReadable, awaitReadable, getReadThread, isReadResumed, isReadShutdown, resumeReads, setReadReadyHandler, suspendReads, terminateReads, wakeupReadsMethods inherited from class org.xnio.conduits.AbstractConduit
getWorkerMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.xnio.conduits.SourceConduit
awaitReadable, awaitReadable, getReadThread, isReadResumed, isReadShutdown, resumeReads, setReadReadyHandler, suspendReads, terminateReads, wakeupReads
-
Constructor Details
-
SynchronizedStreamSourceConduit
Construct a new instance. A new lock object is created.- Parameters:
next- the next conduit in the chain
-
SynchronizedStreamSourceConduit
Construct a new instance.- Parameters:
next- the next conduit in the chainlock- the lock object to use
-
-
Method Details
-
transferTo
Description copied from interface:StreamSourceConduitTransfers bytes into the given file from this channel.- Specified by:
transferToin interfaceStreamSourceConduit- Parameters:
position- the position within the file from which the transfer is to begincount- the number of bytes to be transferredtarget- the file to write to- Returns:
- the number of bytes (possibly 0) that were actually transferred
- Throws:
IOException- if an I/O error occurs
-
transferTo
public long transferTo(long count, ByteBuffer throughBuffer, StreamSinkChannel target) throws IOException Description copied from interface:StreamSourceConduitTransfers bytes into the given channel target. On entry,throughBufferwill be cleared. On exit, the buffer will be flipped for emptying, and may possibly be empty or may contain data. If this method returns a value less thancount, then the remaining data inthroughBuffermay contain data read from this channel which must be written totargetto complete the operation.- Specified by:
transferToin interfaceStreamSourceConduit- Parameters:
count- the number of bytes to be transferredthroughBuffer- the buffer to copy through.target- the destination to write to- 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
-
read
Description copied from interface:StreamSourceConduitRead a sequence of bytes from this conduit to the given buffer.- Specified by:
readin interfaceStreamSourceConduit- Returns:
- the number of bytes (possibly 0) that were actually transferred, or -1 if the end of input was reached or
this conduit's
SourceConduit.terminateReads()method was previously called - Throws:
IOException- if an error occurs
-
read
Description copied from interface:StreamSourceConduitRead a sequence of bytes from this conduit to the given buffers.- Specified by:
readin interfaceStreamSourceConduitoffs- the offset into the buffer arraylen- the number of buffers to fill- Returns:
- the number of bytes (possibly 0) that were actually transferred, or -1 if the end of input was reached or
this conduit's
SourceConduit.terminateReads()method was previously called - Throws:
IOException- if an error occurs
-