diff options
author | Gordon Sim <gsim@apache.org> | 2016-03-30 10:33:35 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2016-03-30 10:33:35 +0000 |
commit | cbb09980c977670c2d9157033bc352abd357eed2 (patch) | |
tree | e5ab54c62fff0fcfa783488306769f813d3de2c3 /qpid/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp | |
parent | 87aa4db83f1a7c2ffbdf168a7c5b942cb5d56a4a (diff) | |
download | qpid-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
Diffstat (limited to 'qpid/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp')
-rw-r--r-- | qpid/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp | 30 |
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); |