X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FFdDispatcher.hh;h=affc61da678d0eb348de76e138a6da6bae6977b7;hb=ee63e5771e9d69c7fe6de6c1b53b92d1307f2fc1;hp=bb947ea6f77f20db7ce569b4150e169226cd1d9f;hpb=919e588a2c387c9a910aa8761e65155a0d205bba;p=senf.git diff --git a/Scheduler/FdDispatcher.hh b/Scheduler/FdDispatcher.hh index bb947ea..affc61d 100644 --- a/Scheduler/FdDispatcher.hh +++ b/Scheduler/FdDispatcher.hh @@ -38,7 +38,9 @@ namespace senf { namespace scheduler { - /** \brief + /** \brief Scheduler dispatcher managing poll-able file descriptors + + File descriptors are added directly to the event loop. */ class FdDispatcher { @@ -58,18 +60,33 @@ namespace scheduler { ///\name Structors and default members ///@{ - explicit FdDispatcher(FdManager & manager, FIFORunner & runner); + FdDispatcher(FdManager & manager, FIFORunner & runner); ~FdDispatcher(); ///@} /////////////////////////////////////////////////////////////////////////// - void add(int fd, Callback const & cb, int events = EV_ALL); - void remove(int fd, int events = EV_ALL); + bool add(std::string const & name, int fd, Callback const & cb, int events = EV_ALL); + ///< Add file descriptor callback + /**< There is always one active callback for each + combination of file descriptor and event. Registering a + new callback will overwrite the old callback. + \param[in] name descriptive name + \param[in] fd file descriptor + \param[in] cb callback + \param[in] events Events to call \a cb for */ + + void remove(int fd, int events = EV_ALL); ///< Remove callback + /**< \param[in] fd file descriptor + \param[in] events Events for which to remove the + callback */ + + bool empty() const; ///< \c true, if no file descriptors are registered. protected: private: + /// Internal: File descriptor event struct FdEvent : public detail::FdTask<0, FdEvent>, public detail::FdTask<1, FdEvent>, @@ -81,9 +98,7 @@ namespace scheduler { typedef detail::FdTask<2, FdEvent> WriteTask; virtual void signal(int events); - int activeEvents() const; - int events; };