@@ -17,29 +17,30 @@ module Network.Wai.Handler.Warp.Timeout (
1717 , dummyHandle
1818 ) where
1919
20−import System.Mem.Weak (deRefWeak)
2120#if MIN_VERSION_base(4,6,0)
2221import Control.Concurrent (mkWeakThreadId)
2322#else
24−import GHC.Weak (Weak (..))
2523import GHC.Conc.Sync (ThreadId (..))
26−import GHC.IO (IO (IO))
2724import GHC.Exts (mkWeak#)
25+import GHC.IO (IO (IO))
26+import GHC.Weak (Weak (..))
2827#endif
2928import Control.Concurrent (forkIO, threadDelay, myThreadId, killThread)
3029import qualified Control.Exception as E
3130import Control.Monad (forever, void)
31+import Data.IORef (IORef)
3232import qualified Data.IORef as I
33−import System.IO.Unsafe (unsafePerformIO)
3433import Data.Typeable (Typeable)
34+import System.IO.Unsafe (unsafePerformIO)
35+import System.Mem.Weak (deRefWeak)
3536
3637-- | A timeout manager
37−newtype Manager = Manager (I.IORef [Handle])
38+newtype Manager = Manager (IORef [Handle])
3839
3940-- | A handle used by 'Manager'
4041--
4142-- First field is action to be performed on timeout.
42−data Handle = Handle (IO ()) (I.IORef State)
43+data Handle = Handle (IO ()) (IORef State)
4344
4445-- | A dummy @Handle@.
4546dummyHandle :: Handle