capataz-0.2.1.0: src/Capataz/HowTo/DynamicWorker.hs
{-# OPTIONS_GHC -Wno-warnings-deprecations #-}
{-# LANGUAGE OverloadedStrings #-}
module Capataz.HowTo.DynamicWorker
(
-- * Description
-- $description
-- * Code
-- $code
main
) where
import RIO
import Capataz
(
forkCapataz
, forkWorker
, terminateCapataz_
, buildWorkerOptions
, workerRestartStrategyL
, WorkerRestartStrategy(..)
, onSystemEventL
)
{- $description
The following example:
* creates a capataz system
* forks a worker process dynamically
* terminates capataz system
-}
{- $code
@
module Capataz.HowTo.DynamicWorker
myUselessWorker :: IO ()
myUselessWorker = return ()
main :: IO ()
main = do
bracket
('forkCapataz' \"dynamic-worker-example\"
(set 'onSystemEventL' traceDisplayIO))
'terminateCapataz_'
(\\capataz -> do
void $ 'forkWorker'
( 'buildWorkerOptions' \"useless-worker\"
myUselessWorker
(set 'workerRestartStrategyL' 'Transient')
)
capataz
threadDelay 1001000)
@
-}
myUselessWorker :: IO ()
myUselessWorker = return ()
-- | Function that runs the example
main :: IO ()
main = do
bracket
(forkCapataz "dynamic-worker-example"
(set onSystemEventL traceDisplayIO))
terminateCapataz_
(\capataz -> do
void $ forkWorker
( buildWorkerOptions "useless-worker"
myUselessWorker
(set workerRestartStrategyL Transient)
)
capataz
threadDelay 1001000)