Package org.apache.cxf.ws.rm.soap
Class RetransmissionQueueImpl
- java.lang.Object
-
- org.apache.cxf.ws.rm.soap.RetransmissionQueueImpl
-
- All Implemented Interfaces:
RetransmissionQueue
public class RetransmissionQueueImpl extends Object implements RetransmissionQueue
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classRetransmissionQueueImpl.CopyOutInterceptorprotected classRetransmissionQueueImpl.ResendCandidateRepresents a candidate for resend, i.e.static interfaceRetransmissionQueueImpl.ResenderEncapsulates actual resend logic (pluggable to facilitate unit testing)
-
Field Summary
-
Fields inherited from interface org.apache.cxf.ws.rm.RetransmissionQueue
DEFAULT_BASE_RETRANSMISSION_INTERVAL, DEFAULT_EXPONENTIAL_BACKOFF
-
-
Constructor Summary
Constructors Constructor Description RetransmissionQueueImpl(RMManager m)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddUnacknowledged(Message message)Accepts a new message for possible future retransmission.protected ConduitbuildConduit(SoapMessage message, Endpoint endpoint, org.apache.cxf.ws.addressing.AttributedURIType to)protected PhaseInterceptorChainbuildRetransmitChain(Endpoint endpoint, PhaseChainCache cache)protected RetransmissionQueueImpl.ResendCandidatecacheUnacknowledged(Message message)Accepts a new resend candidate.intcountUnacknowledged()intcountUnacknowledged(SourceSequence seq)protected RetransmissionQueueImpl.ResendCandidatecreateResendCandidate(Message message)protected JaxbAssertion<RMAssertion>getAssertion(AssertionInfo ai)protected RetransmissionQueueImpl.ResendergetDefaultResender()Create default Resender logic.protected intgetExponentialBackoff()RMManagergetManager()RetryStatusgetRetransmissionStatus(SourceSequence seq, long num)Returns the retransmission status for the specified message.Map<Long,RetryStatus>getRetransmissionStatuses(SourceSequence seq)Return the retransmission status of all the messages assigned to the sequence.protected List<RetransmissionQueueImpl.ResendCandidate>getSequenceCandidates(String key)protected List<RetransmissionQueueImpl.ResendCandidate>getSequenceCandidates(SourceSequence seq)protected Map<String,List<RetransmissionQueueImpl.ResendCandidate>>getUnacknowledged()List<Long>getUnacknowledgedMessageNumbers(SourceSequence seq)booleanisEmpty()protected booleanisSequenceSuspended(String key)voidpurgeAcknowledged(SourceSequence seq)Purge all candidates for the given sequence that have been acknowledged.voidpurgeAll(SourceSequence seq)Purge all candidates for the given sequence.protected voidreplaceResender(RetransmissionQueueImpl.Resender replacement)Plug in replacement resend logic (facilitates unit testing).voidresume(SourceSequence seq)Resumes the retransmission attempts for the specified sequencevoidsetManager(RMManager m)voidstart()Initiate resends.voidstop(SourceSequence seq)Stops resending messages for the specified source sequence.voidsuspend(SourceSequence seq)Suspends the retransmission attempts for the specified sequence
-
-
-
Constructor Detail
-
RetransmissionQueueImpl
public RetransmissionQueueImpl(RMManager m)
-
-
Method Detail
-
getManager
public RMManager getManager()
-
setManager
public void setManager(RMManager m)
-
addUnacknowledged
public void addUnacknowledged(Message message)
Description copied from interface:RetransmissionQueueAccepts a new message for possible future retransmission. Implementations must call the RMEndpoint.handleAccepted() method for each accepted message.- Specified by:
addUnacknowledgedin interfaceRetransmissionQueue- Parameters:
message- the message context.
-
countUnacknowledged
public int countUnacknowledged(SourceSequence seq)
- Specified by:
countUnacknowledgedin interfaceRetransmissionQueue- Parameters:
seq- the sequence under consideration- Returns:
- the number of unacknowledged messages for that sequence
-
countUnacknowledged
public int countUnacknowledged()
- Specified by:
countUnacknowledgedin interfaceRetransmissionQueue- Returns:
- the total number of unacknowledged messages in this queue
-
isEmpty
public boolean isEmpty()
- Specified by:
isEmptyin interfaceRetransmissionQueue- Returns:
- true if there are no unacknowledged messages in the queue
-
purgeAcknowledged
public void purgeAcknowledged(SourceSequence seq)
Purge all candidates for the given sequence that have been acknowledged.- Specified by:
purgeAcknowledgedin interfaceRetransmissionQueue- Parameters:
seq- the sequence object.
-
purgeAll
public void purgeAll(SourceSequence seq)
Purge all candidates for the given sequence. This method is used to terminate the sequence by force and release the resource associated with the sequence.- Specified by:
purgeAllin interfaceRetransmissionQueue- Parameters:
seq- the sequence object.
-
getUnacknowledgedMessageNumbers
public List<Long> getUnacknowledgedMessageNumbers(SourceSequence seq)
- Specified by:
getUnacknowledgedMessageNumbersin interfaceRetransmissionQueue- Returns:
-
getRetransmissionStatus
public RetryStatus getRetransmissionStatus(SourceSequence seq, long num)
Description copied from interface:RetransmissionQueueReturns the retransmission status for the specified message.- Specified by:
getRetransmissionStatusin interfaceRetransmissionQueue- Returns:
-
getRetransmissionStatuses
public Map<Long,RetryStatus> getRetransmissionStatuses(SourceSequence seq)
Description copied from interface:RetransmissionQueueReturn the retransmission status of all the messages assigned to the sequence.- Specified by:
getRetransmissionStatusesin interfaceRetransmissionQueue- Returns:
-
start
public void start()
Initiate resends.- Specified by:
startin interfaceRetransmissionQueue
-
stop
public void stop(SourceSequence seq)
Stops resending messages for the specified source sequence.- Specified by:
stopin interfaceRetransmissionQueue
-
suspend
public void suspend(SourceSequence seq)
Description copied from interface:RetransmissionQueueSuspends the retransmission attempts for the specified sequence- Specified by:
suspendin interfaceRetransmissionQueue
-
resume
public void resume(SourceSequence seq)
Description copied from interface:RetransmissionQueueResumes the retransmission attempts for the specified sequence- Specified by:
resumein interfaceRetransmissionQueue
-
getExponentialBackoff
protected int getExponentialBackoff()
- Returns:
- the exponential backoff
-
createResendCandidate
protected RetransmissionQueueImpl.ResendCandidate createResendCandidate(Message message)
- Parameters:
message- the message context- Returns:
- a ResendCandidate
-
cacheUnacknowledged
protected RetransmissionQueueImpl.ResendCandidate cacheUnacknowledged(Message message)
Accepts a new resend candidate.- Parameters:
message- the message object.- Returns:
- ResendCandidate
-
getUnacknowledged
protected Map<String,List<RetransmissionQueueImpl.ResendCandidate>> getUnacknowledged()
- Returns:
- a map relating sequence ID to a lists of un-acknowledged messages for that sequence
-
getSequenceCandidates
protected List<RetransmissionQueueImpl.ResendCandidate> getSequenceCandidates(SourceSequence seq)
- Parameters:
seq- the sequence under consideration- Returns:
- the list of resend candidates for that sequence
-
getSequenceCandidates
protected List<RetransmissionQueueImpl.ResendCandidate> getSequenceCandidates(String key)
- Parameters:
key- the sequence identifier under consideration- Returns:
- the list of resend candidates for that sequence
-
isSequenceSuspended
protected boolean isSequenceSuspended(String key)
- Parameters:
key- the sequence identifier under consideration- Returns:
- true if the sequence is currently suspended; false otherwise
-
getDefaultResender
protected final RetransmissionQueueImpl.Resender getDefaultResender()
Create default Resender logic.- Returns:
- default Resender
-
replaceResender
protected void replaceResender(RetransmissionQueueImpl.Resender replacement)
Plug in replacement resend logic (facilitates unit testing).- Parameters:
replacement- resend logic
-
getAssertion
protected JaxbAssertion<RMAssertion> getAssertion(AssertionInfo ai)
-
buildConduit
protected Conduit buildConduit(SoapMessage message, Endpoint endpoint, org.apache.cxf.ws.addressing.AttributedURIType to)
- Parameters:
message-endpoint-to-- Returns:
-
buildRetransmitChain
protected PhaseInterceptorChain buildRetransmitChain(Endpoint endpoint, PhaseChainCache cache)
- Parameters:
endpoint-cache-- Returns:
-
-