Package org.simpleframework.transport
Class FlushSignaller
- java.lang.Object
-
- org.simpleframework.transport.FlushSignaller
-
- All Implemented Interfaces:
java.lang.Runnable
,Operation
class FlushSignaller extends java.lang.Object implements Operation
TheFlushSignaller
is an operation that performs writes operation asynchronously. This will basically determine if the socket is write ready and drain each queued buffer to the socket until there are no more pending buffers.
-
-
Constructor Summary
Constructors Constructor Description FlushSignaller(SocketFlusher writer, Socket socket)
Constructor for theFlushSignaller
object.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
cancel()
This is used to cancel the operation if it has timed out.java.nio.channels.SocketChannel
getChannel()
This returns the socket channel for the connected pipeline.Trace
getTrace()
This is used to acquire the trace object that is associated with the operation.void
run()
This is used to perform the drain of the pending buffer queue.
-
-
-
Field Detail
-
writer
private final SocketFlusher writer
This is the writer that is used to write the data.
-
socket
private final Socket socket
This is the socket that this will be flushing.
-
trace
private final Trace trace
This is used to trace the activity for the operation.
-
-
Constructor Detail
-
FlushSignaller
public FlushSignaller(SocketFlusher writer, Socket socket)
Constructor for theFlushSignaller
object. This will create an operation that is used to flush the buffer queue to the underlying socket. This ensures that the data is written to the socket in the queued order.- Parameters:
writer
- this is the writer to flush the data tosocket
- this is the socket to be flushed
-
-
Method Detail
-
getTrace
public Trace getTrace()
This is used to acquire the trace object that is associated with the operation. A trace object is used to collection details on what operations are being performed. For instance it may contain information relating to I/O events or errors.
-
getChannel
public java.nio.channels.SocketChannel getChannel()
This returns the socket channel for the connected pipeline. It is this channel that is used to determine if there are bytes that can be written. When closed this is no longer selectable.- Specified by:
getChannel
in interfaceOperation
- Returns:
- this returns the connected channel for the pipeline
-
run
public void run()
This is used to perform the drain of the pending buffer queue. This will drain each pending queue if the socket is write ready. If the socket is not write ready the operation is enqueued for selection and this returns. This ensures that all the data will eventually be delivered.- Specified by:
run
in interfacejava.lang.Runnable
-
cancel
public void cancel()
This is used to cancel the operation if it has timed out. If the delegate is waiting too long to flush the contents of the buffers to the underlying transport then the socket is closed and the flusher times out to avoid deadlock.
-
-