Safe Haskell | None |
---|---|
Language | GHC2021 |
Polysemy.Conc.Effect.Monitor
Description
Synopsis
- data Restart = Restart
- data Monitor action (a :: Type -> Type) b where
- monitor :: forall action (r :: EffectRow) a. Member (Monitor action) r => Sem r a -> Sem r a
- type ScopedMonitor action = Scoped_ (Monitor action)
- type RestartingMonitor = ScopedMonitor Restart
- data MonitorCheck (r :: EffectRow) = MonitorCheck {
- interval :: NanoSeconds
- check :: Sem r Bool
- hoistMonitorCheck :: forall (r :: EffectRow) (r' :: EffectRow). (forall x. Sem r x -> Sem r' x) -> MonitorCheck r -> MonitorCheck r'
- withMonitor :: forall action (r :: EffectRow). Member (ScopedMonitor action) r => InterpreterFor (Monitor action) r
- restart :: forall (r :: EffectRow). Member (ScopedMonitor Restart) r => InterpreterFor (Monitor Restart) r
Documentation
Marker type for the restarting action for Monitor
.
Constructors
Restart |
data Monitor action (a :: Type -> Type) b where Source #
Mark a region as being subject to intervention by a monitoring program.
This can mean that a thread is repeatedly checking a condition and cancelling this region when it is unmet.
A use case could be checking whether a remote service is available, or whether the system was suspended and resumed.
This should be used in a Scoped_
context, like withMonitor
.
monitor :: forall action (r :: EffectRow) a. Member (Monitor action) r => Sem r a -> Sem r a Source #
Mark a region as being subject to intervention by a monitoring program.
type ScopedMonitor action = Scoped_ (Monitor action) Source #
type RestartingMonitor = ScopedMonitor Restart Source #
data MonitorCheck (r :: EffectRow) Source #
Constructors
MonitorCheck | |
Fields
|
hoistMonitorCheck :: forall (r :: EffectRow) (r' :: EffectRow). (forall x. Sem r x -> Sem r' x) -> MonitorCheck r -> MonitorCheck r' Source #
Transform the stack of the check in a MonitorCheck
.
withMonitor :: forall action (r :: EffectRow). Member (ScopedMonitor action) r => InterpreterFor (Monitor action) r Source #
Start a region that can contain monitor-intervention regions.
restart :: forall (r :: EffectRow). Member (ScopedMonitor Restart) r => InterpreterFor (Monitor Restart) r Source #
Variant of withMonitor
that uses the Restart
strategy.