packages feed

control-event 1.2.1.1 → 1.3

raw patch · 4 files changed

+43/−18 lines, 4 filesdep +control-eventdep ~basedep ~containersdep ~stm

Dependencies added: control-event

Dependency ranges changed: base, containers, stm, time

Files

Control/Event.hs view
@@ -74,11 +74,10 @@ -- Asynchronous 'TimerReset' exceptions might occur to indicate a new,  -- earlier, alarm time. expireEvents :: EventSystem -> IO ()-expireEvents es = do-        block (do-                tid <- myThreadId-                forever $ catch (unblock (setTID (Just tid) es >> expireEvents' es))-                                (\TimerReset -> return ()) )+expireEvents es = mask $ \restore -> do+     tid <- myThreadId+     forever $ catch (restore (setTID (Just tid) es >> expireEvents' es))+                     (\TimerReset -> return ())   where   setTID i es = atomically (writeTVar (esThread es) i) @@ -194,7 +193,7 @@ evtSystemSize :: EventSystem -> STM Int evtSystemSize sys = do     evts <- readTVar (esEvents sys)-    return $ fold (\(_,m) n -> n + size m) 0 evts+    return $ foldr (\(_,m) n -> n + size m) 0 evts  -- |Tracks the alarm time and the earliest event.  If an earlier event is added -- the alarm time is updated and TimerReset is thrown to the expireEvent thread
Control/Event/Relative.hs view
@@ -2,10 +2,10 @@ -- event system that should perform better than the Control.Event module -- but does not provide features such as STM action scheduling. module Control.Event.Relative-	( EventId-	, addEvent-	, delEvent-	) where+        ( EventId+        , addEvent+        , delEvent+        ) where  import Prelude hiding (catch) import Control.Concurrent@@ -20,14 +20,14 @@ -- is returned, allowing the event to be canceled. addEvent :: Int -> IO () -> IO EventId addEvent delay event = do-	m <- newMVar False-	t <- forkIO (eventThread m)-	return (t,m)+        m <- newMVar False+        t <- forkIO (eventThread m)+        return (t,m)   where     eventThread m = do         threadDelay delay         forkIO $ runThread m-	return ()+        return ()     runThread m = do         b <- swapMVar m True         when (not b) event
Test/Event.hs view
@@ -42,7 +42,7 @@   decAndPrint a =      atomically (do           n <- readTVar a-	  writeTVar a (n - 1) )+          writeTVar a (n - 1) )  setAndCancelTimeout :: Int -> NominalDiffTime -> IO () setAndCancelTimeout n secs = do
control-event.cabal view
@@ -1,5 +1,5 @@ name:                control-event-version:             1.2.1.1+version:             1.3 synopsis:            Event scheduling system. description:         Allows scheduling and canceling of IO actions to be                      executed at a specified future time.@@ -9,7 +9,7 @@ author:              Thomas DuBuisson maintainer:          Thomas.DuBuisson@gmail.com build-type:          Simple-Cabal-Version:       >= 1.2.3+Cabal-Version:       >= 2.0 stability:           beta tested-with:         GHC == 6.10.3 extra-source-files:  Test/Event.hs Test/Timeout.hs@@ -19,5 +19,31 @@                        time >= 1.1,                        containers >= 0.1,                        stm >= 2.1-  extensions:          DeriveDataTypeable   exposed-modules:     Control.Event, Control.Event.Timeout, Control.Event.Relative+  default-language:    Haskell2010++test-suite control-event-test-absolute+    default-language: Haskell2010+    type: exitcode-stdio-1.0+    hs-source-dirs: Test+    main-is: Event.hs+    ghc-options:+    build-depends:+        base,+        control-event,+        stm,+        containers,+        time++test-suite control-event-test-relative+    default-language: Haskell2010+    type: exitcode-stdio-1.0+    hs-source-dirs: Test+    main-is: Timeout.hs+    ghc-options:+    build-depends:+        base,+        control-event,+        stm,+        containers,+        time