You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by lq...@apache.org on 2016/11/10 13:15:53 UTC

svn commit: r1769109 - /qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/

Author: lquack
Date: Thu Nov 10 13:15:53 2016
New Revision: 1769109

URL: http://svn.apache.org/viewvc?rev=1769109&view=rev
Log:
make setFlowMode on AMQP 0-10 spec compliant

Modified:
    qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java
    qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/CreditCreditManager.java
    qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/FlowCreditManager_0_10.java
    qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
    qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/WindowCreditManager.java

Modified: qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java?rev=1769109&r1=1769108&r2=1769109&view=diff
==============================================================================
--- qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java (original)
+++ qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java Thu Nov 10 13:15:53 2016
@@ -529,8 +529,6 @@ public class ConsumerTarget_0_10 extends
 
     public void stop()
     {
-        updateState(State.ACTIVE, State.SUSPENDED);
-        _stopped.set(true);
         FlowCreditManager_0_10 creditManager = getCreditManager();
         boolean hasCredit = creditManager.hasCredit();
         creditManager.clearCredit();
@@ -555,8 +553,6 @@ public class ConsumerTarget_0_10 extends
                 break;
         }
 
-        _stopped.set(false);
-
         boolean newHasCredit = creditManager.hasCredit();
         if(newHasCredit)
         {
@@ -584,12 +580,12 @@ public class ConsumerTarget_0_10 extends
                 throw new ConnectionScopedRuntimeException("Unknown message flow mode: " + flowMode);
         }
         _flowMode = flowMode;
-        updateState(State.ACTIVE, State.SUSPENDED);
+        updateNotifyWorkDesired();
     }
 
-    public boolean isStopped()
+    public boolean isFlowModeChangeAllowed()
     {
-        return _stopped.get();
+        return _creditManager.hasNeitherCredit();
     }
 
     public void flush()

Modified: qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/CreditCreditManager.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/CreditCreditManager.java?rev=1769109&r1=1769108&r2=1769109&view=diff
==============================================================================
--- qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/CreditCreditManager.java (original)
+++ qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/CreditCreditManager.java Thu Nov 10 13:15:53 2016
@@ -67,6 +67,12 @@ public class CreditCreditManager impleme
         return (_bytesCredit != 0L  && _messageCredit != 0L && !_protocolEngine.isTransportBlockedForWriting());
     }
 
+    @Override
+    public boolean hasNeitherCredit()
+    {
+        return _bytesCredit == 0L && _messageCredit == 0L;
+    }
+
     public synchronized boolean useCreditForMessage(long msgSize)
     {
         if (_protocolEngine.isTransportBlockedForWriting())

Modified: qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/FlowCreditManager_0_10.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/FlowCreditManager_0_10.java?rev=1769109&r1=1769108&r2=1769109&view=diff
==============================================================================
--- qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/FlowCreditManager_0_10.java (original)
+++ qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/FlowCreditManager_0_10.java Thu Nov 10 13:15:53 2016
@@ -27,4 +27,6 @@ public interface FlowCreditManager_0_10
     void addCredit(long count, long bytes);
 
     void clearCredit();
+
+    boolean hasNeitherCredit();
 }

Modified: qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java?rev=1769109&r1=1769108&r2=1769109&view=diff
==============================================================================
--- qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java (original)
+++ qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java Thu Nov 10 13:15:53 2016
@@ -1681,10 +1681,14 @@ public class ServerSessionDelegate exten
         {
             exception(session, sfm, ExecutionErrorCode.NOT_FOUND, "not-found: destination '" + destination + "'");
         }
-        else if(sub.isStopped())
+        else if(sub.isFlowModeChangeAllowed())
         {
             sub.setFlowMode(sfm.getFlowMode());
         }
+        else
+        {
+            exception(session, sfm, ExecutionErrorCode.PRECONDITION_FAILED, "destination '" + destination + "' has credit");
+        }
     }
 
     @Override

Modified: qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/WindowCreditManager.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/WindowCreditManager.java?rev=1769109&r1=1769108&r2=1769109&view=diff
==============================================================================
--- qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/WindowCreditManager.java (original)
+++ qpid/java/branches/remove-queue-runner/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/WindowCreditManager.java Thu Nov 10 13:15:53 2016
@@ -89,6 +89,12 @@ public class WindowCreditManager impleme
                 && !_protocolEngine.isTransportBlockedForWriting();
     }
 
+    @Override
+    public boolean hasNeitherCredit()
+    {
+        return _bytesCreditLimit == 0L && _messageCreditLimit == 0L;
+    }
+
     public synchronized boolean useCreditForMessage(final long msgSize)
     {
         if (_protocolEngine.isTransportBlockedForWriting())



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org