summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2013-09-20 18:35:07 +0000
committerGordon Sim <gsim@apache.org>2013-09-20 18:35:07 +0000
commitf6c674897d34c1a78e3e9b20301267933cdf7001 (patch)
treedce095b517b19c52cc1a74cfa8851a2fc77cbe89 /qpid/cpp/src
parentdb7de0df31df32014f8b41ca9dc7c63c18911d9b (diff)
downloadqpid-python-f6c674897d34c1a78e3e9b20301267933cdf7001.tar.gz
QPID-5152: handling of exchange properties for create-on-demand with 1.0
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1525091 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/broker/amqp/NodeProperties.cpp5
-rw-r--r--qpid/cpp/src/qpid/broker/amqp/NodeProperties.h1
-rw-r--r--qpid/cpp/src/qpid/broker/amqp/Session.cpp2
3 files changed, 8 insertions, 0 deletions
diff --git a/qpid/cpp/src/qpid/broker/amqp/NodeProperties.cpp b/qpid/cpp/src/qpid/broker/amqp/NodeProperties.cpp
index eb30c78128..cc17d6e1a2 100644
--- a/qpid/cpp/src/qpid/broker/amqp/NodeProperties.cpp
+++ b/qpid/cpp/src/qpid/broker/amqp/NodeProperties.cpp
@@ -277,4 +277,9 @@ bool NodeProperties::trackControllingLink() const
return lifetime == QueueSettings::DELETE_ON_CLOSE || lifetime == QueueSettings::DELETE_IF_EMPTY;
}
+const qpid::types::Variant::Map& NodeProperties::getProperties() const
+{
+ return properties;
+}
+
}}} // namespace qpid::broker::amqp
diff --git a/qpid/cpp/src/qpid/broker/amqp/NodeProperties.h b/qpid/cpp/src/qpid/broker/amqp/NodeProperties.h
index 03780c10a9..8a759062c0 100644
--- a/qpid/cpp/src/qpid/broker/amqp/NodeProperties.h
+++ b/qpid/cpp/src/qpid/broker/amqp/NodeProperties.h
@@ -61,6 +61,7 @@ class NodeProperties : public qpid::amqp::MapReader
std::string getExchangeType() const;
std::string getAlternateExchange() const;
bool trackControllingLink() const;
+ const qpid::types::Variant::Map& getProperties() const;
private:
bool queue;
bool durable;
diff --git a/qpid/cpp/src/qpid/broker/amqp/Session.cpp b/qpid/cpp/src/qpid/broker/amqp/Session.cpp
index c0434afa47..99232d9f66 100644
--- a/qpid/cpp/src/qpid/broker/amqp/Session.cpp
+++ b/qpid/cpp/src/qpid/broker/amqp/Session.cpp
@@ -44,6 +44,7 @@
#include "qpid/framing/FieldTable.h"
#include "qpid/framing/MessageTransferBody.h"
#include "qpid/log/Statement.h"
+#include "qpid/amqp_0_10/Codecs.h"
#include <boost/intrusive_ptr.hpp>
#include <boost/format.hpp>
#include <map>
@@ -215,6 +216,7 @@ Session::ResolvedNode Session::resolve(const std::string name, pn_terminus_t* te
node.queue = connection.getBroker().createQueue(name, node.properties.getQueueSettings(), this, node.properties.getAlternateExchange(), connection.getUserId(), connection.getId()).first;
} else {
qpid::framing::FieldTable args;
+ qpid::amqp_0_10::translate(node.properties.getProperties(), args);
node.exchange = connection.getBroker().createExchange(name, node.properties.getExchangeType(), node.properties.isDurable(), node.properties.getAlternateExchange(),
args, connection.getUserId(), connection.getId()).first;
}