diff options
| author | Gordon Sim <gsim@apache.org> | 2010-03-11 18:23:46 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2010-03-11 18:23:46 +0000 |
| commit | b00e749a170b09db7e24161baa809c11fa65531f (patch) | |
| tree | 1356c7ecbc3555892d9be10ec9d86455335259fb /cpp/src/qpid/messaging | |
| parent | 88086e0099c0fb67ac3a01c5f8793c0634b946a0 (diff) | |
| download | qpid-python-b00e749a170b09db7e24161baa809c11fa65531f.tar.gz | |
QPID-2382: Created separate utility class for handling updates from failover exchange; cleaned up reconnection options
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@921971 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/messaging')
| -rw-r--r-- | cpp/src/qpid/messaging/AddressParser.cpp | 1 | ||||
| -rw-r--r-- | cpp/src/qpid/messaging/Connection.cpp | 37 | ||||
| -rw-r--r-- | cpp/src/qpid/messaging/ConnectionImpl.h | 2 |
3 files changed, 7 insertions, 33 deletions
diff --git a/cpp/src/qpid/messaging/AddressParser.cpp b/cpp/src/qpid/messaging/AddressParser.cpp index 265b5fe195..4b29f126f2 100644 --- a/cpp/src/qpid/messaging/AddressParser.cpp +++ b/cpp/src/qpid/messaging/AddressParser.cpp @@ -198,6 +198,7 @@ bool AddressParser::readSimpleValue(Variant& value) std::string s; if (readWord(s)) { value = s; + try { value = value.asInt32(); return true; } catch (const InvalidConversion&) {} try { value = value.asInt64(); return true; } catch (const InvalidConversion&) {} try { value = value.asDouble(); return true; } catch (const InvalidConversion&) {} return true; diff --git a/cpp/src/qpid/messaging/Connection.cpp b/cpp/src/qpid/messaging/Connection.cpp index 230c9d5dbf..4873899787 100644 --- a/cpp/src/qpid/messaging/Connection.cpp +++ b/cpp/src/qpid/messaging/Connection.cpp @@ -67,40 +67,11 @@ Session Connection::newSession(bool transactional, const std::string& name) return impl->newSession(transactional, name); } Session Connection::getSession(const std::string& name) const { return impl->getSession(name); } - -InvalidOptionString::InvalidOptionString(const std::string& msg) : Exception(msg) {} - -void parseKeyValuePair(const std::string& in, Variant::Map& out) -{ - std::string::size_type i = in.find('='); - if (i == std::string::npos || i == in.size() || in.find('=', i+1) != std::string::npos) { - throw InvalidOptionString(QPID_MSG("Cannot parse name-value pair from " << in)); - } else { - out[in.substr(0, i)] = in.substr(i+1); - } -} - -void parseOptionString(const std::string& in, Variant::Map& out) -{ - std::string::size_type start = 0; - std::string::size_type i = in.find('&'); - while (i != std::string::npos) { - parseKeyValuePair(in.substr(start, i-start), out); - if (i < in.size()) { - start = i+1; - i = in.find('&', start); - } else { - i = std::string::npos; - } - } - parseKeyValuePair(in.substr(start), out); +void Connection::setOption(const std::string& name, const Variant& value) +{ + impl->setOption(name, value); } -Variant::Map parseOptionString(const std::string& in) -{ - Variant::Map map; - parseOptionString(in, map); - return map; -} +InvalidOptionString::InvalidOptionString(const std::string& msg) : Exception(msg) {} }} // namespace qpid::messaging diff --git a/cpp/src/qpid/messaging/ConnectionImpl.h b/cpp/src/qpid/messaging/ConnectionImpl.h index 589c9fbe57..33ebcda950 100644 --- a/cpp/src/qpid/messaging/ConnectionImpl.h +++ b/cpp/src/qpid/messaging/ConnectionImpl.h @@ -31,6 +31,7 @@ namespace client { namespace messaging { class Session; +class Variant; class ConnectionImpl : public virtual qpid::RefCounted { @@ -40,6 +41,7 @@ class ConnectionImpl : public virtual qpid::RefCounted virtual void close() = 0; virtual Session newSession(bool transactional, const std::string& name) = 0; virtual Session getSession(const std::string& name) const = 0; + virtual void setOption(const std::string& name, const Variant& value) = 0; private: }; }} // namespace qpid::messaging |
