diff options
| author | Rafael H. Schloming <rhs@apache.org> | 2008-06-13 13:47:21 +0000 |
|---|---|---|
| committer | Rafael H. Schloming <rhs@apache.org> | 2008-06-13 13:47:21 +0000 |
| commit | 4113e82ebabd5fc2b65fe73d7f64c1837b27ce51 (patch) | |
| tree | c06e2052238b01fcf2c8cb69df18bed46cbf01ad /qpid/java/common | |
| parent | 497acdc4b9b7f2233d094864bd01a665cbd3e8ac (diff) | |
| download | qpid-python-4113e82ebabd5fc2b65fe73d7f64c1837b27ce51.tar.gz | |
QPID-901: don't send known-completed for ranges we ignore
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@667540 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/common')
| -rw-r--r-- | qpid/java/common/src/main/java/org/apache/qpidity/transport/Session.java | 6 | ||||
| -rw-r--r-- | qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java | 17 |
2 files changed, 18 insertions, 5 deletions
diff --git a/qpid/java/common/src/main/java/org/apache/qpidity/transport/Session.java b/qpid/java/common/src/main/java/org/apache/qpidity/transport/Session.java index e0bdcf789e..331e1517d1 100644 --- a/qpid/java/common/src/main/java/org/apache/qpidity/transport/Session.java +++ b/qpid/java/common/src/main/java/org/apache/qpidity/transport/Session.java @@ -226,11 +226,12 @@ public class Session extends Invoker } } - void complete(int lower, int upper) + boolean complete(int lower, int upper) { log.debug("%s complete(%d, %d)", this, lower, upper); synchronized (commands) { + int old = maxComplete; for (int id = max(maxComplete, lower); le(id, upper); id++) { commands.remove(id); @@ -239,8 +240,9 @@ public class Session extends Invoker { maxComplete = max(maxComplete, upper); } - commands.notifyAll(); log.debug("%s commands remaining: %s", this, commands); + commands.notifyAll(); + return gt(maxComplete, old); } } diff --git a/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java b/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java index bd56149b34..0e289c54e9 100644 --- a/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java +++ b/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java @@ -67,16 +67,27 @@ public abstract class SessionDelegate @Override public void sessionCompleted(Session ssn, SessionCompleted cmp) { RangeSet ranges = cmp.getCommands(); + RangeSet known = null; + if (cmp.getTimelyReply()) + { + known = new RangeSet(); + } + if (ranges != null) { for (Range range : ranges) { - ssn.complete(range.getLower(), range.getUpper()); + boolean advanced = ssn.complete(range.getLower(), range.getUpper()); + if (advanced && known != null) + { + known.add(range); + } } } - if (cmp.getTimelyReply()) + + if (known != null) { - ssn.sessionKnownCompleted(ranges); + ssn.sessionKnownCompleted(known); } } |
