summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
authorPavel Moravec <pmoravec@apache.org>2014-03-03 12:46:30 +0000
committerPavel Moravec <pmoravec@apache.org>2014-03-03 12:46:30 +0000
commitaf2c37483f182bb67fd71a1fbb68f921c839728b (patch)
tree650da259df5f8a7e221f953056c00868525906ab /qpid/cpp/src
parent5261a424e691dabc80420c79d615ae26f8735fc4 (diff)
downloadqpid-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.cpp4
-rw-r--r--qpid/cpp/src/qpid/broker/Message.h6
-rw-r--r--qpid/cpp/src/qpid/broker/amqp/Header.cpp2
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