public abstract class AbstractFixedLengthStreamSinkConduit extends AbstractStreamSinkConduit<StreamSinkConduit>
next
Constructor and Description |
---|
AbstractFixedLengthStreamSinkConduit(StreamSinkConduit next,
long contentLength,
boolean configurable,
boolean propagateClose)
Construct a new instance.
|
Modifier and Type | Method and Description |
---|---|
void |
awaitWritable()
Block until this channel becomes writable again.
|
void |
awaitWritable(long time,
TimeUnit timeUnit)
Block until this conduit becomes writable again, or until the timeout expires.
|
protected void |
channelFinished() |
boolean |
flush()
Flush out any unwritten, buffered output.
|
long |
getRemaining()
Get the number of remaining bytes in this fixed length channel.
|
boolean |
isWriteResumed()
Determine whether write notifications are currently enabled.
|
protected void |
reset(long contentLength,
boolean propagateClose) |
void |
terminateWrites()
Signal that no more write data is forthcoming.
|
long |
transferFrom(FileChannel src,
long position,
long count)
Transfer bytes into this conduit from the given file.
|
long |
transferFrom(StreamSourceChannel source,
long count,
ByteBuffer throughBuffer)
Transfers bytes from the given channel source.
|
void |
truncateWrites()
Terminate writes and discard any outstanding write data.
|
void |
wakeupWrites()
Indicate that the conduit's
WriteReadyHandler should be invoked immediately, and then again as soon
as data can be written without blocking. |
int |
write(ByteBuffer src)
Writes a sequence of bytes to this conduit from the given buffer.
|
long |
write(ByteBuffer[] srcs,
int offset,
int length)
Writes a sequence of bytes to this conduit from the given buffers.
|
int |
writeFinal(ByteBuffer src)
Writes some data to the conduit, with the same semantics as
StreamSinkConduit.write(java.nio.ByteBuffer) . |
long |
writeFinal(ByteBuffer[] srcs,
int offset,
int length)
Writes some data to the conduit, with the same semantics as
StreamSinkConduit.write(java.nio.ByteBuffer[], int, int) . |
getWriteThread, isWriteShutdown, resumeWrites, setWriteReadyHandler, suspendWrites
getWorker
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getWriteThread, isWriteShutdown, resumeWrites, setWriteReadyHandler, suspendWrites
public AbstractFixedLengthStreamSinkConduit(StreamSinkConduit next, long contentLength, boolean configurable, boolean propagateClose)
next
- the next channelcontentLength
- the content lengthconfigurable
- true
if this instance should pass configuration to the nextpropagateClose
- true
if this instance should pass close to the nextprotected void reset(long contentLength, boolean propagateClose)
public int write(ByteBuffer src) throws IOException
StreamSinkConduit
write
in interface StreamSinkConduit
write
in class AbstractStreamSinkConduit<StreamSinkConduit>
src
- the buffer containing data to writeClosedChannelException
- if this conduit's SinkConduit.terminateWrites()
method was previously calledIOException
- if an error occurspublic long write(ByteBuffer[] srcs, int offset, int length) throws IOException
StreamSinkConduit
write
in interface StreamSinkConduit
write
in class AbstractStreamSinkConduit<StreamSinkConduit>
srcs
- the buffers containing data to writeoffset
- the offset into the buffer arraylength
- the number of buffers to writeClosedChannelException
- if this conduit's SinkConduit.terminateWrites()
method was previously calledIOException
- if an error occurspublic long writeFinal(ByteBuffer[] srcs, int offset, int length) throws IOException
StreamSinkConduit
StreamSinkConduit.write(java.nio.ByteBuffer[], int, int)
. If all the data is written
out then the conduit will have its writes terminated.writeFinal
in interface StreamSinkConduit
writeFinal
in class AbstractStreamSinkConduit<StreamSinkConduit>
srcs
- The buffers from which bytes are to be retrievedoffset
- 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.lengthlength
- The maximum number of buffers to be accessed; must be
non-negative and no larger than
srcs.length - offsetIOException
public int writeFinal(ByteBuffer src) throws IOException
StreamSinkConduit
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()
}
writeFinal
in interface StreamSinkConduit
writeFinal
in class AbstractStreamSinkConduit<StreamSinkConduit>
src
- The data to writeIOException
public long transferFrom(FileChannel src, long position, long count) throws IOException
StreamSinkConduit
transferFrom
in interface StreamSinkConduit
transferFrom
in class AbstractStreamSinkConduit<StreamSinkConduit>
src
- the file to read fromposition
- the position within the file from which the transfer is to begincount
- the number of bytes to be transferredIOException
- if an I/O error occurspublic long transferFrom(StreamSourceChannel source, long count, ByteBuffer throughBuffer) throws IOException
StreamSinkConduit
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.transferFrom
in interface StreamSinkConduit
transferFrom
in class AbstractStreamSinkConduit<StreamSinkConduit>
source
- the source to read fromcount
- the number of bytes to be transferredthroughBuffer
- the buffer to copy through.IOException
- if an I/O error occurspublic boolean flush() throws IOException
SinkConduit
flush
in interface SinkConduit
flush
in class AbstractSinkConduit<StreamSinkConduit>
true
if everything is flushed, false
otherwiseIOException
- if flush failspublic boolean isWriteResumed()
SinkConduit
isWriteResumed
in interface SinkConduit
isWriteResumed
in class AbstractSinkConduit<StreamSinkConduit>
true
if write notifications are enabledpublic void wakeupWrites()
SinkConduit
WriteReadyHandler
should be invoked immediately, and then again as soon
as data can be written without blocking.wakeupWrites
in interface SinkConduit
wakeupWrites
in class AbstractSinkConduit<StreamSinkConduit>
public void terminateWrites() throws IOException
SinkConduit
SinkConduit.flush()
ed before it is considered
to be shut down.terminateWrites
in interface SinkConduit
terminateWrites
in class AbstractSinkConduit<StreamSinkConduit>
IOException
public void truncateWrites() throws IOException
SinkConduit
truncateWrites
in interface SinkConduit
truncateWrites
in class AbstractSinkConduit<StreamSinkConduit>
IOException
- if channel termination failed for some reasonpublic void awaitWritable() throws IOException
SinkConduit
awaitWritable
in interface SinkConduit
awaitWritable
in class AbstractSinkConduit<StreamSinkConduit>
InterruptedIOException
- if the operation is interrupted; the thread's interrupt flag will be set
as wellIOException
- if an I/O error occurspublic void awaitWritable(long time, TimeUnit timeUnit) throws IOException
SinkConduit
awaitWritable
in interface SinkConduit
awaitWritable
in class AbstractSinkConduit<StreamSinkConduit>
time
- the time to waittimeUnit
- the time unitInterruptedIOException
- if the operation is interrupted; the thread's interrupt flag will be set
as wellIOException
- if an I/O error occurspublic long getRemaining()
protected void channelFinished()
Copyright © 2019 JBoss by Red Hat. All rights reserved.