summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/cluster/ClusterMap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/cluster/ClusterMap.cpp')
-rw-r--r--cpp/src/qpid/cluster/ClusterMap.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/cpp/src/qpid/cluster/ClusterMap.cpp b/cpp/src/qpid/cluster/ClusterMap.cpp
index 85ed447113..c050293717 100644
--- a/cpp/src/qpid/cluster/ClusterMap.cpp
+++ b/cpp/src/qpid/cluster/ClusterMap.cpp
@@ -57,15 +57,17 @@ void assignFieldTable(FieldTable& ft, const ClusterMap::Map& map) {
}
-ClusterMap::ClusterMap() : frameSeq(0) {}
+ClusterMap::ClusterMap() : frameSeq(0), configSeq(0) {}
-ClusterMap::ClusterMap(const Map& map) : frameSeq(0) {
+ClusterMap::ClusterMap(const Map& map) : frameSeq(0), configSeq(0) {
transform(map.begin(), map.end(), inserter(alive, alive.begin()), bind(&Map::value_type::first, _1));
members = map;
}
-ClusterMap::ClusterMap(const FieldTable& joinersFt, const FieldTable& membersFt, framing::SequenceNumber frameSeq_)
- : frameSeq(frameSeq_)
+ClusterMap::ClusterMap(const FieldTable& joinersFt, const FieldTable& membersFt,
+ framing::SequenceNumber frameSeq_,
+ framing::SequenceNumber configSeq_)
+ : frameSeq(frameSeq_), configSeq(configSeq_)
{
for_each(joinersFt.begin(), joinersFt.end(), bind(&addFieldTableValue, _1, ref(joiners), ref(alive)));
for_each(membersFt.begin(), membersFt.end(), bind(&addFieldTableValue, _1, ref(members), ref(alive)));
@@ -81,6 +83,7 @@ void ClusterMap::toMethodBody(framing::ClusterConnectionMembershipBody& b) const
b.getMembers().clear();
for_each(members.begin(), members.end(), bind(&insertFieldTableFromMapValue, ref(b.getMembers()), _1));
b.setFrameSeq(frameSeq);
+ b.setConfigSeq(configSeq);
}
Url ClusterMap::getUrl(const Map& map, const MemberId& id) {
@@ -133,6 +136,7 @@ ostream& operator<<(ostream& o, const ClusterMap& m) {
else o << "(unknown)";
o << " ";
}
+ o << "frameSeq=" << m.getFrameSeq() << " configSeq=" << m.getConfigSeq();
return o;
}
@@ -153,6 +157,7 @@ bool ClusterMap::ready(const MemberId& id, const Url& url) {
}
bool ClusterMap::configChange(const Set& update) {
+ ++configSeq;
bool memberChange = false;
Set removed;
set_difference(alive.begin(), alive.end(),