diff options
| author | Pavel Moravec <pmoravec@apache.org> | 2014-03-03 12:46:30 +0000 |
|---|---|---|
| committer | Pavel Moravec <pmoravec@apache.org> | 2014-03-03 12:46:30 +0000 |
| commit | af2c37483f182bb67fd71a1fbb68f921c839728b (patch) | |
| tree | 650da259df5f8a7e221f953056c00868525906ab /qpid/cpp/src | |
| parent | 5261a424e691dabc80420c79d615ae26f8735fc4 (diff) | |
| download | qpid-python-af2c37483f182bb67fd71a1fbb68f921c839728b.tar.gz | |
QPID-5594: [amqp1.0] missing first-acquirer property support in C++ broker
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1573546 13f79535-47bb-0310-9956-ffa450edef68
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 |
