(original) (raw)
{-# LANGUAGE NoImplicitPrelude #-}
module GHC.Event.TimeOut where
import qualified GHC.Event.PSQ as Q import GHC.Event.Unique (Unique)
type TimeoutQueue = Q.PSQ TimeoutCallback
type TimeoutCallback = IO ()
type TimeoutEdit = TimeoutQueue -> TimeoutQueue
newtype TimeoutKey = TK Unique deriving (TimeoutKey -> TimeoutKey -> Bool (TimeoutKey -> TimeoutKey -> Bool) -> (TimeoutKey -> TimeoutKey -> Bool) -> Eq TimeoutKey forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: TimeoutKey -> TimeoutKey -> Bool $c/= :: TimeoutKey -> TimeoutKey -> Bool == :: TimeoutKey -> TimeoutKey -> Bool $c== :: TimeoutKey -> TimeoutKey -> Bool Eq, Eq TimeoutKey Eq TimeoutKey -> (TimeoutKey -> TimeoutKey -> Ordering) -> (TimeoutKey -> TimeoutKey -> Bool) -> (TimeoutKey -> TimeoutKey -> Bool) -> (TimeoutKey -> TimeoutKey -> Bool) -> (TimeoutKey -> TimeoutKey -> Bool) -> (TimeoutKey -> TimeoutKey -> TimeoutKey) -> (TimeoutKey -> TimeoutKey -> TimeoutKey) -> Ord TimeoutKey TimeoutKey -> TimeoutKey -> Bool TimeoutKey -> TimeoutKey -> Ordering TimeoutKey -> TimeoutKey -> TimeoutKey forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: TimeoutKey -> TimeoutKey -> TimeoutKey $cmin :: TimeoutKey -> TimeoutKey -> TimeoutKey max :: TimeoutKey -> TimeoutKey -> TimeoutKey $cmax :: TimeoutKey -> TimeoutKey -> TimeoutKey
= :: TimeoutKey -> TimeoutKey -> Bool $c>= :: TimeoutKey -> TimeoutKey -> Bool :: TimeoutKey -> TimeoutKey -> Bool $c> :: TimeoutKey -> TimeoutKey -> Bool <= :: TimeoutKey -> TimeoutKey -> Bool $c<= :: TimeoutKey -> TimeoutKey -> Bool < :: TimeoutKey -> TimeoutKey -> Bool $c< :: TimeoutKey -> TimeoutKey -> Bool compare :: TimeoutKey -> TimeoutKey -> Ordering $ccompare :: TimeoutKey -> TimeoutKey -> Ordering Ord)