Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Synopsis
- data Interrupt :: Effect where
- killOnQuit :: forall r a. Member Interrupt r => Text -> Sem r a -> Sem r (Maybe a)
- interrupted :: forall r. Member Interrupt r => Sem r Bool
- waitQuit :: forall r. Member Interrupt r => Sem r ()
- quit :: forall r. Member Interrupt r => Sem r ()
- unregister :: forall r. Member Interrupt r => Text -> Sem r ()
- register :: forall r. Member Interrupt r => Text -> IO () -> Sem r ()
- killOnQuit_ :: Member Interrupt r => Text -> Sem r a -> Sem r ()
Documentation
data Interrupt :: Effect where Source #
The interrupt handler effect allows three kinds of interaction for interrupt signals:
- Execute a callback when a signal is received
- Block a thread until a signal is received
- Kill a thread when a signal is received
For documentation on the constructors, see the module Polysemy.Conc.Effect.Interrupt.
import qualified Polysemy.Conc.Effect.Interrupt as Interrupt prog = do Interrupt.register "task 1" (putStrLn "interrupted") Interrupt.killOnQuit $ forever do doSomeWork
Register :: Text -> IO () -> Interrupt m () | Add a computation to be executed on interrupt, using the first argument as a key. |
Unregister :: Text -> Interrupt m () | Remove the previously added handler with the given key. |
Quit :: Interrupt m () | Manually trigger the interrupt. |
WaitQuit :: Interrupt m () | Block until an interrupt is triggered. |
Interrupted :: Interrupt m Bool | Indicate whether an interrupt was triggered. |
KillOnQuit :: Text -> m a -> Interrupt m (Maybe a) | Execute a computation, waiting for it to finish, killing its thread on interrupt. |
killOnQuit :: forall r a. Member Interrupt r => Text -> Sem r a -> Sem r (Maybe a) Source #
Execute a computation, waiting for it to finish, killing its thread on interrupt.
interrupted :: forall r. Member Interrupt r => Sem r Bool Source #
Indicate whether an interrupt was triggered.
unregister :: forall r. Member Interrupt r => Text -> Sem r () Source #
Remove the previously added handler with the given key.
register :: forall r. Member Interrupt r => Text -> IO () -> Sem r () Source #
Add a computation to be executed on interrupt, using the first argument as a key.
killOnQuit_ :: Member Interrupt r => Text -> Sem r a -> Sem r () Source #
Variant of killOnQuit
that returns ()
.