summaryrefslogtreecommitdiff
path: root/qpid/java/common
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2008-06-13 13:47:21 +0000
committerRafael H. Schloming <rhs@apache.org>2008-06-13 13:47:21 +0000
commit4113e82ebabd5fc2b65fe73d7f64c1837b27ce51 (patch)
treec06e2052238b01fcf2c8cb69df18bed46cbf01ad /qpid/java/common
parent497acdc4b9b7f2233d094864bd01a665cbd3e8ac (diff)
downloadqpid-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.java6
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java17
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);
}
}