| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Config.Dyre.Relaunch
Description
This is the only other module aside from Config.Dyre which needs to be imported specially. It contains functions for restarting the program (which, usefully, will cause a recompile if the config has been changed), as well as saving and restoring state across said restarts.
The impossibly simple function arguments are a consequence of a little cheating we do using the System.IO.Storage library. Of course, we can't use the stored data unless something else put it there, so this module will probably explode horribly if used outside of a program whose recompilation is managed by Dyre.
The functions for saving and loading state come in two variants:
one which uses the Read and Show typeclasses, and one which
uses Data.Binary to serialize it. The Read and Show versions
are much easier to use thanks to automatic deriving, but the
binary versions offer more control over saving and loading, as
well as probably being a bit faster.
Synopsis
- relaunchMaster :: Maybe [String] -> IO ()
- relaunchWithTextState :: Show a => a -> Maybe [String] -> IO ()
- relaunchWithBinaryState :: Binary a => a -> Maybe [String] -> IO ()
- saveTextState :: Show a => a -> IO ()
- saveBinaryState :: Binary a => a -> IO ()
- restoreTextState :: Read a => a -> IO a
- restoreBinaryState :: Binary a => a -> IO a
Documentation
relaunchMaster :: Maybe [String] -> IO () Source #
Just relaunch the master binary. We don't have any important
state to worry about. (Or, like when relaunchWith<X>State calls
it, we're managing state on our own). It takes an argument which
can optionally specify a new set of arguments. If it is given a
value of Nothing, the current value of getArgs will be used.
relaunchWithTextState :: Show a => a -> Maybe [String] -> IO () Source #
Relaunch the master binary, but first preserve the program
state so that we can use the restoreTextState functions to
get it back again later.
relaunchWithBinaryState :: Binary a => a -> Maybe [String] -> IO () Source #
Serialize the state for later restoration with restoreBinaryState,
and then relaunch the master binary.
saveTextState :: Show a => a -> IO () Source #
Serialize a state as text, for later loading with the
restoreTextState function.
saveBinaryState :: Binary a => a -> IO () Source #
Serialize a state as binary data, for later loading with
the restoreBinaryState function.
restoreTextState :: Read a => a -> IO a Source #
Restore state which has been serialized through the
saveTextState function. Takes a default which is
returned if the state doesn't exist.
restoreBinaryState :: Binary a => a -> IO a Source #
Restore state which has been serialized through the
saveBinaryState function. Takes a default which is
returned if the state doesn't exist.