diff options
Diffstat (limited to 'java/common/src/main/java/org/apache/qpid/transport/Session.java')
-rw-r--r-- | java/common/src/main/java/org/apache/qpid/transport/Session.java | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/java/common/src/main/java/org/apache/qpid/transport/Session.java b/java/common/src/main/java/org/apache/qpid/transport/Session.java index 5b458aa858..10ca6cfb0a 100644 --- a/java/common/src/main/java/org/apache/qpid/transport/Session.java +++ b/java/common/src/main/java/org/apache/qpid/transport/Session.java @@ -268,6 +268,23 @@ public class Session extends Invoker public void invoke(Method m) { + if (closed.get()) + { + List<ExecutionException> exc = getExceptions(); + if (!exc.isEmpty()) + { + throw new SessionException(exc); + } + else if (close != null) + { + throw new ConnectionException(close); + } + else + { + throw new SessionClosedException(); + } + } + if (m.getEncodedTrack() == Frame.L4) { synchronized (commands) @@ -379,6 +396,13 @@ public class Session extends Invoker } } + private ConnectionClose close = null; + + void closeCode(ConnectionClose close) + { + this.close = close; + } + List<ExecutionException> getExceptions() { synchronized (exceptions) |