diff options
| author | Alan Conway <aconway@apache.org> | 2009-03-30 18:22:09 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2009-03-30 18:22:09 +0000 |
| commit | 76bdb447b2a504c07b265e60032c161b430d51a2 (patch) | |
| tree | 907ae6c2735b0e6a04afd83edc08480a1da8efaa /cpp/src/qpid/broker | |
| parent | 6c66415656a66692f97bf6d6c2597282a7163578 (diff) | |
| download | qpid-python-76bdb447b2a504c07b265e60032c161b430d51a2.tar.gz | |
Fix lifecycle issue in ExpiryPolicy - remove deleted messages from unexpired map.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@760087 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker')
| -rw-r--r-- | cpp/src/qpid/broker/ExpiryPolicy.cpp | 2 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/ExpiryPolicy.h | 1 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/Message.cpp | 4 |
3 files changed, 6 insertions, 1 deletions
diff --git a/cpp/src/qpid/broker/ExpiryPolicy.cpp b/cpp/src/qpid/broker/ExpiryPolicy.cpp index 907f1e56e1..ffe0cc437b 100644 --- a/cpp/src/qpid/broker/ExpiryPolicy.cpp +++ b/cpp/src/qpid/broker/ExpiryPolicy.cpp @@ -33,4 +33,6 @@ bool ExpiryPolicy::hasExpired(Message& m) { return m.getExpiration() < sys::AbsTime::now(); } +void ExpiryPolicy::forget(Message&) {} + }} // namespace qpid::broker diff --git a/cpp/src/qpid/broker/ExpiryPolicy.h b/cpp/src/qpid/broker/ExpiryPolicy.h index cefe9b7552..eeb3ffda21 100644 --- a/cpp/src/qpid/broker/ExpiryPolicy.h +++ b/cpp/src/qpid/broker/ExpiryPolicy.h @@ -39,6 +39,7 @@ class ExpiryPolicy : public RefCounted QPID_BROKER_EXTERN virtual ~ExpiryPolicy(); QPID_BROKER_EXTERN virtual void willExpire(Message&); QPID_BROKER_EXTERN virtual bool hasExpired(Message&); + QPID_BROKER_EXTERN virtual void forget(Message&); }; }} // namespace qpid::broker diff --git a/cpp/src/qpid/broker/Message.cpp b/cpp/src/qpid/broker/Message.cpp index 40b5515829..1e9eb9d386 100644 --- a/cpp/src/qpid/broker/Message.cpp +++ b/cpp/src/qpid/broker/Message.cpp @@ -53,6 +53,8 @@ Message::Message(const framing::SequenceNumber& id) : Message::~Message() { + if (expiryPolicy) + expiryPolicy->forget(*this); } void Message::forcePersistent() @@ -334,7 +336,7 @@ void Message::setTimestamp(const boost::intrusive_ptr<ExpiryPolicy>& e) void Message::setExpiryPolicy(const boost::intrusive_ptr<ExpiryPolicy>& e) { expiryPolicy = e; - if (expiryPolicy) + if (expiryPolicy) expiryPolicy->willExpire(*this); } |
