summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2016-03-30 10:33:35 +0000
committerGordon Sim <gsim@apache.org>2016-03-30 10:33:35 +0000
commitcbb09980c977670c2d9157033bc352abd357eed2 (patch)
treee5ab54c62fff0fcfa783488306769f813d3de2c3
parent87aa4db83f1a7c2ffbdf168a7c5b942cb5d56a4a (diff)
downloadqpid-python-cbb09980c977670c2d9157033bc352abd357eed2.tar.gz
QPID-7171: allow disable-auto-decode to be set via env var or conf file
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1737094 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp30
1 files changed, 29 insertions, 1 deletions
diff --git a/qpid/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp b/qpid/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp
index 11ef06e517..20fcc7e432 100644
--- a/qpid/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp
+++ b/qpid/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp
@@ -25,9 +25,11 @@
#include "qpid/messaging/PrivateImplRef.h"
#include "qpid/framing/Uuid.h"
#include "qpid/log/Statement.h"
+#include "qpid/Options.h"
#include "qpid/Url.h"
#include "qpid/amqp_0_10/Codecs.h"
#include <boost/intrusive_ptr.hpp>
+#include "config.h"
#include <vector>
#include <sstream>
#include <limits>
@@ -41,6 +43,32 @@ using qpid::types::VAR_LIST;
using qpid::framing::Uuid;
namespace {
+struct DefaultConnectionOptions : qpid::Options
+{
+ bool disableAutoDecode;
+
+ DefaultConnectionOptions() : qpid::Options("Connection Option Defaults")
+ {
+ addOptions()
+ ("disable-auto-decode", optValue(disableAutoDecode, "TRUE|FALSE"), "Whether to decode amqp 0-10 maps and lists automatically by default");
+
+ CommonOptions common("", "", QPIDC_CONF_FILE);
+ try {
+ common.parse(0, 0, common.clientConfig, true);
+ this->parse(0, 0, common.clientConfig, true);
+ } catch (const std::exception& e) {
+ throw qpid::types::Exception(QPID_MSG("Failed to parse default connection options: " << e.what()));
+ }
+ }
+};
+
+const DefaultConnectionOptions& getDefaultOptions()
+{
+ static DefaultConnectionOptions defaultOptions;
+ return defaultOptions;
+}
+
+
const std::string TCP("tcp");
const std::string COLON(":");
@@ -89,7 +117,7 @@ bool expired(const sys::AbsTime& start, double timeout)
ConnectionImpl::ConnectionImpl(const std::string& url, const Variant::Map& options) :
replaceUrls(false), autoReconnect(false), timeout(FOREVER), limit(-1),
minReconnectInterval(0.001), maxReconnectInterval(2),
- retries(0), reconnectOnLimitExceeded(true), disableAutoDecode(false)
+ retries(0), reconnectOnLimitExceeded(true), disableAutoDecode(getDefaultOptions().disableAutoDecode)
{
setOptions(options);
urls.insert(urls.begin(), url);