Package org.eclipse.jetty.io
Class WriteFlusher
- java.lang.Object
 - 
- org.eclipse.jetty.io.WriteFlusher
 
 
- 
public abstract class WriteFlusher extends java.lang.ObjectA 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 interfaceWriteFlusher.ListenerA listener ofWriteFlusherevents. 
- 
Constructor Summary
Constructors Modifier Constructor Description protectedWriteFlusher(EndPoint endPoint) 
- 
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidcompleteWrite()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.InvocationTypegetCallbackInvocationType()booleanisPending()voidonClose()booleanonFail(java.lang.Throwable cause)Notify the flusher of a failureprotected abstract voidonIncompleteFlush()Abstract call to be implemented by specific WriteFlushers.java.lang.StringtoStateString()java.lang.StringtoString()voidwrite(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 newPendingStateobject 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.IOExceptionFlushes 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 
Callbackinstance 
 
- 
onClose
public void onClose()
 
- 
isPending
public boolean isPending()
 
- 
toStateString
public java.lang.String toStateString()
 
- 
toString
public java.lang.String toString()
- Overrides:
 toStringin classjava.lang.Object
 
 - 
 
 -