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