summaryrefslogtreecommitdiff
path: root/qpid/java/amqp-1-0-client
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2013-09-30 14:16:35 +0000
committerRobert Godfrey <rgodfrey@apache.org>2013-09-30 14:16:35 +0000
commit5285ab11ce4210d4a38a27833ba1aea028f483fa (patch)
tree788dc05fb7229e9e3e968f717a1ac5360f31ac43 /qpid/java/amqp-1-0-client
parent81445eee4f4a51d6472fd43d6d0fb0722fbeeca6 (diff)
downloadqpid-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')
-rw-r--r--qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Util.java6
-rw-r--r--qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Connection.java40
-rw-r--r--qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/ConnectionException.java5
-rw-r--r--qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Session.java16
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);
+ }
+
+ }
}