X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FPoller.hh;h=bc299534ebe0a6e6859429d118277a65b3bb1cfb;hb=bd9f9d3fd6fbcff0112a7bf48ab9284da9576b11;hp=0dc5504aa4c95fdf6ab955756b24bfc91efa30a4;hpb=919e588a2c387c9a910aa8761e65155a0d205bba;p=senf.git diff --git a/Scheduler/Poller.hh b/Scheduler/Poller.hh index 0dc5504..bc29953 100644 --- a/Scheduler/Poller.hh +++ b/Scheduler/Poller.hh @@ -23,8 +23,8 @@ /** \file \brief Poller public header */ -#ifndef HH_Poller_ -#define HH_Poller_ 1 +#ifndef HH_SENF_Scheduler_Poller_ +#define HH_SENF_Scheduler_Poller_ 1 // Custom includes #include @@ -37,8 +37,15 @@ namespace senf { namespace scheduler { +namespace detail { - /** \brief + /** \brief Epoll abstraction + + This class provides a more convenient interface to the epoll() API. File descriptors are + registered with pointers to a parameterized event type. After waiting for an event, the + Poller allows to iterate over the event instances for all posted events. + + \tparam Value Event type */ template class Poller @@ -63,8 +70,8 @@ namespace scheduler { enum Events { EV_READ = EPOLLIN, EV_PRIO = EPOLLPRI, EV_WRITE = EPOLLOUT, EV_HUP = EPOLLHUP, EV_ERR = EPOLLERR -}; - + }; + /////////////////////////////////////////////////////////////////////////// ///\name Structors and default members ///@{ @@ -75,12 +82,17 @@ namespace scheduler { ///@} /////////////////////////////////////////////////////////////////////////// - bool set(int fd, int events, Value * data); - void remove(int fd); - range wait(); + bool set(int fd, int events, Value * data); ///< Set file descriptor event data and mask + /**< The Poller does \e not own \a data. The value is owned + by some external entity (the dispatcher to be more + precise). */ + void remove(int fd); ///< Remove file descriptor + range wait(); ///< Wait for one event + /**< \returns a range of iterators which iterate over the + data values registered with the event */ - void timeout(int t); - int timeout() const; + void timeout(int t); ///< Set event timeout to \a t milliseconds + int timeout() const; ///< Current event timeout private: int epollFd_; @@ -88,7 +100,7 @@ namespace scheduler { }; -}} +}}} ///////////////////////////////hh.e//////////////////////////////////////// //#include "Poller.cci"