diff options
Diffstat (limited to 'qpid/cpp/src')
| -rw-r--r-- | qpid/cpp/src/qpid/broker/Message.cpp | 4 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/broker/Message.h | 6 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/broker/amqp/Header.cpp | 2 |
3 files changed, 7 insertions, 5 deletions
diff --git a/qpid/cpp/src/qpid/broker/Message.cpp b/qpid/cpp/src/qpid/broker/Message.cpp index db6149158a..6585466056 100644 --- a/qpid/cpp/src/qpid/broker/Message.cpp +++ b/qpid/cpp/src/qpid/broker/Message.cpp @@ -46,12 +46,12 @@ using std::string; namespace qpid { namespace broker { -Message::Message() : deliveryCount(-1), publisher(0), expiration(FAR_FUTURE), timestamp(0), +Message::Message() : deliveryCount(-1), alreadyAcquired(false), publisher(0), expiration(FAR_FUTURE), timestamp(0), isManagementMessage(false), replicationId(0) {} Message::Message(boost::intrusive_ptr<Encoding> e, boost::intrusive_ptr<PersistableMessage> p) - : encoding(e), persistentContext(p), deliveryCount(-1), publisher(0), + : encoding(e), persistentContext(p), deliveryCount(-1), alreadyAcquired(false), publisher(0), expiration(FAR_FUTURE), timestamp(0), isManagementMessage(false), replicationId(0) { diff --git a/qpid/cpp/src/qpid/broker/Message.h b/qpid/cpp/src/qpid/broker/Message.h index defb6988eb..ecd84901f9 100644 --- a/qpid/cpp/src/qpid/broker/Message.h +++ b/qpid/cpp/src/qpid/broker/Message.h @@ -85,10 +85,11 @@ public: QPID_BROKER_EXTERN ~Message(); bool isRedelivered() const { return deliveryCount > 0; } - void deliver() { ++deliveryCount; } + bool hasBeenAcquired() const { return alreadyAcquired; } + void deliver() { ++deliveryCount; alreadyAcquired |= (deliveryCount>0); } void undeliver() { --deliveryCount; } int getDeliveryCount() const { return deliveryCount; } - void resetDeliveryCount() { deliveryCount = -1; } + void resetDeliveryCount() { deliveryCount = -1; alreadyAcquired = false; } QPID_BROKER_EXTERN void setPublisher(const Connection& p); const Connection* getPublisher() const; @@ -148,6 +149,7 @@ public: boost::intrusive_ptr<Encoding> encoding; boost::intrusive_ptr<PersistableMessage> persistentContext; int deliveryCount; + bool alreadyAcquired; const Connection* publisher; qpid::sys::AbsTime expiration; boost::intrusive_ptr<ExpiryPolicy> expiryPolicy; diff --git a/qpid/cpp/src/qpid/broker/amqp/Header.cpp b/qpid/cpp/src/qpid/broker/amqp/Header.cpp index 038f0a90cc..e1b3d22553 100644 --- a/qpid/cpp/src/qpid/broker/amqp/Header.cpp +++ b/qpid/cpp/src/qpid/broker/amqp/Header.cpp @@ -51,7 +51,7 @@ uint32_t Header::getTtl() const bool Header::isFirstAcquirer() const { - return false;//TODO + return (!message.hasBeenAcquired()); } uint32_t Header::getDeliveryCount() const |
