Copyright | (c) Roman Gonzalez 2017 |
---|---|
License | MIT |
Maintainer | romanandreg@gmail.com |
Stability | experimental |
Safe Haskell | Safe |
Language | Haskell2010 |
Provides functions that help on the creation of Application teardown sub-routines
- class ITeardown d where
- data Teardown
- teardown :: ITeardown d => d -> IO TeardownResult
- emptyTeardown :: Description -> Teardown
- newTeardown :: Description -> IO () -> IO Teardown
- newDynTeardown :: Description -> IO [TeardownResult] -> Teardown
- concatTeardown :: Description -> [Teardown] -> Teardown
- data TeardownResult
- = BranchResult {
- resultDescription :: !Description
- resultElapsedTime :: !NominalDiffTime
- resultDidFail :: !Bool
- resultListing :: ![TeardownResult]
- | LeafResult {
- resultDescription :: !Description
- resultElapsedTime :: !NominalDiffTime
- resultError :: !(Maybe SomeException)
- | EmptyResult {
- resultDescription :: !Description
- = BranchResult {
- didTeardownFail :: TeardownResult -> Bool
- failedToredownCount :: TeardownResult -> Int
- toredownCount :: TeardownResult -> Int
- renderTeardownReport :: TeardownResult -> Doc
Documentation
class ITeardown d where Source #
A record that is or contains a Teardown
sub-routine should
instantiate this typeclass
teardown :: d -> IO TeardownResult Source #
Executes teardown sub-routine returning a TeardownResult
Cleanup main type and function
Sub-routine that performs a resource cleanup operation
teardown :: ITeardown d => d -> IO TeardownResult Source #
Executes teardown sub-routine returning a TeardownResult
Functions to create a Teardown
record
emptyTeardown :: Description -> Teardown Source #
Creates a stub Teardown sub-routine, normally used when a contract expects a teardown return but there is no allocation being made
newDynTeardown :: Description -> IO [TeardownResult] -> Teardown Source #
Creates a Teardown sub-routine that is composed of inner sub-routines that are allocated at runtime. This is useful if allocations are being created and being hold on a Mutable variable of some sort (e.g. IORef, TVar, etc) so that on cleanup this Mutable variable is read and the results of the teardown operation are returned.
concatTeardown :: Description -> [Teardown] -> Teardown Source #
Creates a Teardown sub-routine that is composed of other smaller sub-routines. This is ideal for composing the cleanup of an application from smaller resources allocations that are known at compilation time.
Functions to deal with results from teardown
call
data TeardownResult Source #
Result from a Teardown
sub-routine
BranchResult | Result is composed by multiple teardown sub-routines |
| |
LeafResult | Result represents a single teardown sub-routine |
| |
EmptyResult | Represents a stub cleanup operation (for lifting pure values) |
|
didTeardownFail :: TeardownResult -> Bool Source #
Returns a boolean indicating if any of the cleanup sub-routine failed
failedToredownCount :: TeardownResult -> Int Source #
Returns number of sub-routines that threw an exception on execution of teardown
toredownCount :: TeardownResult -> Int Source #
Returns number of sub-routines executed at teardown
renderTeardownReport :: TeardownResult -> Doc Source #
Renders an ASCII Tree with the TeardownResult of a Teardown sub-routine execution