summaryrefslogtreecommitdiff
path: root/qpid/java/common/src
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-10-17 19:41:37 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-10-17 19:41:37 +0000
commit9006d5e2237751a43b8d531980e9b1499acb96d6 (patch)
treecebe936d36a7a7d41112dc475e70daccb2c5a250 /qpid/java/common/src
parent7d2471990e0271d4714cf493643be67165d03834 (diff)
downloadqpid-python-9006d5e2237751a43b8d531980e9b1499acb96d6.tar.gz
QPID-6165 : [Java Broker] Allow the number of open connections to be limited on a per port basis
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1632655 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/common/src')
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/protocol/ProtocolEngineFactory.java6
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java38
2 files changed, 28 insertions, 16 deletions
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/protocol/ProtocolEngineFactory.java b/qpid/java/common/src/main/java/org/apache/qpid/protocol/ProtocolEngineFactory.java
index 885a6a975d..50448f1fe1 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/protocol/ProtocolEngineFactory.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/protocol/ProtocolEngineFactory.java
@@ -20,10 +20,12 @@
*/
package org.apache.qpid.protocol;
+import java.net.SocketAddress;
+
public interface ProtocolEngineFactory
{
// Returns a new instance of a ProtocolEngine
- ProtocolEngine newProtocolEngine();
+ ProtocolEngine newProtocolEngine(final SocketAddress remoteSocketAddress);
-} \ No newline at end of file
+}
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java
index 068e19fbc4..a2cc74ef78 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java
@@ -243,28 +243,38 @@ public class IoNetworkTransport implements OutgoingNetworkTransport, IncomingNet
try
{
socket = _serverSocket.accept();
- socket.setTcpNoDelay(_config.getTcpNoDelay());
- socket.setSoTimeout(1000 * HANSHAKE_TIMEOUT);
- final Integer sendBufferSize = _config.getSendBufferSize();
- final Integer receiveBufferSize = _config.getReceiveBufferSize();
+ ProtocolEngine engine = _factory.newProtocolEngine(socket.getRemoteSocketAddress());
- socket.setSendBufferSize(sendBufferSize);
- socket.setReceiveBufferSize(receiveBufferSize);
+ if(engine != null)
+ {
+ socket.setTcpNoDelay(_config.getTcpNoDelay());
+ socket.setSoTimeout(1000 * HANSHAKE_TIMEOUT);
+
+ final Integer sendBufferSize = _config.getSendBufferSize();
+ final Integer receiveBufferSize = _config.getReceiveBufferSize();
+
+ socket.setSendBufferSize(sendBufferSize);
+ socket.setReceiveBufferSize(receiveBufferSize);
- ProtocolEngine engine = _factory.newProtocolEngine();
- final IdleTimeoutTicker ticker = new IdleTimeoutTicker(engine, TIMEOUT);
- NetworkConnection connection = new IoNetworkConnection(socket, engine, sendBufferSize, receiveBufferSize, _timeout,
- ticker);
+ final IdleTimeoutTicker ticker = new IdleTimeoutTicker(engine, TIMEOUT);
+ NetworkConnection connection =
+ new IoNetworkConnection(socket, engine, sendBufferSize, receiveBufferSize, _timeout,
+ ticker);
- connection.setMaxReadIdle(HANSHAKE_TIMEOUT);
+ connection.setMaxReadIdle(HANSHAKE_TIMEOUT);
- ticker.setConnection(connection);
+ ticker.setConnection(connection);
- engine.setNetworkConnection(connection, connection.getSender());
+ engine.setNetworkConnection(connection, connection.getSender());
- connection.start();
+ connection.start();
+ }
+ else
+ {
+ socket.close();
+ }
}
catch(RuntimeException e)
{