X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b46b1d59d6f69ad80dcf5955375578a6504d100a..a721fd82b7ca8c97048453d4aaff559e8f741d69:/include/wx/unix/private/epolldispatcher.h diff --git a/include/wx/unix/private/epolldispatcher.h b/include/wx/unix/private/epolldispatcher.h index 0b4079463e..e32df9cce6 100644 --- a/include/wx/unix/private/epolldispatcher.h +++ b/include/wx/unix/private/epolldispatcher.h @@ -13,35 +13,42 @@ #include "wx/defs.h" -#ifdef HAVE_SYS_EPOLL_H +#ifdef wxUSE_EPOLL_DISPATCHER #include "wx/private/fdiodispatcher.h" -class WXDLLIMPEXP_CORE wxEpollDispatcher : public wxFDIODispatcher +struct epoll_event; + +class WXDLLIMPEXP_BASE wxEpollDispatcher : public wxFDIODispatcher { public: - // get pointer to the unique instance of this class, can return NULL if + // create a new instance of this class, can return NULL if // epoll() is not supported on this system // - // do not delete the returned pointer - static wxEpollDispatcher *Get(); + // the caller should delete the returned pointer + static wxEpollDispatcher *Create(); + + virtual ~wxEpollDispatcher(); // implement base class pure virtual methods virtual bool RegisterFD(int fd, wxFDIOHandler* handler, int flags = wxFDIO_ALL); virtual bool ModifyFD(int fd, wxFDIOHandler* handler, int flags = wxFDIO_ALL); - virtual wxFDIOHandler *UnregisterFD(int fd, int flags = wxFDIO_ALL); - virtual void RunLoop(int timeout = TIMEOUT_INFINITE); + virtual bool UnregisterFD(int fd); + virtual bool HasPending() const; + virtual int Dispatch(int timeout = TIMEOUT_INFINITE); private: - // ctor is private, use Get() - wxEpollDispatcher(); + // ctor is private, use Create() + wxEpollDispatcher(int epollDescriptor); + + // common part of HasPending() and Dispatch(): calls epoll_wait() with the + // given timeout + int DoPoll(epoll_event *events, int numEvents, int timeout) const; - // return true if the object was successfully initialized - bool IsOk() const { return m_epollDescriptor != -1; } int m_epollDescriptor; }; -#endif // HAVE_SYS_EPOLL_H +#endif // wxUSE_EPOLL_DISPATCHER #endif // _WX_PRIVATE_SOCKETEVTDISPATCH_H_