X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2Fforkedcontr.h;h=7f55c798d06e15bfdcdc77b045a995e5c286c5fd;hb=c8429d4bbc2e9291a6b5742233aecb089a3eece1;hp=ca02d23b02b87cc60cd043eca2071511fdd54b91;hpb=d4c54a1da34fc8affec47b7280acfa985066a22c;p=lyx.git diff --git a/src/support/forkedcontr.h b/src/support/forkedcontr.h index ca02d23b02..7f55c798d0 100644 --- a/src/support/forkedcontr.h +++ b/src/support/forkedcontr.h @@ -16,11 +16,16 @@ #ifndef FORKEDCONTR_H #define FORKEDCONTR_H -#include // needed for pid_t +#include + +#ifdef HAVE_SYS_TYPES_H +# include +#endif #include +#include +#include -class Timeout; namespace lyx { namespace support { @@ -35,6 +40,12 @@ public: /// Add a new child process to the list of controlled processes. void addCall(ForkedProcess const &); + /** Those child processes that are found to have finished are removed + * from the list and their callback function is passed the final + * return state. + */ + void handleCompletedProcesses(); + /** Kill this process prematurely and remove it from the list. * The process is killed within tolerance secs. * See forkedcall.[Ch] for details. @@ -46,24 +57,22 @@ private: ForkedcallsController(ForkedcallsController const &); ~ForkedcallsController(); - /** This method is connected to the timer. Every XX ms it is called - * so that we can check on the status of the children. Those that - * are found to have finished are removed from the list and their - * callback function is passed the final return state. - */ - void timer(); + typedef boost::shared_ptr ForkedProcessPtr; + typedef std::list ListType; + typedef ListType::iterator iterator; + + iterator find_pid(pid_t); /// The child processes - typedef std::list ListType; - /// ListType forkedCalls; - - /** The timer. Enables us to check the status of the children - * every XX ms and to invoke a callback on completion. - */ - Timeout * timeout_; }; + +#if defined(_WIN32) +// a wrapper for GetLastError() and FormatMessage(). +std::string const getChildErrorMessage(); +#endif + } // namespace support } // namespace lyx