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;
// 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;
+ // wait for an event for at most timeout milliseconds and process it;
+ // return true if we processed any events or false if timeout expired
+ // without anything happening
+ virtual bool Dispatch(int timeout = TIMEOUT_INFINITE) = 0;
virtual ~wxFDIODispatcher() { }
};
//
// 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);
// 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() { }