Listing 1: The poller engine’s interface

namespace fpoller {
  extern const short WRITE;
  extern const short READ;
  
  template<typename Delegate> class basic_poller {
    private:
      Delegate delegate_;
    public:
      basic_poller():delegate_(){}
      void add(int fd,short interest, callback * cb){ 
      delegate_.add(fd,interest,cb);}
      void remove(int fd,short interest){
      delegate_.remove(fd,interest);}
      void remove(int fd){ remove(fd,WRITE); remove(fd,READ);}
      int poll(int timeout){return delegate_.poll(timeout);}
    };
}
— End of Listing —