[Libreoffice-commits] online.git: Branch 'private/hcvcastro/forking' - loolwsd/LOOLBroker.cpp

Henry Castro hcastro at collabora.com
Mon Jul 27 20:50:23 PDT 2015


 loolwsd/LOOLBroker.cpp |   39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

New commits:
commit 5a1ca4269064a1cc5c8c2b2e70fec6ac0238ab52
Author: Henry Castro <hcastro at collabora.com>
Date:   Mon Jul 27 23:48:47 2015 -0400

    loolwsd: preload soffice, sc, sw, sd shared ...
    
    library

diff --git a/loolwsd/LOOLBroker.cpp b/loolwsd/LOOLBroker.cpp
index 4145d7a..9af12cf 100644
--- a/loolwsd/LOOLBroker.cpp
+++ b/loolwsd/LOOLBroker.cpp
@@ -5,6 +5,7 @@
 #include <utime.h>
 #include <ftw.h>
 #include <unistd.h>
+#include <dlfcn.h>
 
 #include <mutex>
 #include <cstring>
@@ -26,6 +27,11 @@
 #define INTERVAL_PROBES 10
 #define MAINTENANCE_INTERVAL 1
 
+#define LIB_SOFFICEAPP  "lib" "sofficeapp" ".so"
+#define LIB_SCLO        "lib" "sclo" ".so"
+#define LIB_SWLO        "lib" "swlo" ".so"
+#define LIB_SDLO        "lib" "sdlo" ".so"
+
 using Poco::Path;
 using Poco::File;
 using Poco::ThreadLocal;
@@ -393,6 +399,34 @@ int main(int argc, char** argv)
         Thread::sleep(std::stoul(std::getenv("SLEEPFORDEBUGGER")) * 1000);
     }
 
+    void* dlOffice = dlopen(Path("/"+ loSubPath + "/program", LIB_SOFFICEAPP).toString().c_str(), RTLD_NOW);
+    if ( !dlOffice )
+    {
+        std::cout << Util::logPrefix() << " Failed to load library :" << LIB_SOFFICEAPP << std::endl;
+        exit(-1);
+    }
+
+    void* dlSC = dlopen(Path("/"+ loSubPath + "/program", LIB_SCLO).toString().c_str(), RTLD_NOW);
+    if ( !dlOffice )
+    {
+        std::cout << Util::logPrefix() << " Failed to load library :" << LIB_SCLO << std::endl;
+        exit(-1);
+    }
+
+    void* dlSW = dlopen(Path("/"+ loSubPath + "/program", LIB_SWLO).toString().c_str(), RTLD_NOW);
+    if ( !dlOffice )
+    {
+        std::cout << Util::logPrefix() << " Failed to load library :" << LIB_SWLO << std::endl;
+        exit(-1);
+    }
+
+    void* dlSD = dlopen(Path("/"+ loSubPath + "/program", LIB_SDLO).toString().c_str(), RTLD_NOW);
+    if ( !dlOffice )
+    {
+        std::cout << Util::logPrefix() << " Failed to load library :" << LIB_SDLO << std::endl;
+        exit(-1);
+    }
+
     startupLibreOfficeKit(_numPreSpawnedChildren, loSubPath, _childId);
 
     while (_childProcesses.size() > 0)
@@ -452,6 +486,11 @@ int main(int argc, char** argv)
         Process::requestTermination(i.first);
     }
     
+    dlclose(dlOffice);
+    dlclose(dlSC);
+    dlclose(dlSW);
+    dlclose(dlSD);
+
     std::cout << Util::logPrefix() << "loolbroker finished OK!" << std::endl;
     return 0;
 }


More information about the Libreoffice-commits mailing list