[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