-- | -- Module : System.Linux.Epoll -- Copyright : (c) 2009 Toralf Wittner -- License : LGPL -- Maintainer : toralf.wittner@gmail.com -- Stability : experimental -- Portability : non-portable module System.Linux.Epoll ( module System.Linux.Epoll.Base, dispatchLoop, defaultDispatchLoop ) where import Data.Maybe import Control.Monad import System.Linux.Epoll.Base -- | Repeatedly waits for epoll events and invokes the given callback function -- with each event occured. dispatchLoop :: Duration -> (Event a -> IO ()) -> Device -> IO () dispatchLoop dur f dev = forever $ wait dur dev >>= mapM_ (\e -> f e) -- | Like 'dispatchLoop' but uses a default 'Duration' of 500ms. defaultDispatchLoop :: (Event a -> IO ()) -> Device -> IO () defaultDispatchLoop = dispatchLoop (fromJust $ toDuration 500)