Author: chirino
Date: Wed Sep 5 14:51:40 2007
New Revision: 573080
URL: http://svn.apache.org/viewvc?rev=573080&view=rev
Log:
Fix for https://issues.apache.org/activemq/browse/AMQ-1156
We now actually update the tcpNoDelay setting on the socket once the wireformat
options are negociated. This allows
the client to control if his socket and the server's socket use the option. By
default tcpNoDelay is enabled.
the client should use a URL like
-Durl=tcp://localhost:61616?wireFormat.tcpNoDelayEnabled=false to disable
tcpNoDelay on both the client and the server socket.
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/WireFormatNegotiator.java
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/tcp/TcpTransport.java
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/WireFormatNegotiator.java
URL:
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/WireFormatNegotiator.java?rev=573080&r1=573079&r2=573080&view=diff
==============================================================================
---
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/WireFormatNegotiator.java
(original)
+++
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/WireFormatNegotiator.java
Wed Sep 5 14:51:40 2007
@@ -18,6 +18,7 @@
import java.io.IOException;
import java.io.InterruptedIOException;
+import java.net.Socket;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -111,6 +112,10 @@
}
wireFormat.renegotiateWireFormat(info);
+ Socket socket = next.narrow(Socket.class);
+ if (socket != null) {
+ socket.setTcpNoDelay(wireFormat.isTcpNoDelayEnabled());
+ }
if (LOG.isDebugEnabled()) {
LOG.debug(this + " after negotiation: " + wireFormat);
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/tcp/TcpTransport.java
URL:
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/tcp/TcpTransport.java?rev=573080&r1=573079&r2=573080&view=diff
==============================================================================
---
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/tcp/TcpTransport.java
(original)
+++
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/tcp/TcpTransport.java
Wed Sep 5 14:51:40 2007
@@ -483,5 +483,13 @@
}
return null;
}
+
+ @Override
+ public <T> T narrow(Class<T> target) {
+ if (target == Socket.class) {
+ return target.cast(socket);
+ }
+ return super.narrow(target);
+ }
}