summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp')
-rw-r--r--cpp/src/qpid/broker/Message.cpp4
-rw-r--r--cpp/src/qpid/broker/Message.h2
-rw-r--r--cpp/src/qpid/broker/MessageAdapter.cpp5
-rw-r--r--cpp/src/qpid/broker/MessageAdapter.h2
4 files changed, 13 insertions, 0 deletions
diff --git a/cpp/src/qpid/broker/Message.cpp b/cpp/src/qpid/broker/Message.cpp
index 47ca7a7ae8..58de0cc9dc 100644
--- a/cpp/src/qpid/broker/Message.cpp
+++ b/cpp/src/qpid/broker/Message.cpp
@@ -420,6 +420,10 @@ void Message::resetDequeueCompleteCallback() {
dequeueCallback = 0;
}
+uint8_t Message::getPriority() const {
+ return getAdapter().getPriority(frames);
+}
+
framing::FieldTable& Message::getOrInsertHeaders()
{
return getProperties<MessageProperties>()->getApplicationHeaders();
diff --git a/cpp/src/qpid/broker/Message.h b/cpp/src/qpid/broker/Message.h
index 375fa9ce26..becde0f872 100644
--- a/cpp/src/qpid/broker/Message.h
+++ b/cpp/src/qpid/broker/Message.h
@@ -161,6 +161,8 @@ public:
void setDequeueCompleteCallback(MessageCallback& cb);
void resetDequeueCompleteCallback();
+ uint8_t getPriority() const;
+
private:
typedef std::map<const Queue*,boost::intrusive_ptr<Message> > Replacement;
diff --git a/cpp/src/qpid/broker/MessageAdapter.cpp b/cpp/src/qpid/broker/MessageAdapter.cpp
index c0c1c4445a..acec2b2af6 100644
--- a/cpp/src/qpid/broker/MessageAdapter.cpp
+++ b/cpp/src/qpid/broker/MessageAdapter.cpp
@@ -67,4 +67,9 @@ namespace broker{
return b && b->getAcceptMode() == 0/*EXPLICIT == 0*/;
}
+ uint8_t TransferAdapter::getPriority(const framing::FrameSet& f)
+ {
+ const framing::DeliveryProperties* p = f.getHeaders()->get<framing::DeliveryProperties>();
+ return p ? p->getPriority() : 0;
+ }
}}
diff --git a/cpp/src/qpid/broker/MessageAdapter.h b/cpp/src/qpid/broker/MessageAdapter.h
index 61a1bc4794..cbc75ab6e2 100644
--- a/cpp/src/qpid/broker/MessageAdapter.h
+++ b/cpp/src/qpid/broker/MessageAdapter.h
@@ -40,6 +40,7 @@ struct MessageAdapter
virtual const framing::FieldTable* getApplicationHeaders(const framing::FrameSet& f) = 0;
virtual bool isPersistent(const framing::FrameSet& f) = 0;
virtual bool requiresAccept(const framing::FrameSet& f) = 0;
+ virtual uint8_t getPriority(const framing::FrameSet& f) = 0;
};
struct TransferAdapter : MessageAdapter
@@ -50,6 +51,7 @@ struct TransferAdapter : MessageAdapter
virtual bool isPersistent(const framing::FrameSet& f);
bool isImmediate(const framing::FrameSet&);
bool requiresAccept(const framing::FrameSet& f);
+ uint8_t getPriority(const framing::FrameSet& f);
};
}}