summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorKim van der Riet <kpvdr@apache.org>2012-12-05 16:29:59 +0000
committerKim van der Riet <kpvdr@apache.org>2012-12-05 16:29:59 +0000
commit7db4e98602cef8e085d160a0a5aa52a464a2f3e8 (patch)
tree86d493934770fd329283daaab060e73c0f72f92e /cpp
parentf35392c6d3b62363145f8445aa5c55d2ccdcffa5 (diff)
downloadqpid-python-7db4e98602cef8e085d160a0a5aa52a464a2f3e8.tar.gz
QPID-4490: Durable mesages with TTL do not expire after broker recovery (c++ store) - fix
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1417511 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp')
-rw-r--r--cpp/src/qpid/broker/RecoverableMessage.h2
-rw-r--r--cpp/src/qpid/broker/RecoverableMessageImpl.h1
-rw-r--r--cpp/src/qpid/broker/RecoveryManagerImpl.cpp5
3 files changed, 8 insertions, 0 deletions
diff --git a/cpp/src/qpid/broker/RecoverableMessage.h b/cpp/src/qpid/broker/RecoverableMessage.h
index c98857ceb0..e0159bed7b 100644
--- a/cpp/src/qpid/broker/RecoverableMessage.h
+++ b/cpp/src/qpid/broker/RecoverableMessage.h
@@ -28,6 +28,7 @@
namespace qpid {
namespace broker {
+class ExpiryPolicy;
/**
* The interface through which messages are reloaded on recovery.
@@ -38,6 +39,7 @@ public:
typedef boost::shared_ptr<RecoverableMessage> shared_ptr;
virtual void setPersistenceId(uint64_t id) = 0;
virtual void setRedelivered() = 0;
+ virtual void computeExpiration(const boost::intrusive_ptr<ExpiryPolicy>& e) = 0;
/**
* Used by store to determine whether to load content on recovery
* or let message load its own content as and when it requires it.
diff --git a/cpp/src/qpid/broker/RecoverableMessageImpl.h b/cpp/src/qpid/broker/RecoverableMessageImpl.h
index f3ead261c1..a46f5a3676 100644
--- a/cpp/src/qpid/broker/RecoverableMessageImpl.h
+++ b/cpp/src/qpid/broker/RecoverableMessageImpl.h
@@ -37,6 +37,7 @@ public:
~RecoverableMessageImpl() {};
void setPersistenceId(uint64_t id);
void setRedelivered();
+ void computeExpiration(const boost::intrusive_ptr<ExpiryPolicy>& ep);
bool loadContent(uint64_t available);
void decodeContent(framing::Buffer& buffer);
void recover(boost::shared_ptr<Queue> queue);
diff --git a/cpp/src/qpid/broker/RecoveryManagerImpl.cpp b/cpp/src/qpid/broker/RecoveryManagerImpl.cpp
index 6d831563e2..ab89a46a46 100644
--- a/cpp/src/qpid/broker/RecoveryManagerImpl.cpp
+++ b/cpp/src/qpid/broker/RecoveryManagerImpl.cpp
@@ -186,6 +186,11 @@ void RecoverableMessageImpl::setRedelivered()
msg.deliver();//increment delivery count (but at present that isn't recorded durably)
}
+void RecoverableMessageImpl::computeExpiration(const boost::intrusive_ptr<ExpiryPolicy>& ep)
+{
+ msg.computeExpiration(ep);
+}
+
void RecoverableQueueImpl::recover(RecoverableMessage::shared_ptr msg)
{
dynamic_pointer_cast<RecoverableMessageImpl>(msg)->recover(queue);