You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2009/08/27 17:12:28 UTC

svn commit: r808451 - in /qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server: flow/AbstractFlowCreditManager.java flow/CreditCreditManager.java flow/WindowCreditManager.java subscription/Subscription_0_10.java

Author: rgodfrey
Date: Thu Aug 27 15:12:27 2009
New Revision: 808451

URL: http://svn.apache.org/viewvc?rev=808451&view=rev
Log:
state change fixes

Modified:
    qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/flow/AbstractFlowCreditManager.java
    qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/flow/CreditCreditManager.java
    qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/flow/WindowCreditManager.java
    qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java

Modified: qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/flow/AbstractFlowCreditManager.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/flow/AbstractFlowCreditManager.java?rev=808451&r1=808450&r2=808451&view=diff
==============================================================================
--- qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/flow/AbstractFlowCreditManager.java (original)
+++ qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/flow/AbstractFlowCreditManager.java Thu Aug 27 15:12:27 2009
@@ -31,19 +31,28 @@
 
     public final void addStateListener(FlowCreditManagerListener listener)
     {
-        _listeners.add(listener);
+        synchronized(_listeners)
+        {
+            _listeners.add(listener);
+        }
     }
 
     public final boolean removeListener(FlowCreditManagerListener listener)
     {
-        return _listeners.remove(listener);
+        synchronized(_listeners)
+        {
+            return _listeners.remove(listener);
+        }
     }
 
     private void notifyListeners(final boolean suspended)
     {
-        for(FlowCreditManagerListener listener : _listeners)
+        synchronized(_listeners)
         {
-            listener.creditStateChanged(!suspended);
+            for(FlowCreditManagerListener listener : _listeners)
+            {
+                listener.creditStateChanged(!suspended);
+            }
         }
     }
 

Modified: qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/flow/CreditCreditManager.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/flow/CreditCreditManager.java?rev=808451&r1=808450&r2=808451&view=diff
==============================================================================
--- qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/flow/CreditCreditManager.java (original)
+++ qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/flow/CreditCreditManager.java Thu Aug 27 15:12:27 2009
@@ -37,6 +37,8 @@
     {
         _bytesCredit = bytesCredit;
         _messageCredit = messageCredit;
+        setSuspended(!hasCredit());
+
     }
 
 

Modified: qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/flow/WindowCreditManager.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/flow/WindowCreditManager.java?rev=808451&r1=808450&r2=808451&view=diff
==============================================================================
--- qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/flow/WindowCreditManager.java (original)
+++ qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/flow/WindowCreditManager.java Thu Aug 27 15:12:27 2009
@@ -39,6 +39,8 @@
     {
         _bytesCreditLimit = bytesCreditLimit;
         _messageCreditLimit = messageCreditLimit;
+        setSuspended(!hasCredit());
+
     }
 
 

Modified: qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java?rev=808451&r1=808450&r2=808451&view=diff
==============================================================================
--- qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java (original)
+++ qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java Thu Aug 27 15:12:27 2009
@@ -88,6 +88,7 @@
         _creditManager = creditManager;
         _filters = filters;
         _creditManager.addStateListener(this);
+        _state.set(_creditManager.hasCredit() ? State.ACTIVE : State.SUSPENDED);
 
     }
 
@@ -484,7 +485,13 @@
             default:
                 throw new RuntimeException("Unknown message flow mode: " + flowMode);
         }
+        if(_state.compareAndSet(State.ACTIVE, State.SUSPENDED))
+        {
+            _stateListener.stateChange(this, State.ACTIVE, State.SUSPENDED);
+        }
+
         _creditManager.addStateListener(this);
+
     }
 
     public boolean isStopped()



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org