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

Henry Castro hcastro at collabora.com
Sun Sep 27 15:21:51 PDT 2015


 loolwsd/LOOLWSD.cpp |   14 ++++++++++++++
 loolwsd/LOOLWSD.hpp |    2 ++
 2 files changed, 16 insertions(+)

New commits:
commit d621a49ffee698473283d56d88d00651b62ae116
Author: Henry Castro <hcastro at collabora.com>
Date:   Sun Sep 27 18:21:15 2015 -0400

    loolwsd: create writer pipe to send messages to broker process

diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index 0684285..1010efa 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -424,6 +424,7 @@ public:
 
 int LOOLWSD::portNumber = DEFAULT_CLIENT_PORT_NUMBER;
 int LOOLWSD::timeoutCounter = 0;
+int LOOLWSD::writerBroker = -1;
 std::string LOOLWSD::cache = LOOLWSD_CACHEDIR;
 std::string LOOLWSD::sysTemplate;
 std::string LOOLWSD::loTemplate;
@@ -443,6 +444,7 @@ int LOOLWSD::uid = 0;
 const std::string LOOLWSD::CHILD_URI = "/loolws/child/";
 const std::string LOOLWSD::PIDLOG = "/tmp/loolwsd.pid";
 const std::string LOOLWSD::LOKIT_PIDLOG = "/tmp/lokit.pid";
+const std::string LOOLWSD::FIFO_FILE = "/tmp/loolwsdfifo";
 
 LOOLWSD::LOOLWSD() :
     _childId(0)
@@ -640,6 +642,12 @@ int LOOLWSD::main(const std::vector<std::string>& args)
             filePID << Process::id();
     }
 
+    if (!File(FIFO_FILE).exists() && mkfifo(FIFO_FILE.c_str(), 0666) == -1)
+    {
+        std::cout << Util::logPrefix() << "Fail to create pipe FIFO" << std::endl;
+        return Application::EXIT_UNAVAILABLE;
+    }
+
     std::unique_lock<std::mutex> rngLock(_rngMutex);
     _childId = (((Poco::UInt64)_rng.next()) << 32) | _rng.next() | 1;
     rngLock.unlock();
@@ -669,6 +677,12 @@ int LOOLWSD::main(const std::vector<std::string>& args)
 
     srv2.start();
 
+    if ( (writerBroker = open(FIFO_FILE.c_str(), O_WRONLY) ) < 0 )
+    {
+        std::cout << Util::logPrefix() << "Pipe opened for writing" << strerror(errno) << std::endl;
+        return Application::EXIT_UNAVAILABLE;
+    }
+
     _namedMutexLOOL.unlock();
 
     while (MasterProcessSession::_childProcesses.size() > 0)
diff --git a/loolwsd/LOOLWSD.hpp b/loolwsd/LOOLWSD.hpp
index 4470968..6e58e4d 100644
--- a/loolwsd/LOOLWSD.hpp
+++ b/loolwsd/LOOLWSD.hpp
@@ -31,6 +31,7 @@ public:
     // statics
     static int portNumber;
     static int timeoutCounter;
+    static int writerBroker;
     static bool doTest;
     static std::string cache;
     static std::string sysTemplate;
@@ -45,6 +46,7 @@ public:
     static const int MAINTENANCE_INTERVAL = 1;
     static const std::string CHILD_URI;
     static const std::string PIDLOG;
+    static const std::string FIFO_FILE;
     static const std::string LOKIT_PIDLOG;
     static Poco::NamedMutex _namedMutexLOOL;
 


More information about the Libreoffice-commits mailing list