You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2012/11/21 20:31:12 UTC

svn commit: r1412239 - in /qpid/trunk/qpid/cpp/src/qpid/broker: Protocol.cpp SemanticState.cpp amqp_0_10/MessageTransfer.cpp amqp_0_10/MessageTransfer.h

Author: gsim
Date: Wed Nov 21 19:31:08 2012
New Revision: 1412239

URL: http://svn.apache.org/viewvc?rev=1412239&view=rev
Log:
QPID-4448: fix credit checking on 0-10 path when message is of 1.0 format

Modified:
    qpid/trunk/qpid/cpp/src/qpid/broker/Protocol.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.h

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Protocol.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Protocol.cpp?rev=1412239&r1=1412238&r2=1412239&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Protocol.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Protocol.cpp Wed Nov 21 19:31:08 2012
@@ -42,6 +42,7 @@ boost::intrusive_ptr<const qpid::broker:
     for (Protocols::const_iterator i = protocols.begin(); !transfer && i != protocols.end(); ++i) {
         transfer = i->second->translate(m);
     }
+    if (!transfer) throw new Exception("Could not convert message into 0-10");
     return transfer;
 }
 boost::shared_ptr<RecoverableMessage> ProtocolRegistry::recover(qpid::framing::Buffer& b)

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp?rev=1412239&r1=1412238&r2=1412239&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp Wed Nov 21 19:31:08 2012
@@ -398,7 +398,8 @@ ostream& operator<<(ostream& o, const Co
 void SemanticState::ConsumerImpl::allocateCredit(const Message& msg)
 {
     Credit original = credit;
-    credit.consume(1, qpid::broker::amqp_0_10::MessageTransfer::getRequiredCredit(msg));
+    boost::intrusive_ptr<const amqp_0_10::MessageTransfer> transfer = protocols.translate(msg);
+    credit.consume(1, transfer->getRequiredCredit());
     QPID_LOG(debug, "Credit allocated for " << ConsumerName(*this)
              << ", was " << original << " now " << credit);
 
@@ -406,9 +407,10 @@ void SemanticState::ConsumerImpl::alloca
 
 bool SemanticState::ConsumerImpl::checkCredit(const Message& msg)
 {
-    bool enoughCredit = credit.check(1, qpid::broker::amqp_0_10::MessageTransfer::getRequiredCredit(msg));
+    boost::intrusive_ptr<const amqp_0_10::MessageTransfer> transfer = protocols.translate(msg);
+    bool enoughCredit = credit.check(1, transfer->getRequiredCredit());
     QPID_LOG(debug, "Subscription " << ConsumerName(*this) << " has " << (enoughCredit ? "sufficient " : "insufficient")
-             <<  " credit for message of " << qpid::broker::amqp_0_10::MessageTransfer::getRequiredCredit(msg) << " bytes: "
+             <<  " credit for message of " << transfer->getRequiredCredit() << " bytes: "
              << credit);
     return enoughCredit;
 }

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.cpp?rev=1412239&r1=1412238&r2=1412239&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.cpp Wed Nov 21 19:31:08 2012
@@ -116,11 +116,6 @@ void MessageTransfer::computeRequiredCre
     requiredCredit = sum.getSize();
     cachedRequiredCredit = true;
 }
-uint32_t MessageTransfer::getRequiredCredit(const qpid::broker::Message& msg)
-{
-    //TODO: may need to reflect annotations and other modifications in this also
-    return get(msg).getRequiredCredit();
-}
 
 qpid::framing::FrameSet& MessageTransfer::getFrames()
 {

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.h?rev=1412239&r1=1412238&r2=1412239&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.h Wed Nov 21 19:31:08 2012
@@ -109,7 +109,6 @@ class MessageTransfer : public qpid::bro
     QPID_BROKER_EXTERN bool isLastQMFResponse(const std::string correlation) const;
 
     static bool isImmediateDeliveryRequired(const qpid::broker::Message& message);
-    static uint32_t getRequiredCredit(const qpid::broker::Message&);
     static MessageTransfer& get(qpid::broker::Message& message) {
         return *dynamic_cast<MessageTransfer*>(&message.getEncoding());
     }



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