diff options
| author | Gordon Sim <gsim@apache.org> | 2013-05-21 22:35:57 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2013-05-21 22:35:57 +0000 |
| commit | b7c0f8d90ac6e5c789f2a93fc8c29ed25e69c707 (patch) | |
| tree | 0e81eb0c9ff23fda9f7b92953bcaf395424bc1f5 /cpp/src | |
| parent | 49d2d63866fb38bd4624f8ece95fdc4dd956f6c8 (diff) | |
| download | qpid-python-b7c0f8d90ac6e5c789f2a93fc8c29ed25e69c707.tar.gz | |
QPID-4591: patch from Ernie Allen to add queue sequence number to messages
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1485001 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
| -rw-r--r-- | cpp/src/qpid/broker/Queue.cpp | 1 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/QueueSettings.cpp | 8 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/QueueSettings.h | 4 |
3 files changed, 12 insertions, 1 deletions
diff --git a/cpp/src/qpid/broker/Queue.cpp b/cpp/src/qpid/broker/Queue.cpp index 5e806699de..4c9058e78b 100644 --- a/cpp/src/qpid/broker/Queue.cpp +++ b/cpp/src/qpid/broker/Queue.cpp @@ -755,6 +755,7 @@ void Queue::push(Message& message, bool /*isRecovery*/) { Mutex::ScopedLock locker(messageLock); message.setSequence(++sequence); + if (settings.sequencing) message.addAnnotation(settings.sequenceKey, (uint32_t)sequence); messages->publish(message); listeners.populate(copy); observeEnqueue(message, locker); diff --git a/cpp/src/qpid/broker/QueueSettings.cpp b/cpp/src/qpid/broker/QueueSettings.cpp index 93b832733c..35aa46260c 100644 --- a/cpp/src/qpid/broker/QueueSettings.cpp +++ b/cpp/src/qpid/broker/QueueSettings.cpp @@ -63,6 +63,7 @@ const std::string LVQ_LEGACY("qpid.last_value_queue"); const std::string LVQ_LEGACY_KEY("qpid.LVQ_key"); const std::string LVQ_LEGACY_NOBROWSE("qpid.last_value_queue_no_browse"); +const std::string SEQUENCING("qpid.queue_msg_sequence"); bool handleFairshareSetting(const std::string& basename, const std::string& key, const qpid::types::Variant& value, QueueSettings& settings) { @@ -97,7 +98,8 @@ QueueSettings::QueueSettings(bool d, bool a) : noLocal(false), isBrowseOnly(false), autoDeleteDelay(0), - alertRepeatInterval(60) + alertRepeatInterval(60), + sequencing(false) {} bool QueueSettings::handle(const std::string& key, const qpid::types::Variant& value) @@ -203,6 +205,10 @@ bool QueueSettings::handle(const std::string& key, const qpid::types::Variant& v } else if (key == PAGE_FACTOR) { pageFactor = value; return true; + } else if (key == SEQUENCING) { + sequenceKey = value.getString(); + sequencing = !sequenceKey.empty(); + return true; } else if (key == FILTER) { filter = value.asString(); return true; diff --git a/cpp/src/qpid/broker/QueueSettings.h b/cpp/src/qpid/broker/QueueSettings.h index cf430db76d..19667e93ae 100644 --- a/cpp/src/qpid/broker/QueueSettings.h +++ b/cpp/src/qpid/broker/QueueSettings.h @@ -83,6 +83,10 @@ struct QueueSettings uint64_t maxFileSize; uint64_t maxFileCount; + std::string sequenceKey; + // store bool to avoid testing string value + bool sequencing; + std::string filter; //yuck, yuck |
