X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ad8d42f83cdf7a4f26969957e94ed166a1a5710e..0555b2a0a3c509687e7fc5aeb160f5171b7e6311:/include/wx/private/fdiodispatcher.h diff --git a/include/wx/private/fdiodispatcher.h b/include/wx/private/fdiodispatcher.h index 0f71d94fd6..e3fad1cc79 100644 --- a/include/wx/private/fdiodispatcher.h +++ b/include/wx/private/fdiodispatcher.h @@ -12,23 +12,7 @@ #define _WX_PRIVATE_FDIODISPATCHER_H_ #include "wx/hashmap.h" - -// handler used to process events on descriptors -class wxFDIOHandler -{ -public: - // called when descriptor is available for non-blocking read - virtual void OnReadWaiting() = 0; - - // called when descriptor is available for non-blocking write - virtual void OnWriteWaiting() = 0; - - // called when there is exception on descriptor - virtual void OnExceptionWaiting() = 0; - - // virtual dtor for the base class - virtual ~wxFDIOHandler() { } -}; +#include "wx/private/fdiohandler.h" // those flags describes sets where descriptor should be added enum wxFDIODispatcherEntryFlags @@ -45,6 +29,18 @@ class WXDLLIMPEXP_BASE wxFDIODispatcher public: enum { TIMEOUT_INFINITE = -1 }; + // return the global dispatcher to be used for IO events, can be NULL only + // if wxSelectDispatcher wasn't compiled into the library at all as + // creating it never fails + // + // don't delete the returned pointer + static wxFDIODispatcher *Get(); + + // if we have any registered handlers, check for any pending events to them + // and dispatch them -- this is used from wxX11 and wxDFB event loops + // implementation + static void DispatchPending(); + // register handler for the given descriptor with the dispatcher, return // true on success or false on error virtual bool RegisterFD(int fd, wxFDIOHandler *handler, int flags) = 0; @@ -52,13 +48,16 @@ public: // modify descriptor flags or handler, return true on success virtual bool ModifyFD(int fd, wxFDIOHandler *handler, int flags) = 0; - // unregister descriptor previously registered with RegisterFD(), the - // caller is responsible for deleting the returned handler pointer if - // necessary - virtual bool UnregisterFD(int fd, int flags) = 0; + // unregister descriptor previously registered with RegisterFD() + virtual bool UnregisterFD(int fd) = 0; - // loops waiting for an event to happen on any of the descriptors - virtual void RunLoop(int timeout) = 0; + // check if any events are currently available without dispatching them + virtual bool HasPending() const = 0; + + // wait for an event for at most timeout milliseconds and process it; + // return the number of events processed (possibly 0 if timeout expired) or + // -1 if an error occurred + virtual int Dispatch(int timeout = TIMEOUT_INFINITE) = 0; virtual ~wxFDIODispatcher() { } }; @@ -94,10 +93,12 @@ WX_DECLARE_HASH_MAP( // // notice that all functions for FD management have implementation // in the base class and should be called from the derived classes -class WXDLLIMPEXP_BASE wxMappedFDIODispatcher : public wxFDIODispatcher { +class WXDLLIMPEXP_BASE wxMappedFDIODispatcher : public wxFDIODispatcher +{ public: // find the handler for the given fd, return NULL if none wxFDIOHandler *FindHandler(int fd) const; + // register handler for the given descriptor with the dispatcher, return // true on success or false on error virtual bool RegisterFD(int fd, wxFDIOHandler *handler, int flags); @@ -105,10 +106,8 @@ public: // modify descriptor flags or handler, return true on success virtual bool ModifyFD(int fd, wxFDIOHandler *handler, int flags); - // unregister descriptor previously registered with RegisterFD(), the - // caller is responsible for deleting the returned handler pointer if - // necessary - virtual bool UnregisterFD(int fd, int flags); + // unregister descriptor previously registered with RegisterFD() + virtual bool UnregisterFD(int fd); virtual ~wxMappedFDIODispatcher() { }