diff options
| author | Alan Conway <aconway@apache.org> | 2013-05-16 01:02:37 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2013-05-16 01:02:37 +0000 |
| commit | 8b7f87dcb84d593b128485e2599f354c6b88bea4 (patch) | |
| tree | bcc00b6791ee1f3e4a1faeae8b6ef8a40918a6d8 /qpid/cpp/src | |
| parent | 2d84923a606d3697cde559cfdda4d4c4b0718a1c (diff) | |
| download | qpid-python-8b7f87dcb84d593b128485e2599f354c6b88bea4.tar.gz | |
NO-JIRA: HA Use qpid::Address in ha::BrokerInfo rather than host/port.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1483138 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
| -rw-r--r-- | qpid/cpp/src/qpid/Address.cpp | 2 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/ha/BrokerInfo.cpp | 22 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/ha/BrokerInfo.h | 9 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/ha/HaBroker.cpp | 2 |
4 files changed, 17 insertions, 18 deletions
diff --git a/qpid/cpp/src/qpid/Address.cpp b/qpid/cpp/src/qpid/Address.cpp index bed3d592df..01770524c8 100644 --- a/qpid/cpp/src/qpid/Address.cpp +++ b/qpid/cpp/src/qpid/Address.cpp @@ -40,5 +40,5 @@ ostream& operator<<(ostream& os, const Address& a) { bool operator==(const Address& x, const Address& y) { return y.protocol==x.protocol && y.host==x.host && y.port == x.port; } - +bool operator!=(const Address& x, const Address& y) { return !(x == y); } } // namespace qpid diff --git a/qpid/cpp/src/qpid/ha/BrokerInfo.cpp b/qpid/cpp/src/qpid/ha/BrokerInfo.cpp index 8b807ac866..82e8faf2c6 100644 --- a/qpid/cpp/src/qpid/ha/BrokerInfo.cpp +++ b/qpid/cpp/src/qpid/ha/BrokerInfo.cpp @@ -34,6 +34,7 @@ namespace ha { namespace { const std::string SYSTEM_ID="system-id"; +const std::string PROTOCOL="protocol"; const std::string HOST_NAME="host-name"; const std::string PORT="port"; const std::string STATUS="status"; @@ -43,11 +44,10 @@ using types::Uuid; using types::Variant; using framing::FieldTable; -BrokerInfo::BrokerInfo() : port(0), status(JOINING) {} +BrokerInfo::BrokerInfo() : status(JOINING) {} -BrokerInfo::BrokerInfo(const types::Uuid& id, BrokerStatus s, - const std::string& host, uint16_t port_) : - hostName(host), port(port_), systemId(id), status(s) +BrokerInfo::BrokerInfo(const types::Uuid& id, BrokerStatus s, const Address& a) + : address(a), systemId(id), status(s) {} FieldTable BrokerInfo::asFieldTable() const { @@ -60,8 +60,9 @@ FieldTable BrokerInfo::asFieldTable() const { Variant::Map BrokerInfo::asMap() const { Variant::Map m; m[SYSTEM_ID] = systemId; - m[HOST_NAME] = hostName; - m[PORT] = port; + m[PROTOCOL] = address.protocol; + m[HOST_NAME] = address.host; + m[PORT] = address.port; m[STATUS] = status; return m; } @@ -79,19 +80,20 @@ const Variant& get(const Variant::Map& m, const std::string& k) { QPID_MSG("Missing field '" << k << "' in broker information")); return i->second; } +const Address empty; } void BrokerInfo::assign(const Variant::Map& m) { systemId = get(m, SYSTEM_ID).asUuid(); - hostName = get(m, HOST_NAME).asString(); - port = get(m, PORT).asUint16(); + address = Address(get(m, PROTOCOL).asString(), + get(m, HOST_NAME).asString(), + get(m, PORT).asUint16()); status = BrokerStatus(get(m, STATUS).asUint8()); } std::ostream& operator<<(std::ostream& o, const BrokerInfo& b) { o << b.getSystemId().str().substr(0,7); - if (!b.getHostName().empty()) - o << "@" << b.getHostName() << ":" << b.getPort(); + if (b.getAddress() != empty) o << "@" << b.getAddress(); o << "(" << printable(b.getStatus()) << ")"; return o; } diff --git a/qpid/cpp/src/qpid/ha/BrokerInfo.h b/qpid/cpp/src/qpid/ha/BrokerInfo.h index 40358336b0..c690ea86f7 100644 --- a/qpid/cpp/src/qpid/ha/BrokerInfo.h +++ b/qpid/cpp/src/qpid/ha/BrokerInfo.h @@ -44,15 +44,13 @@ class BrokerInfo typedef std::map<types::Uuid, BrokerInfo> Map; BrokerInfo(); - BrokerInfo(const types::Uuid& id, BrokerStatus, - const std::string& host=std::string(), uint16_t port=0); + BrokerInfo(const types::Uuid& id, BrokerStatus, const Address& = Address()); BrokerInfo(const framing::FieldTable& ft) { assign(ft); } BrokerInfo(const types::Variant::Map& m) { assign(m); } types::Uuid getSystemId() const { return systemId; } - std::string getHostName() const { return hostName; } BrokerStatus getStatus() const { return status; } - uint16_t getPort() const { return port; } + Address getAddress() const { return address; } void setStatus(BrokerStatus s) { status = s; } @@ -66,8 +64,7 @@ class BrokerInfo bool operator<(const BrokerInfo x) const { return systemId < x.systemId; } private: - std::string hostName; - uint16_t port; + Address address; types::Uuid systemId; BrokerStatus status; }; diff --git a/qpid/cpp/src/qpid/ha/HaBroker.cpp b/qpid/cpp/src/qpid/ha/HaBroker.cpp index b5258dc84a..52a47380dd 100644 --- a/qpid/cpp/src/qpid/ha/HaBroker.cpp +++ b/qpid/cpp/src/qpid/ha/HaBroker.cpp @@ -201,7 +201,7 @@ BrokerStatus HaBroker::getStatus() const { void HaBroker::setAddress(const Address& a) { QPID_LOG(info, role->getLogPrefix() << "Set self address to: " << a); - BrokerInfo b(membership.getSelf(), membership.getStatus(), a.host, a.port); + BrokerInfo b(membership.getSelf(), membership.getStatus(), a); membership.add(b); } |
