{-# 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)