[hornetq-commits] JBoss hornetq SVN: r11594 - trunk/hornetq-core/src/main/java/org/hornetq/core/remoting/impl/netty.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Oct 25 10:51:22 EDT 2011


Author: borges
Date: 2011-10-25 10:51:22 -0400 (Tue, 25 Oct 2011)
New Revision: 11594

Modified:
   trunk/hornetq-core/src/main/java/org/hornetq/core/remoting/impl/netty/NettyConnection.java
Log:
Merge JBPAPP-7353 fixes to trunk.

Modified: trunk/hornetq-core/src/main/java/org/hornetq/core/remoting/impl/netty/NettyConnection.java
===================================================================
--- trunk/hornetq-core/src/main/java/org/hornetq/core/remoting/impl/netty/NettyConnection.java	2011-10-25 14:42:44 UTC (rev 11593)
+++ trunk/hornetq-core/src/main/java/org/hornetq/core/remoting/impl/netty/NettyConnection.java	2011-10-25 14:51:22 UTC (rev 11594)
@@ -14,7 +14,7 @@
 package org.hornetq.core.remoting.impl.netty;
 
 import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.Semaphore;
 
 import org.hornetq.api.core.HornetQBuffer;
 import org.hornetq.api.core.HornetQBuffers;
@@ -35,7 +35,7 @@
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
  * @author <a href="mailto:ataylor at redhat.com">Andy Taylor</a>
  * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- * 
+ *
  * @version <tt>$Revision$</tt>
  */
 public class NettyConnection implements Connection
@@ -60,10 +60,10 @@
 
    private volatile HornetQBuffer batchBuffer;
 
-   private final AtomicBoolean writeLock = new AtomicBoolean(false);
-   
-   private Set<ReadyListener> readyListeners = new ConcurrentHashSet<ReadyListener>();
+   private final Semaphore writeLock = new Semaphore(1);
 
+   private final Set<ReadyListener> readyListeners = new ConcurrentHashSet<ReadyListener>();
+
    // Static --------------------------------------------------------
 
    // Constructors --------------------------------------------------
@@ -75,7 +75,7 @@
    {
       this(null, channel, listener, batchingEnabled, directDeliver);
    }
-   
+
    public NettyConnection(final Acceptor acceptor,
                           final Channel channel,
                           final ConnectionLifeCycleListener listener,
@@ -152,7 +152,7 @@
          return;
       }
 
-      if (writeLock.compareAndSet(false, true))
+      if (writeLock.tryAcquire())
       {
          try
          {
@@ -165,7 +165,7 @@
          }
          finally
          {
-            writeLock.set(false);
+            writeLock.release();
          }
       }
    }
@@ -177,11 +177,9 @@
 
    public void write(HornetQBuffer buffer, final boolean flush, final boolean batched)
    {
-      while (!writeLock.compareAndSet(false, true))
+      try
       {
-         Thread.yield();
-      }
-
+      writeLock.acquire();
       try
       {
          if (batchBuffer == null && batchingEnabled && batched && !flush)
@@ -243,8 +241,13 @@
       }
       finally
       {
-         writeLock.set(false);
+         writeLock.release();
+         }
       }
+      catch (InterruptedException e)
+      {
+         Thread.currentThread().interrupt();
+      }
    }
 
    public String getRemoteAddress()
@@ -256,17 +259,17 @@
    {
       return directDeliver;
    }
-   
+
    public void addReadyListener(final ReadyListener listener)
    {
       readyListeners.add(listener);
    }
-   
+
    public void removeReadyListener(final ReadyListener listener)
    {
       readyListeners.remove(listener);
    }
-   
+
    public void fireReady(final boolean ready)
    {
       for (ReadyListener listener: readyListeners)



More information about the hornetq-commits mailing list