Author: rgodfrey
Date: Thu Oct  4 09:38:38 2012
New Revision: 1393971

URL: http://svn.apache.org/viewvc?rev=1393971&view=rev
Log:
PROTON-55 : Correct accounting for initial delivery-count at the receiver

Modified:
    
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
    
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportLink.java
    
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportSender.java

Modified: 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java?rev=1393971&r1=1393970&r2=1393971&view=diff
==============================================================================
--- 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
 (original)
+++ 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
 Thu Oct  4 09:38:38 2012
@@ -958,6 +958,10 @@ public class TransportImpl extends Endpo
                 {
                     link = transportLink.getLink();
                 }
+                if(attach.getRole() == Role.SENDER)
+                {
+                    
transportLink.setDeliveryCount(attach.getInitialDeliveryCount());
+                }
 
                 link.setRemoteState(EndpointState.ACTIVE);
                 Source source = (Source) attach.getSource();

Modified: 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportLink.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportLink.java?rev=1393971&r1=1393970&r2=1393971&view=diff
==============================================================================
--- 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportLink.java
 (original)
+++ 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportLink.java
 Thu Oct  4 09:38:38 2012
@@ -29,7 +29,7 @@ class TransportLink<T extends LinkImpl>
     private UnsignedInteger _localHandle;
     private String _name;
     private UnsignedInteger _remoteHandle;
-    private UnsignedInteger _deliveryCount = UnsignedInteger.ZERO;
+    private UnsignedInteger _deliveryCount;
     private UnsignedInteger _linkCredit = UnsignedInteger.ZERO;
     private T _link;
     private UnsignedInteger _remoteDeliveryCount;
@@ -178,4 +178,9 @@ class TransportLink<T extends LinkImpl>
     {
         _attachSent = true;
     }
+
+    public void setRemoteDeliveryCount(UnsignedInteger remoteDeliveryCount)
+    {
+        _remoteDeliveryCount = remoteDeliveryCount;
+    }
 }

Modified: 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportSender.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportSender.java?rev=1393971&r1=1393970&r2=1393971&view=diff
==============================================================================
--- 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportSender.java
 (original)
+++ 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportSender.java
 Thu Oct  4 09:38:38 2012
@@ -27,10 +27,12 @@ import org.apache.qpid.proton.type.trans
 class TransportSender extends TransportLink<SenderImpl>
 {
     private boolean _drain;
+    private static final UnsignedInteger ORIGINAL_DELIVERY_COUNT = 
UnsignedInteger.ZERO;
 
     TransportSender(SenderImpl link)
     {
         super(link);
+        setDeliveryCount(ORIGINAL_DELIVERY_COUNT);
         link.setTransportLink(this);
     }
 
@@ -42,7 +44,9 @@ class TransportSender extends TransportL
         getLink().setDrain(flow.getDrain());
         int oldCredit = getLink().getCredit();
         UnsignedInteger oldLimit = getLinkCredit().add(getDeliveryCount());
-        UnsignedInteger transferLimit = 
flow.getLinkCredit().add(flow.getDeliveryCount());
+        UnsignedInteger transferLimit = 
flow.getLinkCredit().add(flow.getDeliveryCount() == null
+                                                                         ? 
ORIGINAL_DELIVERY_COUNT
+                                                                         : 
flow.getDeliveryCount());
         UnsignedInteger linkCredit = 
transferLimit.subtract(getDeliveryCount());
 
         setLinkCredit(linkCredit);



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to