You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by sh...@apache.org on 2008/10/26 02:04:32 UTC

svn commit: r707924 - in /incubator/qpid/trunk/qpid/cpp/src: Makefile.am qpid/Modules.cpp qpid/Modules.h qpid/client/LoadPlugins.cpp

Author: shuston
Date: Sat Oct 25 18:04:32 2008
New Revision: 707924

URL: http://svn.apache.org/viewvc?rev=707924&view=rev
Log:
Refactor duplicated Module-handling from broker/client to common

Added:
    incubator/qpid/trunk/qpid/cpp/src/qpid/Modules.cpp   (with props)
    incubator/qpid/trunk/qpid/cpp/src/qpid/Modules.h   (with props)
Modified:
    incubator/qpid/trunk/qpid/cpp/src/Makefile.am
    incubator/qpid/trunk/qpid/cpp/src/qpid/client/LoadPlugins.cpp

Modified: incubator/qpid/trunk/qpid/cpp/src/Makefile.am
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/Makefile.am?rev=707924&r1=707923&r2=707924&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/Makefile.am (original)
+++ incubator/qpid/trunk/qpid/cpp/src/Makefile.am Sat Oct 25 18:04:32 2008
@@ -235,6 +235,7 @@
   qpid/Address.cpp \
   qpid/DataDir.cpp \
   qpid/Exception.cpp \
+  qpid/Modules.cpp \
   qpid/Options.cpp \
   qpid/Plugin.cpp \
   qpid/RefCountedBuffer.h \
@@ -414,6 +415,7 @@
   qpid/Exception.h \
   qpid/sys/ExceptionHolder.h \
   qpid/amqp_0_10/Exception.h \
+  qpid/Modules.h \
   qpid/Msg.h \
   qpid/Options.h \
   qpid/Plugin.h \

Added: incubator/qpid/trunk/qpid/cpp/src/qpid/Modules.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/Modules.cpp?rev=707924&view=auto
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/Modules.cpp (added)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/Modules.cpp Sat Oct 25 18:04:32 2008
@@ -0,0 +1,74 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+#include "Modules.h"
+#include "Exception.h"
+#include "qpid/log/Statement.h"
+#include "qpid/sys/Shlib.h"
+
+#include <boost/filesystem/operations.hpp>
+#include <boost/filesystem/path.hpp>
+
+namespace fs=boost::filesystem;
+
+namespace qpid {
+
+ModuleOptions::ModuleOptions(const std::string& defaultModuleDir)
+    : qpid::Options("Module options"), loadDir(defaultModuleDir), noLoad(false)
+{
+    addOptions()
+        ("module-dir",    optValue(loadDir, "DIR"),  "Load all shareable modules in this directory")
+        ("load-module",   optValue(load,    "FILE"), "Specifies additional module(s) to be loaded")
+        ("no-module-dir", optValue(noLoad),          "Don't load modules from module directory");
+}
+
+void tryShlib(const char* libname, bool noThrow) {
+    try {
+        sys::Shlib shlib(libname);
+        QPID_LOG (info, "Loaded Module: " << libname);
+    }
+    catch (const std::exception& /*e*/) {
+        if (!noThrow)
+            throw;
+    }
+}
+
+void loadModuleDir (std::string dirname, bool isDefault)
+{
+    fs::path dirPath (dirname, fs::native);
+
+    if (!fs::exists (dirPath))
+    {
+        if (isDefault)
+            return;
+        throw Exception ("Directory not found: " + dirname);
+    }
+
+    fs::directory_iterator endItr;
+    for (fs::directory_iterator itr (dirPath); itr != endItr; ++itr)
+    {
+        if (!fs::is_directory(*itr) &&
+            itr->string().find (".so") == itr->string().length() - 3)
+            tryShlib (itr->string().data(), true);
+    }
+}
+
+} // namespace qpid

Propchange: incubator/qpid/trunk/qpid/cpp/src/qpid/Modules.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/qpid/trunk/qpid/cpp/src/qpid/Modules.cpp
------------------------------------------------------------------------------
    svn:keywords = 

Added: incubator/qpid/trunk/qpid/cpp/src/qpid/Modules.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/Modules.h?rev=707924&view=auto
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/Modules.h (added)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/Modules.h Sat Oct 25 18:04:32 2008
@@ -0,0 +1,43 @@
+#ifndef QPID_MODULES_H
+#define QPID_MODULES_H
+
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+#include "Options.h"
+#include <string>
+#include <vector>
+
+namespace qpid {
+
+struct ModuleOptions : public qpid::Options {
+    std::string              loadDir;
+    std::vector<std::string> load;
+    bool                     noLoad;
+    ModuleOptions(const std::string& defaultModuleDir);
+};
+
+void tryShlib(const char* libname, bool noThrow);
+void loadModuleDir (std::string dirname, bool isDefault);
+
+} // namespace qpid
+
+#endif  /*!QPID_MODULES_H*/

Propchange: incubator/qpid/trunk/qpid/cpp/src/qpid/Modules.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/qpid/trunk/qpid/cpp/src/qpid/Modules.h
------------------------------------------------------------------------------
    svn:keywords = 

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/client/LoadPlugins.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/client/LoadPlugins.cpp?rev=707924&r1=707923&r2=707924&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/client/LoadPlugins.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/client/LoadPlugins.cpp Sat Oct 25 18:04:32 2008
@@ -18,78 +18,32 @@
  * under the License.
  *
  */
-#include "qpid/log/Statement.h"
-#include "qpid/log/Options.h"
-#include "qpid/log/Logger.h"
-#include "qpid/sys/Shlib.h"
-#include <boost/filesystem/operations.hpp>
-#include <boost/filesystem/path.hpp>
-
-using namespace qpid;
-using namespace qpid::sys;
-using namespace qpid::log;
-using namespace std;
-namespace fs=boost::filesystem;
-
-struct ModuleOptions : public qpid::Options {
-    string         loadDir;
-    vector<string> load;
-    bool           noLoad;
-    ModuleOptions() : qpid::Options("Module options"), loadDir(MODULE_DIR), noLoad(false)
-    {
-        addOptions()
-            ("module-dir",    optValue(loadDir, "DIR"),  "Load all .so modules in this directory")
-            ("load-module",   optValue(load,    "FILE"), "Specifies additional module(s) to be loaded")
-            ("no-module-dir", optValue(noLoad),          "Don't load modules from module directory");
-    }
-};
-
-// TODO: The following is copied from qpidd.cpp - it needs to be common code
-void tryShlib(const char* libname, bool noThrow) {
-    try {
-        Shlib shlib(libname);
-        QPID_LOG (info, "Loaded Module: " << libname);
-    }
-    catch (const exception& e) {
-        if (!noThrow)
-            throw;
-    }
-}
-
-void loadModuleDir (string dirname, bool isDefault)
-{
-    fs::path dirPath (dirname, fs::native);
 
-    if (!fs::exists (dirPath))
-    {
-        if (isDefault)
-            return;
-        throw Exception ("Directory not found: " + dirname);
-    }
+#include "qpid/Modules.h"
+#include "qpid/sys/Shlib.h"
+#include <string>
+#include <vector>
+using std::vector;
+using std::string;
 
-    fs::directory_iterator endItr;
-    for (fs::directory_iterator itr (dirPath); itr != endItr; ++itr)
-    {
-        if (!fs::is_directory(*itr) &&
-            itr->string().find (".so") == itr->string().length() - 3)
-            tryShlib (itr->string().data(), true);
-    }
-}
+namespace {
 
 struct LoadtimeInitialise {
     LoadtimeInitialise() {
-        ModuleOptions moduleOptions;
-        string           defaultPath (moduleOptions.loadDir);
+        qpid::ModuleOptions moduleOptions(MODULE_DIR);
+        string              defaultPath (moduleOptions.loadDir);
         moduleOptions.parse (0, 0, CONF_FILE, true);
     
         for (vector<string>::iterator iter = moduleOptions.load.begin();
              iter != moduleOptions.load.end();
              iter++)
-            tryShlib (iter->data(), false);
+            qpid::tryShlib (iter->data(), false);
     
         if (!moduleOptions.noLoad) {
             bool isDefault = defaultPath == moduleOptions.loadDir;
-            loadModuleDir (moduleOptions.loadDir, isDefault);
+            qpid::loadModuleDir (moduleOptions.loadDir, isDefault);
         }
     }
 } init;
+
+} // namespace