Author: aconway
Date: Tue Jan 29 12:29:46 2008
New Revision: 616507

URL: http://svn.apache.org/viewvc?rev=616507&view=rev
Log:

Re-enabled build of cluster code when openais is installed.

Removed:
    incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/SessionManager.cpp
    incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/SessionManager.h
Modified:
    incubator/qpid/trunk/qpid/cpp/configure.ac
    incubator/qpid/trunk/qpid/cpp/src/cluster.mk
    incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp
    incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.h
    incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/ClusterPlugin.cpp
    incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cpg.cpp
    incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cpg.h
    incubator/qpid/trunk/qpid/cpp/src/qpid/framing/FrameDefaultVisitor.h

Modified: incubator/qpid/trunk/qpid/cpp/configure.ac
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/configure.ac?rev=616507&r1=616506&r2=616507&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/configure.ac (original)
+++ incubator/qpid/trunk/qpid/cpp/configure.ac Tue Jan 29 12:29:46 2008
@@ -138,10 +138,10 @@
 AC_CHECK_HEADERS([boost/shared_ptr.hpp uuid/uuid.h],,
   AC_MSG_ERROR([Missing required header files.]))
 
-# Check for cluster requirements. Need openais 0.80.3 or higher.x1
+# Check for cluster requirements. 
 save_ldflags=$LDFLAGS  
 LDFLAGS="$LDFLAGS -L/usr/lib/openais -L/usr/lib64/openais"
-AC_CHECK_LIB([cpg],[cpg_local_get],[cpg_lib=yes],[cpg_lib=no])
+AC_CHECK_LIB([cpg],[cpg_initialize],[cpg_lib=yes],[cpg_lib=no])
 AC_CHECK_HEADER([openais/cpg.h],[cpg_h=yes])
 test x$cpg_lib = xyes -a x$cpg_h = xyes && enable_CLUSTER=yes 
 

Modified: incubator/qpid/trunk/qpid/cpp/src/cluster.mk
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/cluster.mk?rev=616507&r1=616506&r2=616507&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/cluster.mk (original)
+++ incubator/qpid/trunk/qpid/cpp/src/cluster.mk Tue Jan 29 12:29:46 2008
@@ -3,24 +3,22 @@
 # 
 lib_LTLIBRARIES += libqpidcluster.la
 
-# if CLUSTER
+if CLUSTER
 
-# libqpidcluster_la_SOURCES = \
-#   qpid/cluster/Cluster.cpp \
-#   qpid/cluster/Cluster.h \
-#   qpid/cluster/Cpg.cpp \
-#   qpid/cluster/Cpg.h \
-#   qpid/cluster/Dispatchable.h \
-#   qpid/cluster/ClusterPlugin.cpp \
-#   qpid/cluster/ClassifierHandler.h \
-#   qpid/cluster/ClassifierHandler.cpp \
-#   qpid/cluster/SessionManager.h \
-#   qpid/cluster/SessionManager.cpp
+libqpidcluster_la_SOURCES = \
+  qpid/cluster/Cluster.cpp \
+  qpid/cluster/Cluster.h \
+  qpid/cluster/Cpg.cpp \
+  qpid/cluster/Cpg.h \
+  qpid/cluster/Dispatchable.h \
+  qpid/cluster/ClusterPlugin.cpp \
+  qpid/cluster/ClassifierHandler.h \
+  qpid/cluster/ClassifierHandler.cpp 
 
-# libqpidcluster_la_LIBADD= -lcpg libqpidbroker.la
+libqpidcluster_la_LIBADD= -lcpg libqpidbroker.la
 
-# else
+else
 # Empty stub library to satisfy rpm spec file.
 libqpidcluster_la_SOURCES = 
 
-#endif
+endif

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp?rev=616507&r1=616506&r2=616507&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp Tue Jan 29 
12:29:46 2008
@@ -21,6 +21,7 @@
 #include "qpid/framing/ClusterNotifyBody.h"
 #include "qpid/log/Statement.h"
 #include <boost/bind.hpp>
+#include <boost/scoped_array.hpp>
 #include <algorithm>
 #include <iterator>
 #include <map>
@@ -46,13 +47,11 @@
     return out;
 }
 
-Cluster::Cluster(const std::string& name_, const std::string& url_, 
broker::Broker& broker) :
-    FrameHandler(&sessions), 
+Cluster::Cluster(const std::string& name_, const std::string& url_, 
broker::Broker&) :
+    FrameHandler(0),            // FIXME aconway 2008-01-29: handler. + 
observer
     cpg(*this),
     name(name_),
-    url(url_), 
-    self(Id::self(cpg)),
-    sessions(broker, *this)
+    url(url_)
 {
     QPID_LOG(trace, *this << " Joining cluster: " << name_);
     cpg.join(name);
@@ -80,10 +79,10 @@
 
 void Cluster::handle(AMQFrame& frame) {
     QPID_LOG(trace, *this << " SEND: " << frame);
-    Buffer buf(frame.size());
+    boost::scoped_array<char> store(new char[frame.size()]);          // FIXME 
aconway 2008-01-29: Better buffer handling.
+    Buffer buf(store.get());
     frame.encode(buf);
-    buf.flip();
-    iovec iov = { buf.start(), frame.size() };
+    iovec iov = { store.get(), frame.size() };
     cpg.mcast(name, &iov, 1);
 }
 
@@ -144,6 +143,8 @@
     {
         Mutex::ScopedLock l(lock);
         members[from].url=notifyIn->getUrl();
+        if (!self.id && notifyIn->getUrl() == url) 
+            self=from;
         lock.notifyAll();
         QPID_LOG(trace, *this << ": members joined: " << members);
     }

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.h
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.h?rev=616507&r1=616506&r2=616507&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.h Tue Jan 29 
12:29:46 2008
@@ -19,9 +19,10 @@
  *
  */
 
-#include "SessionManager.h"
 #include "Cpg.h"
 
+#include "qpid/framing/FrameHandler.h"
+#include "qpid/broker/Broker.h"
 #include "qpid/sys/Monitor.h"
 #include "qpid/sys/Runnable.h"
 #include "qpid/sys/Thread.h"
@@ -119,7 +120,6 @@
     MemberMap members;
     sys::Thread dispatcher;
     boost::function<void()> callback;
-    SessionManager sessions;
 
   friend std::ostream& operator <<(std::ostream&, const Cluster&);
   friend std::ostream& operator <<(std::ostream&, const 
MemberMap::value_type&);

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/ClusterPlugin.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/ClusterPlugin.cpp?rev=616507&r1=616506&r2=616507&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/ClusterPlugin.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/ClusterPlugin.cpp Tue Jan 29 
12:29:46 2008
@@ -17,7 +17,6 @@
  */
 #include "qpid/broker/Broker.h"
 #include "qpid/cluster/Cluster.h"
-#include "qpid/cluster/SessionManager.h"
 #include "qpid/Plugin.h"
 #include "qpid/Options.h"
 #include "qpid/shared_ptr.h"
@@ -43,7 +42,6 @@
 
     ClusterOptions options;
     boost::optional<Cluster> cluster;
-    boost::optional<SessionManager> sessions;
 
     Options* getOptions() { return &options; }
 

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cpg.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cpg.cpp?rev=616507&r1=616506&r2=616507&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cpg.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cpg.cpp Tue Jan 29 12:29:46 
2008
@@ -145,13 +145,6 @@
     return "Cannot mcast to CPG group "+group.str();
 }
 
-uint32_t Cpg::getLocalNoideId() const {
-    unsigned int nodeid;
-    check(cpg_local_get(handle, &nodeid), "Cannot get local node ID");
-    assert(nodeid <= std::numeric_limits<uint32_t>::max());
-    return nodeid;
-}
-
 ostream& operator<<(ostream& o, std::pair<cpg_address*,int> a) {
     ostream_iterator<Cpg::Id> i(o, " ");
     std::copy(a.first, a.first+a.second, i);
@@ -176,10 +169,6 @@
     return out << string(name.value, name.length);
 }
 
-
-Cpg::Id Cpg::Id::self(Cpg& cpg) {
-    return Id(cpg.getLocalNoideId(), getpid());
-}
 
 }} // namespace qpid::cluster
 

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cpg.h
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cpg.h?rev=616507&r1=616506&r2=616507&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cpg.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/cluster/Cpg.h Tue Jan 29 12:29:46 
2008
@@ -57,12 +57,10 @@
     
     struct Id {
         uint64_t id;
-        Id() : id(0) {}
+        Id(uint64_t n=0) : id(n) {}
         Id(uint32_t nodeid, uint32_t pid) { id=(uint64_t(nodeid)<<32)+ pid; }
         Id(const cpg_address& addr) : id(Id(addr.nodeid, addr.pid)) {}
 
-        static Id self(Cpg& cpg);
-
         operator uint64_t() const { return id; }
         uint32_t nodeId() const { return id >> 32; }
         pid_t pid() const { return id & 0xFFFF; }
@@ -132,8 +130,6 @@
 
     cpg_handle_t getHandle() const { return handle; }
 
-    uint32_t getLocalNoideId() const;
-    
   private:
     class Handles;
     struct ClearHandleOnExit;

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/framing/FrameDefaultVisitor.h
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/framing/FrameDefaultVisitor.h?rev=616507&r1=616506&r2=616507&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/framing/FrameDefaultVisitor.h 
(original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/framing/FrameDefaultVisitor.h Tue 
Jan 29 12:29:46 2008
@@ -24,14 +24,12 @@
 #include "qpid/framing/MethodBodyDefaultVisitor.h"
 #include "qpid/framing/AMQBody.h"
 #include "qpid/framing/AMQMethodBody.h"
+#include "qpid/framing/AMQHeaderBody.h"
+#include "qpid/framing/AMQContentBody.h"
+#include "qpid/framing/AMQHeartbeatBody.h"
 
 namespace qpid {
 namespace framing {
-
-class AMQHeaderBody;
-class AMQContentBody;
-class AMQHeartbeatBody;
-
 /**
  * Visitor for all concrete frame body types, combines
  * AMQBodyConstVisitor and MethodBodyDefaultVisitor.
@@ -45,12 +43,12 @@
                              protected MethodBodyDefaultVisitor
 {
     virtual void defaultVisit(const AMQBody&) = 0;
+    void defaultVisit(const AMQMethodBody& method) { 
defaultVisit(static_cast<const AMQBody&>(method)); }
 
     void visit(const AMQHeaderBody& b) { defaultVisit(b); }
     void visit(const AMQContentBody& b) { defaultVisit(b); }
     void visit(const AMQHeartbeatBody& b) { defaultVisit(b); }
     void visit(const AMQMethodBody& b) { 
b.accept(static_cast<MethodBodyDefaultVisitor&>(*this)); }
-    void defaultVisit(const AMQMethodBody& method) { 
defaultVisit(static_cast<const AMQBody&>(method)); }
     
     using AMQBodyConstVisitor::visit;
     using MethodBodyDefaultVisitor::visit;


Reply via email to