Package org.eclipse.jetty.io
Class WriteFlusher
- java.lang.Object
-
- org.eclipse.jetty.io.WriteFlusher
-
public abstract class WriteFlusher extends java.lang.Object
A Utility class to help implementEndPoint.write(Callback, ByteBuffer...)
by callingEndPoint.flush(ByteBuffer...)
until all content is written. The abstract methodonIncompleteFlush()
is called when not all content has been written after a call to flush and should organize for thecompleteWrite()
method to be called when a subsequent call to flush should be able to make more progress.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
WriteFlusher.Listener
A listener ofWriteFlusher
events.
-
Constructor Summary
Constructors Modifier Constructor Description protected
WriteFlusher(EndPoint endPoint)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
completeWrite()
Complete a write that has not completed and that calledonIncompleteFlush()
to request a call to this method when a call toEndPoint.flush(ByteBuffer...)
is likely to be able to progress.protected java.nio.ByteBuffer[]
flush(java.nio.ByteBuffer[] buffers)
Flushes the buffers iteratively until no progress is made.Invocable.InvocationType
getCallbackInvocationType()
boolean
isPending()
void
onClose()
boolean
onFail(java.lang.Throwable cause)
Notify the flusher of a failureprotected abstract void
onIncompleteFlush()
Abstract call to be implemented by specific WriteFlushers.java.lang.String
toStateString()
java.lang.String
toString()
void
write(Callback callback, java.nio.ByteBuffer... buffers)
Tries to switch state to WRITING.
-
-
-
Constructor Detail
-
WriteFlusher
protected WriteFlusher(EndPoint endPoint)
-
-
Method Detail
-
getCallbackInvocationType
public Invocable.InvocationType getCallbackInvocationType()
-
onIncompleteFlush
protected abstract void onIncompleteFlush()
Abstract call to be implemented by specific WriteFlushers. It should schedule a call tocompleteWrite()
oronFail(Throwable)
when appropriate.
-
write
public void write(Callback callback, java.nio.ByteBuffer... buffers) throws java.nio.channels.WritePendingException
Tries to switch state to WRITING. If successful it writes the given buffers to the EndPoint. If state transition fails it will fail the callback and leave the WriteFlusher in a terminal FAILED state. If not all buffers can be written in one go it creates a newPendingState
object to preserve the state and then callsonIncompleteFlush()
. The remaining buffers will be written incompleteWrite()
. If all buffers have been written it calls callback.complete().- Parameters:
callback
- the callback to call on either failed or completebuffers
- the buffers to flush to the endpoint- Throws:
java.nio.channels.WritePendingException
- if unable to write due to prior pending write
-
completeWrite
public void completeWrite()
Complete a write that has not completed and that calledonIncompleteFlush()
to request a call to this method when a call toEndPoint.flush(ByteBuffer...)
is likely to be able to progress. It tries to switch from PENDING to COMPLETING. If state transition fails, then it does nothing as the callback should have been already failed. That's because the only way to switch from PENDING outside this method isonFail(Throwable)
oronClose()
-
flush
protected java.nio.ByteBuffer[] flush(java.nio.ByteBuffer[] buffers) throws java.io.IOException
Flushes the buffers iteratively until no progress is made.- Parameters:
buffers
- The buffers to flush- Returns:
- The unflushed buffers, or null if all flushed
- Throws:
java.io.IOException
- if unable to flush
-
onFail
public boolean onFail(java.lang.Throwable cause)
Notify the flusher of a failure- Parameters:
cause
- The cause of the failure- Returns:
- true if the flusher passed the failure to a
Callback
instance
-
onClose
public void onClose()
-
isPending
public boolean isPending()
-
toStateString
public java.lang.String toStateString()
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-