diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2013-09-30 14:16:35 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2013-09-30 14:16:35 +0000 |
| commit | 5285ab11ce4210d4a38a27833ba1aea028f483fa (patch) | |
| tree | 788dc05fb7229e9e3e968f717a1ac5360f31ac43 /qpid/java/amqp-1-0-client | |
| parent | 81445eee4f4a51d6472fd43d6d0fb0722fbeeca6 (diff) | |
| download | qpid-python-5285ab11ce4210d4a38a27833ba1aea028f483fa.tar.gz | |
QPID-5195 : Client does not properly support channel-max
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1527584 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/amqp-1-0-client')
4 files changed, 48 insertions, 19 deletions
diff --git a/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Util.java b/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Util.java index 33af4729d9..4421c44a61 100644 --- a/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Util.java +++ b/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Util.java @@ -502,9 +502,11 @@ public abstract class Util { Container container = getContainerName() == null ? new Container() : new Container(getContainerName()); return getUsername() == null ? new Connection(getHost(), getPort(), null, null, _frameSize, container, - _remoteHost == null ? getHost() : _remoteHost, _useSSL) + _remoteHost == null ? getHost() : _remoteHost, _useSSL, + 0) : new Connection(getHost(), getPort(), getUsername(), getPassword(), _frameSize, - container, _remoteHost == null ? getHost() : _remoteHost, _useSSL); + container, _remoteHost == null ? getHost() : _remoteHost, _useSSL, + 0); } public String getContainerName() diff --git a/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Connection.java b/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Connection.java index 350c6e690c..0d634c0f1a 100644 --- a/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Connection.java +++ b/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Connection.java @@ -108,7 +108,7 @@ public class Connection implements SocketExceptionHandler final Container container, final String remoteHostname) throws ConnectionException { - this(address,port,username,password,maxFrameSize,container,remoteHostname,false); + this(address,port,username,password,maxFrameSize,container,remoteHostname,false,-1); } public Connection(final String address, @@ -118,7 +118,7 @@ public class Connection implements SocketExceptionHandler final Container container, final boolean ssl) throws ConnectionException { - this(address, port, username, password, MAX_FRAME_SIZE,container,null,ssl); + this(address, port, username, password, MAX_FRAME_SIZE,container,null,ssl,-1); } public Connection(final String address, @@ -128,28 +128,32 @@ public class Connection implements SocketExceptionHandler final String remoteHost, final boolean ssl) throws ConnectionException { - this(address, port, username, password, MAX_FRAME_SIZE,new Container(),remoteHost,ssl); + this(address, port, username, password, MAX_FRAME_SIZE,new Container(),remoteHost,ssl,-1); } public Connection(final String address, - final int port, - final String username, - final String password, - final Container container, - final String remoteHost, - final boolean ssl) throws ConnectionException + final int port, + final String username, + final String password, + final Container container, + final String remoteHost, + final boolean ssl, + final int channelMax) throws ConnectionException { - this(address, port, username, password, MAX_FRAME_SIZE,container,remoteHost,ssl); + this(address, port, username, password, MAX_FRAME_SIZE,container,remoteHost,ssl, + channelMax); } public Connection(final String address, - final int port, - final String username, - final String password, - final int maxFrameSize, - final Container container, - final String remoteHostname, boolean ssl) throws ConnectionException + final int port, + final String username, + final String password, + final int maxFrameSize, + final Container container, + final String remoteHostname, + boolean ssl, + int channelMax) throws ConnectionException { _address = address; @@ -176,6 +180,10 @@ public class Connection implements SocketExceptionHandler } }; _conn = new ConnectionEndpoint(container, principal, password); + if(channelMax >= 0) + { + _conn.setChannelMax((short)channelMax); + } _conn.setDesiredMaxFrameSize(UnsignedInteger.valueOf(maxFrameSize)); _conn.setRemoteAddress(s.getRemoteSocketAddress()); _conn.setRemoteHostname(remoteHostname); diff --git a/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/ConnectionException.java b/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/ConnectionException.java index 4271ed3e76..569c1f129d 100644 --- a/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/ConnectionException.java +++ b/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/ConnectionException.java @@ -22,6 +22,11 @@ package org.apache.qpid.amqp_1_0.client; public class ConnectionException extends Exception { + protected ConnectionException(final String message) + { + super(message); + } + public ConnectionException(Throwable cause) { super(cause); diff --git a/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Session.java b/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Session.java index 626ea0f34d..21af6950d8 100644 --- a/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Session.java +++ b/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Session.java @@ -51,10 +51,14 @@ public class Session private TransactionController _sessionLocalTC; private Connection _connection; - public Session(final Connection connection, String name) + public Session(final Connection connection, String name) throws SessionCreationException { _connection = connection; _endpoint = connection.getEndpoint().createSession(name); + if(_endpoint == null) + { + throw new SessionCreationException("Cannot create session as all channels are in use"); + } _sectionEncoder = new SectionEncoderImpl(connection.getEndpoint().getDescribedTypeRegistry()); _sectionDecoder = new SectionDecoderImpl(connection.getEndpoint().getDescribedTypeRegistry()); } @@ -385,4 +389,14 @@ public class Session { public void configureSource(final Source source); } + + private class SessionCreationException extends ConnectionException + { + + private SessionCreationException(final String message) + { + super(message); + } + + } } |
