text: /////////////////////////////////////////////////////////////////////////////
  // Name:        wx/unix/private/epolldispatcher.h
  // Purpose:     wxEpollDispatcher class
  // Authors:     Lukasz Michalski
  // Created:     April 2007
  // Copyright:   (c) Lukasz Michalski
  // RCS-ID:      $Id$
  // Licence:     wxWindows licence
  /////////////////////////////////////////////////////////////////////////////
  
  #ifndef _WX_PRIVATE_EPOLLDISPATCHER_H_
  #define _WX_PRIVATE_EPOLLDISPATCHER_H_
  
  #include "wx/defs.h"
  
  #ifdef wxUSE_EPOLL_DISPATCHER
  
  #include "wx/private/fdiodispatcher.h"
  
  struct epoll_event;
  
  class WXDLLIMPEXP_BASE wxEpollDispatcher : public wxFDIODispatcher
  {
  public:
      // create a new instance of this class, can return NULL if
      // epoll() is not supported on this system
      //
      // 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 bool UnregisterFD(int fd);
      virtual bool HasPending() const;
      virtual int Dispatch(int timeout = TIMEOUT_INFINITE);
  
  private:
      // 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;
  
  
      int m_epollDescriptor;
  };
  
  #endif // wxUSE_EPOLL_DISPATCHER
  
  #endif // _WX_PRIVATE_SOCKETEVTDISPATCH_H_
  