01: /**
02: * Licensed to the Apache Software Foundation (ASF) under one
03: * or more contributor license agreements. See the NOTICE file
04: * distributed with this work for additional information
05: * regarding copyright ownership. The ASF licenses this file
06: * to you under the Apache License, Version 2.0 (the
07: * "License"); you may not use this file except in compliance
08: * with the License. You may obtain a copy of the License at
09: *
10: * http://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing,
13: * software distributed under the License is distributed on an
14: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15: * KIND, either express or implied. See the License for the
16: * specific language governing permissions and limitations
17: * under the License.
18: */package org.apache.cxf.ws.rm;
19:
20: import org.apache.cxf.message.Message;
21:
22: public interface RetransmissionQueue {
23:
24: String DEFAULT_BASE_RETRANSMISSION_INTERVAL = "3000";
25: int DEFAULT_EXPONENTIAL_BACKOFF = 2;
26:
27: /**
28: * @param seq the sequence under consideration
29: * @return the number of unacknowledged messages for that sequence
30: */
31: int countUnacknowledged(SourceSequence seq);
32:
33: /**
34: * @return true if there are no unacknowledged messages in the queue
35: */
36: boolean isEmpty();
37:
38: /**
39: * Accepts a new context for posible future retransmission.
40: * @param ctx the message context.
41: */
42: void addUnacknowledged(Message message);
43:
44: /**
45: * Purge all candidates for the given sequence that have been acknowledged.
46: *
47: * @param seq the sequence object.
48: */
49: void purgeAcknowledged(SourceSequence seq);
50:
51: /**
52: * Initiate resends.
53: *
54: */
55: void start();
56:
57: /**
58: * Stops retransmission queue.
59: */
60: void stop(SourceSequence seq);
61:
62: }
|