diff --git a/src/Quasar/Timer/TimerFd.hs b/src/Quasar/Timer/TimerFd.hs index 31fa49b6c2f4cd601cfed06184757008c0a66ec8..8ea9dd78b512b1eb38c32aab175b24789b1a64ce 100644 --- a/src/Quasar/Timer/TimerFd.hs +++ b/src/Quasar/Timer/TimerFd.hs @@ -12,15 +12,12 @@ import Control.Concurrent import Control.Monad.Catch import Foreign import Foreign.C -import GHC.Conc (closeFdWith) -import GHC.IO.Handle.FD import Quasar.Awaitable -import Quasar.Async -import Quasar.Disposable +import Quasar.Async.V2 +import Quasar.Monad import Quasar.Prelude -import Quasar.ResourceManager +import Quasar.Resources import Quasar.Timer.PosixTimer -import System.IO import System.Posix.Types @@ -43,14 +40,14 @@ newtype TimerFd = TimerFd Fd deriving stock (Eq, Show) deriving newtype Num -newTimerFd :: (MonadResourceManager m, MonadIO m, MonadMask m) => ClockId -> IO () -> m TimerFd +newTimerFd :: (MonadQuasar m, MonadIO m, MonadMask m) => ClockId -> IO () -> m TimerFd newTimerFd clockId callback = mask_ do timer <- liftIO $ runInBoundThread do throwErrnoIfMinus1 "timerfd_create" do c_timerfd_create (toCClockId clockId) c_TFD_CLOEXEC workerTask <- async $ liftIO $ worker timer - registerAsyncDisposeAction do + registerDisposeAction do await $ isDisposed workerTask timerFdClose timer