-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Systemd facilities (Socket activation, Notify) -- -- A module for Systemd facilities. @package systemd @version 2.0.0 -- | Implementation of Systemd facilities to create and manage daemons. -- -- This module contains socket activation and notify tools. See -- --
-- import Control.Monad(forever) -- import System.Systemd.Daemon(notifyWatchdog) -- -- main :: IO () -- main = forever $ do -- functionThatMayHang -- notifyWatchdog ---- -- If you use the service described as below, Systemd will restart your -- program each time the watchdog fail to notify itself under 60 sec. -- --
-- [Unit] -- Description=MyDaemon -- -- [Service] -- Type=simple -- TimeoutStartSec=0 -- ExecStart=AbsolutePathToMyExecutable -- WatchdogSec=60 -- Restart=on-failure -- -- [Install] -- WantedBy=multi-user.target --module System.Systemd.Daemon -- | Notify systemd about an event -- -- After notifying systemd the Bool parameter specify if the -- environnement shall be unset (Further call to notify will fail) -- -- The String is the event to pass -- -- Returns Nothing if the program was not started with systemd or -- that the environnement was previously unset notify :: Bool -> String -> IO (Maybe ()) -- | Same as notify but send along a socket to be stored -- -- It is up to the caller to properly set the message (i.e: do not forget -- to set FDSTORE=1) notifyWithFD :: Bool -> String -> Socket -> IO (Maybe ()) -- | Notify systemd to store a socket for us. -- -- To be used along getActivatedSockets during a restart -- -- Usefull for zero downtime restart storeFd :: Socket -> IO (Maybe ()) -- | Notify systemd to store a socket for us and specify a name. -- -- To be used along getActivatedSocketsWithNames during a restart -- -- Usefull for zero downtime restart storeFdWithName :: Socket -> String -> IO (Maybe ()) -- | Notify the watchdog that the program is still alive notifyWatchdog :: IO (Maybe ()) -- | Notify the systemd that the program is ready notifyReady :: IO (Maybe ()) -- | Notify systemd of the PID of the program (for after a fork) notifyPID :: CPid -> IO (Maybe ()) -- | Notify systemd of an Errno error notifyErrno :: Errno -> IO (Maybe ()) -- | Notify systemd of the status of the program. -- -- An arbitrary String can be passed notifyStatus :: String -> IO (Maybe ()) -- | Notify systemd of a DBUS error like. -- -- Correct formatting of the String is left to the caller notifyBusError :: String -> IO (Maybe ()) -- | Notify systemd that the service is reloading its configuration notifyReloading :: IO (Maybe ()) -- | Notify systemd that the service is beginning its shutdown notifyStopping :: IO (Maybe ()) -- | Return a list of activated sockets, if the program was started with -- socket activation. -- -- The sockets are in the same order as in the associated -- .socket file. The sockets will have their family, type, and -- status set appropriately. -- -- Returns Nothing in systems without socket activation (or when -- the program was not socket activated). getActivatedSockets :: IO (Maybe [Socket]) -- | Same as getActivatedSockets but return also the names -- associated with those sockets if storeFdWithName was used or -- specified in the .socket file. -- -- IF storeFd was used to transmit the socket to systemd, the name -- will be a generic one (i.e: usally "stored") getActivatedSocketsWithNames :: IO (Maybe [(Socket, String)]) -- | Unset all environnement variable related to Systemd. -- -- Calls to notify like and getActivatedSockets functions -- will return Nothing after that unsetEnvironnement :: IO ()