diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2014-10-17 19:41:37 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2014-10-17 19:41:37 +0000 |
| commit | 9006d5e2237751a43b8d531980e9b1499acb96d6 (patch) | |
| tree | cebe936d36a7a7d41112dc475e70daccb2c5a250 /qpid/java/common/src | |
| parent | 7d2471990e0271d4714cf493643be67165d03834 (diff) | |
| download | qpid-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.java | 6 | ||||
| -rw-r--r-- | qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java | 38 |
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) { |
