PPI: Allow to change the IOEvent handle/event mask
[senf.git] / PPI / IOEvent.hh
index 77c5d26..730b66b 100644 (file)
@@ -23,8 +23,8 @@
 /** \file
     \brief IOEvent public header */
 
-#ifndef HH_IOEvent_
-#define HH_IOEvent_ 1
+#ifndef HH_SENF_PPI_IOEvent_
+#define HH_SENF_PPI_IOEvent_ 1
 
 // Custom includes
 #include "../Scheduler/Scheduler.hh"
@@ -77,23 +77,28 @@ namespace ppi {
         // with the enumeration symbols
 
         enum EventFlags { 
-              Read  = Scheduler::EV_READ   /**< FileHandle is readable */
-            , Prio = Scheduler::EV_PRIO    /**< FileHandle priority data is readable */
-            , Write = Scheduler::EV_WRITE  /**< FileHandle is writable */
-            , Hup = Scheduler::EV_HUP      /**< Hangup condition on FileHandle */
-            , Err = Scheduler::EV_ERR      /**< Some other error condition on FileHandle */
+              Read  = scheduler::FdEvent::EV_READ   /**< FileHandle is readable */
+            , Prio = scheduler::FdEvent::EV_PRIO    /**< FileHandle priority data is readable */
+            , Write = scheduler::FdEvent::EV_WRITE  /**< FileHandle is writable */
+            , Hup = scheduler::FdEvent::EV_HUP      /**< Hangup condition on FileHandle */
+            , Err = scheduler::FdEvent::EV_ERR      /**< Some other error condition on FileHandle */
         };
 
         ///////////////////////////////////////////////////////////////////////////
         ///\name Structors and default members
         ///@{
 
+        IOEvent();
+
         template <class Handle>
         IOEvent(Handle handle, unsigned events);
 
         ///@}
         ///////////////////////////////////////////////////////////////////////////
 
+        template <class Handle>
+        void set(Handle handle, unsigned events);
+
         /** \brief Unhandled error condition */
         struct ErrorException : public senf::Exception
         { ErrorException() : senf::Exception("senf::ppi::IOEvent::ErrorException"){} };
@@ -106,12 +111,12 @@ namespace ppi {
 
     private:
         virtual void v_enable();
-         virtual void v_disable();
+        virtual void v_disable();
         
         void cb(int event);
 
         int fd_;
-        unsigned events_;
+        scheduler::FdEvent event_;
     };