- java.lang.Object
-
- org.xnio.conduits.AbstractConduit<D>
-
- org.xnio.conduits.AbstractSinkConduit<D>
-
- All Implemented Interfaces:
Conduit
,SinkConduit
- Direct Known Subclasses:
AbstractMessageSinkConduit
,AbstractStreamSinkConduit
,FramingMessageSinkConduit
,MessageStreamSinkConduit
public abstract class AbstractSinkConduit<D extends SinkConduit> extends AbstractConduit<D> implements SinkConduit
An abstract base class for filtering output conduits.- Author:
- David M. Lloyd
-
-
Field Summary
-
Fields inherited from class org.xnio.conduits.AbstractConduit
next
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractSinkConduit(D next)
Construct a new instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
awaitWritable()
Block until this channel becomes writable again.void
awaitWritable(long time, java.util.concurrent.TimeUnit timeUnit)
Block until this conduit becomes writable again, or until the timeout expires.boolean
flush()
Flush out any unwritten, buffered output.XnioIoThread
getWriteThread()
Get the write thread for this conduit.boolean
isWriteResumed()
Determine whether write notifications are currently enabled.boolean
isWriteShutdown()
Determine whether writes have been fully shut down on this conduit.void
resumeWrites()
Indicate that the conduit'sWriteReadyHandler
should be invoked as soon as data can be written without blocking.void
setWriteReadyHandler(WriteReadyHandler handler)
Set the handler which should receive readiness notifications.void
suspendWrites()
Indicate that calling the conduit'sWriteReadyHandler
should be suspended.void
terminateWrites()
Signal that no more write data is forthcoming.void
truncateWrites()
Terminate writes and discard any outstanding write data.void
wakeupWrites()
Indicate that the conduit'sWriteReadyHandler
should be invoked immediately, and then again as soon as data can be written without blocking.-
Methods inherited from class org.xnio.conduits.AbstractConduit
getWorker
-
-
-
-
Constructor Detail
-
AbstractSinkConduit
protected AbstractSinkConduit(D next)
Construct a new instance.- Parameters:
next
- the delegate conduit to set
-
-
Method Detail
-
terminateWrites
public void terminateWrites() throws java.io.IOException
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
- Throws:
java.io.IOException
-
isWriteShutdown
public boolean isWriteShutdown()
Description copied from interface:SinkConduit
Determine whether writes have been fully shut down on this conduit.- Specified by:
isWriteShutdown
in interfaceSinkConduit
- Returns:
true
if writes are fully shut down,false
otherwise
-
resumeWrites
public void resumeWrites()
Description copied from interface:SinkConduit
Indicate that the conduit'sWriteReadyHandler
should be invoked as soon as data can be written without blocking.- Specified by:
resumeWrites
in interfaceSinkConduit
-
suspendWrites
public void suspendWrites()
Description copied from interface:SinkConduit
Indicate that calling the conduit'sWriteReadyHandler
should be suspended.- Specified by:
suspendWrites
in interfaceSinkConduit
-
wakeupWrites
public void wakeupWrites()
Description copied from interface:SinkConduit
Indicate that the conduit'sWriteReadyHandler
should be invoked immediately, and then again as soon as data can be written without blocking.- Specified by:
wakeupWrites
in interfaceSinkConduit
-
isWriteResumed
public boolean isWriteResumed()
Description copied from interface:SinkConduit
Determine whether write notifications are currently enabled.- Specified by:
isWriteResumed
in interfaceSinkConduit
- Returns:
true
if write notifications are enabled
-
awaitWritable
public void awaitWritable() throws java.io.IOException
Description copied from interface:SinkConduit
Block until this channel becomes writable again. This method may return spuriously before the channel becomes writable.- Specified by:
awaitWritable
in interfaceSinkConduit
- Throws:
java.io.InterruptedIOException
- if the operation is interrupted; the thread's interrupt flag will be set as welljava.io.IOException
- if an I/O error occurs
-
awaitWritable
public void awaitWritable(long time, java.util.concurrent.TimeUnit timeUnit) throws java.io.IOException
Description copied from interface:SinkConduit
Block until this conduit becomes writable again, or until the timeout expires. This method may return spuriously before the conduit becomes writable or the timeout expires.- Specified by:
awaitWritable
in interfaceSinkConduit
- Parameters:
time
- the time to waittimeUnit
- the time unit- Throws:
java.io.InterruptedIOException
- if the operation is interrupted; the thread's interrupt flag will be set as welljava.io.IOException
- if an I/O error occurs
-
getWriteThread
public XnioIoThread getWriteThread()
Description copied from interface:SinkConduit
Get the write thread for this conduit.- Specified by:
getWriteThread
in interfaceSinkConduit
- Returns:
- the thread, or
null
if none is configured or available
-
setWriteReadyHandler
public void setWriteReadyHandler(WriteReadyHandler handler)
Description copied from interface:SinkConduit
Set the handler which should receive readiness notifications. A filter may pass this invocation on to the filter it wraps, or it may substitute itself.- Specified by:
setWriteReadyHandler
in interfaceSinkConduit
-
truncateWrites
public void truncateWrites() throws java.io.IOException
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
- Throws:
java.io.IOException
- if channel termination failed for some reason
-
flush
public boolean flush() throws java.io.IOException
Description copied from interface:SinkConduit
Flush out any unwritten, buffered output.- Specified by:
flush
in interfaceSinkConduit
- Returns:
true
if everything is flushed,false
otherwise- Throws:
java.io.IOException
- if flush fails
-
-