]> git.lyx.org Git - lyx.git/blobdiff - src/lyxserver.h
Point fix, earlier forgotten
[lyx.git] / src / lyxserver.h
index 866cda07e44f86aef9aa78e93c59c7b3970bfc6d..636ef2855641bb5a2be2a3d4021f874440495b09 100644 (file)
@@ -1,22 +1,22 @@
 // -*- C++ -*-
-/* This file is part of
-* ====================================================== 
-* 
-*           LyX, The Document Processor
-*        
-*           Copyright 1995 Matthias Ettrich
-*           Copyright 1995-2001 The LyX Team.
-*
-* ====================================================== */
+/**
+ * \file lyxserver.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Lars Gullik Bjønnes
+ * \author Jean-Marc Lasgouttes
+ *
+ * Full author contact details are available in file CREDITS.
+ */
 
 #ifndef LYXSERVER_H
 #define LYXSERVER_H
 
-#ifdef __GNUG__
-#pragma interface
-#endif
-
 #include "LString.h"
+
+#include <boost/signals/trackable.hpp>
+
 class LyXFunc;
 class LyXServer;
 
@@ -29,7 +29,7 @@ class LyXServer;
  This class encapsulates all the dirty communication and thus provides
  a clean string interface.
  */
-class LyXComm {
+class LyXComm : public boost::signals::trackable {
 public:
        /** When we receive a message, we send it to a client.
          This is one of the small things that would have been a lot
@@ -51,26 +51,36 @@ public:
 
        /// clean up in emergency
        void emergencyCleanup();
+
        /// Send message
        void send(string const &);
 
-       /// We receive messages via XForms through this callback
-       static void callback(int fd, void *v);
+       /// asynch ready-to-be-read notification
+       void read_ready();
 
 private:
+       /// the filename of the in pipe
+       string const inPipeName() {
+               return pipename + ".in";
+       }
+
+       /// the filename of the out pipe
+       string const outPipeName() {
+               return pipename + ".out";
+       }
+
        /// Open pipes
        void openConnection();
-       
+
        /// Close pipes
        void closeConnection();
 
        /// start a pipe
-       int startPipe(string const &);
+       int startPipe(string const &, bool);
+
        /// finish a pipe
-       void endPipe(int &, string const &);
+       void endPipe(int &, string const &, bool);
+
        /// This is -1 if not open
        int infd;
 
@@ -101,23 +111,23 @@ public:
        // The lyx server should not take an argument "LyXFunc" but this is
        // how it will be done for 0.12. In 0.13 we must write a non-gui
        // bufferview.
-        // IMO lyxserver is atypical, and for the moment the only one, non-gui
-        // bufferview. We just have to find a way to handle situations like if
-        // lyxserver is using a buffer that is being edited with a bufferview.
-        // With a common buffer list this is not a problem, maybe. (Alejandro)
+       // IMO lyxserver is atypical, and for the moment the only one, non-gui
+       // bufferview. We just have to find a way to handle situations like if
+       // lyxserver is using a buffer that is being edited with a bufferview.
+       // With a common buffer list this is not a problem, maybe. (Alejandro)
        ///
        LyXServer(LyXFunc * f, string const & pip)
                : numclients(0), func(f), pipes(pip, (this), callback) {}
-        /// 
+       ///
        ~LyXServer();
        ///
        void notifyClient(string const &);
-       
+
        /// whilst crashing etc.
        void emergencyCleanup() {
                pipes.emergencyCleanup();
        }
+
 private:
        ///
        static void callback(LyXServer *, string const & msg);