diff options
| author | Rafael H. Schloming <rhs@apache.org> | 2009-02-19 15:09:26 +0000 |
|---|---|---|
| committer | Rafael H. Schloming <rhs@apache.org> | 2009-02-19 15:09:26 +0000 |
| commit | 3452ccc779803371e6ba04a1a3b9bec0d973d11d (patch) | |
| tree | 2e386ff54b83830477a70e694e8f5c914da13316 /qpid/java/common | |
| parent | f824b8b88b8065716006380306f0a6274ec85f2e (diff) | |
| download | qpid-python-3452ccc779803371e6ba04a1a3b9bec0d973d11d.tar.gz | |
QPID-1665: add a timer to ensure message acking is never delayed more than 1000 ms by default, this is configurable by qpid.session.max_ack_delay
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@745892 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/common')
| -rw-r--r-- | qpid/java/common/Composite.tpl | 1 | ||||
| -rw-r--r-- | qpid/java/common/Option.tpl | 1 | ||||
| -rw-r--r-- | qpid/java/common/src/main/java/org/apache/qpid/transport/Method.java | 11 | ||||
| -rw-r--r-- | qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java | 15 |
4 files changed, 27 insertions, 1 deletions
diff --git a/qpid/java/common/Composite.tpl b/qpid/java/common/Composite.tpl index 17cf846d8c..c46d0a12cc 100644 --- a/qpid/java/common/Composite.tpl +++ b/qpid/java/common/Composite.tpl @@ -145,6 +145,7 @@ if options or base == "Method": if base == "Method": out(""" case SYNC: this.setSync(true); break; case BATCH: this.setBatch(true); break; + case UNRELIABLE: this.setUnreliable(true); break; """) out(""" case NONE: break; default: throw new IllegalArgumentException("invalid option: " + _options[i]); diff --git a/qpid/java/common/Option.tpl b/qpid/java/common/Option.tpl index 776b211ad5..c22b35b999 100644 --- a/qpid/java/common/Option.tpl +++ b/qpid/java/common/Option.tpl @@ -37,5 +37,6 @@ for c in composites: options[option] = None out(" $option,\n")} BATCH, + UNRELIABLE, NONE } diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/Method.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/Method.java index 09cfd119be..611c742fb1 100644 --- a/qpid/java/common/src/main/java/org/apache/qpid/transport/Method.java +++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/Method.java @@ -48,6 +48,7 @@ public abstract class Method extends Struct implements ProtocolEvent private boolean idSet = false; private boolean sync = false; private boolean batch = false; + private boolean unreliable = false; public final int getId() { @@ -90,6 +91,16 @@ public abstract class Method extends Struct implements ProtocolEvent this.batch = value; } + public final boolean isUnreliable() + { + return unreliable; + } + + final void setUnreliable(boolean value) + { + this.unreliable = value; + } + public abstract boolean hasPayload(); public Header getHeader() diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java index f94edcc655..4079097f96 100644 --- a/qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java +++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java @@ -384,7 +384,15 @@ public class Session extends SessionInvoker { copy = processed.copy(); } - sessionCompleted(copy, options); + + synchronized (commands) + { + if (state == DETACHED) + { + return; + } + sessionCompleted(copy, options); + } } void knownComplete(RangeSet kc) @@ -484,6 +492,11 @@ public class Session extends SessionInvoker synchronized (commands) { + if (state == DETACHED && m.isUnreliable()) + { + return; + } + if (state != OPEN && state != CLOSED) { Waiter w = new Waiter(commands, timeout); |
