From 6439bba5cc09d6febc59bdc9e0d9bc25f1f1eb18 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Wed, 01 Sep 2010 09:04:15 +0000
Subject: [PATCH] Various improvements:

---
 sdk/src/com/sun/opends/sdk/ldap/GlobalTransportFactory.java |   32 +++++++++++++++++++++++++++++++-
 1 files changed, 31 insertions(+), 1 deletions(-)

diff --git a/sdk/src/com/sun/opends/sdk/ldap/GlobalTransportFactory.java b/sdk/src/com/sun/opends/sdk/ldap/GlobalTransportFactory.java
index b3e1279..85d102d 100644
--- a/sdk/src/com/sun/opends/sdk/ldap/GlobalTransportFactory.java
+++ b/sdk/src/com/sun/opends/sdk/ldap/GlobalTransportFactory.java
@@ -76,6 +76,12 @@
 
   private int selectors;
 
+  private int linger = -1;
+
+  private boolean tcpNoDelay = true;
+
+  private boolean reuseAddress = true;
+
   private TCPNIOTransport globalTCPNIOTransport = null;
 
 
@@ -117,12 +123,15 @@
    * @return instance of TCP {@link com.sun.grizzly.Transport}.
    */
   @Override
-  public TCPNIOTransport createTCPTransport()
+  public synchronized TCPNIOTransport createTCPTransport()
   {
     if (globalTCPNIOTransport == null)
     {
       globalTCPNIOTransport = setupTransport(new TCPNIOTransport());
       globalTCPNIOTransport.setSelectorRunnersCount(selectors);
+      globalTCPNIOTransport.setLinger(linger);
+      globalTCPNIOTransport.setTcpNoDelay(tcpNoDelay);
+      globalTCPNIOTransport.setReuseAddress(reuseAddress);
 
       try
       {
@@ -178,6 +187,27 @@
     ThreadPoolConfig.DEFAULT.setMaxPoolSize(threads);
     ThreadPoolConfig.DEFAULT.setPoolName("OpenDS SDK Worker(Grizzly)");
 
+    final String lingerStr = System
+        .getProperty("org.opends.sdk.ldap.transport.linger");
+    if (lingerStr != null)
+    {
+      linger = Integer.parseInt(lingerStr);
+    }
+
+    final String tcpNoDelayStr = System
+        .getProperty("org.opends.sdk.ldap.transport.tcpNoDelay");
+    if (tcpNoDelayStr != null)
+    {
+      tcpNoDelay = Integer.parseInt(tcpNoDelayStr) != 0;
+    }
+
+    final String reuseAddressStr = System
+        .getProperty("org.opends.sdk.ldap.transport.reuseAddress");
+    if (reuseAddressStr != null)
+    {
+      reuseAddress = Integer.parseInt(reuseAddressStr) != 0;
+    }
+
     super.initialize();
   }
 }

--
Gitblit v1.10.0