diff options
author | Alan Conway <aconway@apache.org> | 2007-07-23 13:08:16 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2007-07-23 13:08:16 +0000 |
commit | 1a469b992ef2f28d98f43e63cf4d520c1bf830a4 (patch) | |
tree | c743052e2d2ab10a28960234e3efd3534cdb14c1 /cpp/src/qpid/cluster/Cluster.cpp | |
parent | 4ab144d3d0a48a4abc1814e3244ef830344f19b2 (diff) | |
download | qpid-python-1a469b992ef2f28d98f43e63cf4d520c1bf830a4.tar.gz |
* src/tests/cluster.mk: Enable cluster test.
* src/tests/Cluster.h (class TestHandler):
Fixed race in TestHandler::waitFor
* src/tests/Cluster.cpp
- Allow separate start of parent and child processes.
* src/qpid/Options.cpp (parse): Skip argv parsing if argc=0.
* src/qpid/cluster/Cluster.cpp (configChange): assert group name.
* src/qpid/cluster/Cpg.cpp, .h: Additional logging
* src/qpid/framing/AMQFrame.cpp: Initialize all fields in ctor,
avoid valgrind warning.
* src/qpid/log/Logger.cpp: Initialize singleton automatically
from environment so logging can be used on tests.
* src/qpid/sys/Time.h: Avoid overflow in AbsTime(t, TIME_INFINITE)
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@558710 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/cluster/Cluster.cpp')
-rw-r--r-- | cpp/src/qpid/cluster/Cluster.cpp | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/cpp/src/qpid/cluster/Cluster.cpp b/cpp/src/qpid/cluster/Cluster.cpp index 256378ccd5..b59bfe878d 100644 --- a/cpp/src/qpid/cluster/Cluster.cpp +++ b/cpp/src/qpid/cluster/Cluster.cpp @@ -115,13 +115,14 @@ Cluster::MemberList Cluster::getMembers() const { } void Cluster::deliver( - cpg_handle_t /*handle*/, - struct cpg_name* /* group */, - uint32_t nodeid, - uint32_t pid, - void* msg, - int msg_len) + cpg_handle_t /*handle*/, + cpg_name* group, + uint32_t nodeid, + uint32_t pid, + void* msg, + int msg_len) { + assert(name == *group); Id from(nodeid, pid); Buffer buf(static_cast<char*>(msg), msg_len); SessionFrame frame; @@ -149,26 +150,27 @@ void Cluster::handleClusterFrame(Id from, AMQFrame& frame) { ClusterNotifyBody* notifyIn= dynamic_cast<ClusterNotifyBody*>(frame.getBody().get()); assert(notifyIn); - MemberList list; - { - Mutex::ScopedLock l(lock); + MemberList list; + { + Mutex::ScopedLock l(lock); shared_ptr<Member>& member=members[from]; if (!member) member.reset(new Member(notifyIn->getUrl())); - else + else member->url = notifyIn->getUrl(); - lock.notifyAll(); + lock.notifyAll(); QPID_LOG(trace, *this << ": members joined: " << members); - } + } } void Cluster::configChange( cpg_handle_t /*handle*/, - struct cpg_name */*group*/, - struct cpg_address */*current*/, int /*nCurrent*/, - struct cpg_address *left, int nLeft, - struct cpg_address *joined, int nJoined) + cpg_name *group, + cpg_address */*current*/, int /*nCurrent*/, + cpg_address *left, int nLeft, + cpg_address *joined, int nJoined) { + assert(name == *group); bool newMembers=false; MemberList updated; { |