You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2011/04/27 19:07:29 UTC

svn commit: r1097182 - /activemq/activemq-apollo/trunk/apollo-tcp/src/main/java/org/apache/activemq/apollo/transport/tcp/TcpTransport.java

Author: chirino
Date: Wed Apr 27 17:07:29 2011
New Revision: 1097182

URL: http://svn.apache.org/viewvc?rev=1097182&view=rev
Log:
Making more socket options configurable on the tcp transport.

Modified:
    activemq/activemq-apollo/trunk/apollo-tcp/src/main/java/org/apache/activemq/apollo/transport/tcp/TcpTransport.java

Modified: activemq/activemq-apollo/trunk/apollo-tcp/src/main/java/org/apache/activemq/apollo/transport/tcp/TcpTransport.java
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-tcp/src/main/java/org/apache/activemq/apollo/transport/tcp/TcpTransport.java?rev=1097182&r1=1097181&r2=1097182&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-tcp/src/main/java/org/apache/activemq/apollo/transport/tcp/TcpTransport.java (original)
+++ activemq/activemq-apollo/trunk/apollo-tcp/src/main/java/org/apache/activemq/apollo/transport/tcp/TcpTransport.java Wed Apr 27 17:07:29 2011
@@ -185,6 +185,16 @@ public class TcpTransport extends JavaBa
 
     int max_read_rate;
     int max_write_rate;
+    int receive_buffer_size = 1024*64;
+
+
+    public static final int IPTOS_LOWCOST = 0x02;
+    public static final int IPTOS_RELIABILITY = 0x04;
+    public static final int IPTOS_THROUGHPUT = 0x08;
+    public static final int IPTOS_LOWDELAY = 0x10;
+
+    int traffic_class = IPTOS_THROUGHPUT;
+
     protected RateLimitingChannel rateLimitingChannel;
     String localAddress;
     String remoteAddress;
@@ -317,16 +327,37 @@ public class TcpTransport extends JavaBa
 
     public void connected(SocketChannel channel) throws IOException, Exception {
         this.channel = channel;
+        initializeChannel();
 
         if( codec !=null ) {
             initializeCodec();
         }
+        this.socketState = new CONNECTED();
+    }
 
+    private void initializeChannel() throws IOException {
         this.channel.configureBlocking(false);
-        channel.socket().setSoLinger(true, 0);
-        channel.socket().setTcpNoDelay(true);
-
-        this.socketState = new CONNECTED();
+        Socket socket = channel.socket();
+        try {
+            socket.setReuseAddress(true);
+        } catch (SocketException e) {
+        }
+        try {
+            socket.setSoLinger(true, 0);
+        } catch (SocketException e) {
+        }
+        try {
+            socket.setTrafficClass(traffic_class);
+        } catch (SocketException e) {
+        }
+        try {
+            socket.setTcpNoDelay(true);
+        } catch (SocketException e) {
+        }
+        try {
+            socket.setReceiveBufferSize(receive_buffer_size);
+        } catch (SocketException e) {
+        }
     }
 
     protected void initializeCodec() {
@@ -336,7 +367,7 @@ public class TcpTransport extends JavaBa
 
     public void connecting(URI remoteLocation, URI localLocation) throws IOException, Exception {
         this.channel = SocketChannel.open();
-        this.channel.configureBlocking(false);
+        initializeChannel();
         this.remoteLocation = remoteLocation;
         this.localLocation = localLocation;
 
@@ -742,4 +773,19 @@ public class TcpTransport extends JavaBa
         this.max_write_rate = max_write_rate;
     }
 
+    public int getTraffic_class() {
+        return traffic_class;
+    }
+
+    public void setTraffic_class(int traffic_class) {
+        this.traffic_class = traffic_class;
+    }
+
+    public int getReceive_buffer_size() {
+        return receive_buffer_size;
+    }
+
+    public void setReceive_buffer_size(int receive_buffer_size) {
+        this.receive_buffer_size = receive_buffer_size;
+    }
 }