teardown-0.4.0.0: Build composable components for your application with clear teardown semantics

Copyright(c) Roman Gonzalez 20172018
LicenseMIT
Maintaineropen-source@roman-gonzalez.info
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Control.Teardown

Contents

Description

Provides functions that help on the creation of Application teardown sub-routines

Synopsis

Typeclasses for extending teardown functionality

class HasTeardown teardown where Source #

A record that is or contains a Teardown sub-routine should instantiate this typeclass

Minimal complete definition

getTeardown

Methods

getTeardown :: teardown -> Teardown Source #

Executes teardown sub-routine returning a TeardownResult

class IResource resource where Source #

A resource or sub-routine that can be transformed into a Teardown operation

Minimal complete definition

newTeardown

Methods

newTeardown :: Text -> resource -> IO Teardown Source #

Cleanup main type and function

data Teardown Source #

Sub-routine that performs a resource cleanup operation

Instances

Generic Teardown Source # 

Associated Types

type Rep Teardown :: * -> * #

Methods

from :: Teardown -> Rep Teardown x #

to :: Rep Teardown x -> Teardown #

NFData Teardown Source # 

Methods

rnf :: Teardown -> () #

type Rep Teardown Source # 
type Rep Teardown = D1 * (MetaData "Teardown" "Control.Teardown.Internal.Types" "teardown-0.4.0.0-5G5sxvEa6ofCsEgKw8QJjk" True) (C1 * (MetaCons "Teardown" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (IO TeardownResult))))

data TeardownResult Source #

Result from a Teardown sub-routine

Constructors

BranchResult

Result is composed by multiple teardown sub-routines

Fields

LeafResult

Result represents a single teardown sub-routine

Fields

EmptyResult

Represents a stub cleanup operation (for lifting pure values)

Fields

runTeardown :: HasTeardown t => t -> IO TeardownResult Source #

Executes all composed Teardown sub-routines safely, and returns a Tree data structure wich can be used to gather facts from the cleanup process.

runTeardown_ :: HasTeardown t => t -> IO () Source #

Executes all composed Teardown sub-routines safely.

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

newTeardown :: IResource resource => Text -> resource -> IO Teardown Source #

Functions to deal with results from teardown call

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

prettyTeardownResult :: TeardownResult -> Doc Source #

Renders an ASCII Tree with the TeardownResult of a Teardown sub-routine execution