ClientOutboundSequence represents the set of all messages from a single BindingProvider instance.
It includes methods that connect and disconnect to a remote RMDestination using
a client for a WebService that uses CreateSequence and TerminateSequence as its request messages.
receiveBufferSize Current value of receive buffer read from incoming SequenceAcknowledgement
messages if RM Destination implements properietary Indigo Flow Control feature.
acknowledge(int i) Implementation of acknowledge defers discarding stored messages when
the AcksTo endpoint is anonymous and the message is a two-way request.
In this case, the actual work usually done by acknowledge() needs to
wait until the response is received.
public synchronized void
acknowledgeResponse(int i) Acknowledges that a response to a two-way operation has been
received.
public void
connect(URI destination, URI acksTo, boolean twoWay) Connects to remote RM Destination by sending request through the proxy
stored in the port field.
Parameters: destination - Destination URI for RM Destination Parameters: acksTo - reply to EPR for protocol responses.
public void
disconnect() Disconnect from the RMDestination by invoking TerminateSequence on
the proxy stored in the port field.
public void
disconnect(boolean keepAlive) Disconnect from the RMDestination by invoking TerminateSequence on
the proxy stored in the port field.
public synchronized void
doMaintenanceTasks() Handler periodically invoked by RMSource.MaintenanceThread.
Current value of receive buffer read from incoming SequenceAcknowledgement
messages if RM Destination implements properietary Indigo Flow Control feature.
Implementation of acknowledge defers discarding stored messages when
the AcksTo endpoint is anonymous and the message is a two-way request.
In this case, the actual work usually done by acknowledge() needs to
wait until the response is received. The RMClientPipe invokes
acknowledgeResponse at that time.
Parameters: i - The index to acknowledge throws: InvalidMessageNumberException -
Acknowledges that a response to a two-way operation has been
received. See Javadoc for acknowledge Parameters: i - The index to acknowledge throws: InvalidMessageNumberException -
Connects to remote RM Destination by sending request through the proxy
stored in the port field.
Parameters: destination - Destination URI for RM Destination Parameters: acksTo - reply to EPR for protocol responses. The null value indicatesuse of the WS-Addressing anonymous EPR throws: RMException - wrapper for all exceptions thrown during execution of method.
Disconnect from the RMDestination by invoking TerminateSequence on
the proxy stored in the port field. State of
sequence is set to inactive.
throws: RMException - wrapper for all exceptions thrown during execution of method.
Disconnect from the RMDestination by invoking TerminateSequence on
the proxy stored in the port field.
Parameters: keepAlive - If true, state of sequence is kept inactive atate allowing the reuse of the sequence. throws: RMException - wrapper for all exceptions thrown during execution of method.
doMaintenanceTasks
public synchronized void doMaintenanceTasks() throws RMException(Code)
Handler periodically invoked by RMSource.MaintenanceThread.
Has two duties:
Resend incomplete messages.
Send AckRequested message down the pipeline if Inactivity
timeout is approaching.
Implementation of the getSequenceSettings method in
com.sun.xml.ws.rm.api.client.ClientSequence. Need
to populate the sequence ids in the returned SequenceSettings
object, since in general, they will not be set in the underlying
SequenceConfig object.
Return the hoped-for limit to number of stored messages. Currently
the limit is not enforced, but as the number of stored messages approaches
the limit, resends and ackRequests occur more frequently.
Checks whether an ack should be requested. Currently checks whether the
The algorithm checks whether the ackRequest deadline has elapsed.
The ackRequestDeadline is determined by the ackRequestInterval in the
SequenceConfig member for this sequence.
Checks whether a resend should happen. The algorithm checks whether
the resendDeadline has elapsed.
The resendDeadline is determined by the resendInterval in the
SequenceConfig member for this sequence.