namespace lyx {
-class LyXFunc;
class Server;
class LyXComm : public QObject {
Q_OBJECT
+ friend DWORD WINAPI pipeServerWrapper(void *);
+
public:
/// Max number of clients
enum { MAX_CLIENTS = 10 };
void read_ready();
#else
void read_ready(DWORD);
-
- /// The pipe server
- void pipeServer();
#endif
private:
/// This is -1 if not open
int outfd_;
#else
+ /// The pipe server returns false when exiting due to an error
+ bool pipeServer();
+
/// Start an overlapped connection
- void startPipe(DWORD);
+ bool startPipe(DWORD);
/// Reset an overlapped connection
- void resetPipe(DWORD, bool close_handle = false);
+ bool resetPipe(DWORD, bool close_handle = false);
/// Close event and pipe handles
- void closeHandles(DWORD);
+ void closeHandles();
/// Catch pipe ready-to-be-read notification
bool event(QEvent *);
/// Check whether the pipe server must be stopped
- BOOL checkStopServer();
+ bool checkStopServer(DWORD timeout = 0);
/// The filename of a (in or out) pipe instance
std::string const pipeName(DWORD) const;
// FIXME IN 0.13
// Hack! This should be changed in 0.13
- // 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)
///
- Server(LyXFunc * f, std::string const & pip);
+ Server(std::string const & pip);
///
~Server();
///
///
int numclients_;
///
- LyXFunc * func_;
- ///
LyXComm pipes_;
};
/// Implementation is in LyX.cpp
-extern Server & theServer();
+Server & theServer();
} // namespace lyx