summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2013-05-16 01:02:37 +0000
committerAlan Conway <aconway@apache.org>2013-05-16 01:02:37 +0000
commit8b7f87dcb84d593b128485e2599f354c6b88bea4 (patch)
treebcc00b6791ee1f3e4a1faeae8b6ef8a40918a6d8 /qpid/cpp/src
parent2d84923a606d3697cde559cfdda4d4c4b0718a1c (diff)
downloadqpid-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.cpp2
-rw-r--r--qpid/cpp/src/qpid/ha/BrokerInfo.cpp22
-rw-r--r--qpid/cpp/src/qpid/ha/BrokerInfo.h9
-rw-r--r--qpid/cpp/src/qpid/ha/HaBroker.cpp2
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);
}