Safe Haskell | None |
---|---|
Language | Haskell2010 |
Control.Monad.Component.Development
Synopsis
- data ComponentM a
- runComponentDevel :: (ComponentEvent -> IO ()) -> Text -> ComponentM a -> (a -> IO b) -> IO ()
- data ComponentError
- data ComponentBuildError
- = DuplicatedComponentKeyDetected !Description
- | ComponentAllocationFailed !Description !SomeException
- | ComponentErrorThrown !SomeException
- | ComponentIOLiftFailed !SomeException
- data ComponentEvent
- data Build
- buildElapsedTime :: Build -> NominalDiffTime
- buildFailure :: Build -> Maybe SomeException
- data BuildResult
- toBuildList :: BuildResult -> [Build]
Making ComponentM
values useful
data ComponentM a #
Represents the construction of a Component in your application, components
may be composed using a Monad
or Applicative
interface.
Instances
MonadIO ComponentM | |
Defined in Control.Monad.Component.Internal.Types Methods liftIO :: IO a -> ComponentM a # | |
MonadThrow ComponentM | |
Defined in Control.Monad.Component.Internal.Types Methods throwM :: (HasCallStack, Exception e) => e -> ComponentM a # | |
Applicative ComponentM | |
Defined in Control.Monad.Component.Internal.Types Methods pure :: a -> ComponentM a # (<*>) :: ComponentM (a -> b) -> ComponentM a -> ComponentM b # liftA2 :: (a -> b -> c) -> ComponentM a -> ComponentM b -> ComponentM c # (*>) :: ComponentM a -> ComponentM b -> ComponentM b # (<*) :: ComponentM a -> ComponentM b -> ComponentM a # | |
Functor ComponentM | |
Defined in Control.Monad.Component.Internal.Types Methods fmap :: (a -> b) -> ComponentM a -> ComponentM b # (<$) :: a -> ComponentM b -> ComponentM a # | |
Monad ComponentM | |
Defined in Control.Monad.Component.Internal.Types Methods (>>=) :: ComponentM a -> (a -> ComponentM b) -> ComponentM b # (>>) :: ComponentM a -> ComponentM b -> ComponentM b # return :: a -> ComponentM a # |
Arguments
:: (ComponentEvent -> IO ()) | Callback function to trace |
-> Text | Name of your application (used for tracing purposes) |
-> ComponentM a | Builder of your application environment |
-> (a -> IO b) | Function where your main application will live, note this function must block the thread as how the normal main would |
-> IO () |
Similar to runComponentM1
, when running for the first time, it creates an
application in the REPL environment, subsequent invocations will teardown the
and build up the application again.
All ComponentM
characteristics are driven by this particular use-case given:
- It will print out the time spent on initialization and teardown
- It guarantees that teardown operations are as robust as possible
- It documents your application components to pin-point quickly errors in your reloading logic
Error Records
data ComponentError #
Exception thrown by the runComponentM
family of functions
Constructors
ComponentRuntimeFailed | Failure raised when the Application Callback given to a |
Fields
| |
ComponentBuildFailed | Failure raised when execution of |
Fields
|
Instances
data ComponentBuildError #
Exception raised on the execution of IO
sub-routines used when
constructing ComponentM
values (e.g. buildComponent
)
Constructors
DuplicatedComponentKeyDetected !Description | Failure thrown when using the same component key on a Component composition |
ComponentAllocationFailed !Description !SomeException | Failure thrown when the allocation sub-routine of a Component fails with an exception |
ComponentErrorThrown !SomeException | Failure thrown when calling the |
ComponentIOLiftFailed !SomeException | Failure thrown when calling |
Instances
Exception ComponentBuildError | |||||
Defined in Control.Monad.Component.Internal.Types | |||||
Generic ComponentBuildError | |||||
Defined in Control.Monad.Component.Internal.Types Associated Types
Methods from :: ComponentBuildError -> Rep ComponentBuildError x # to :: Rep ComponentBuildError x -> ComponentBuildError # | |||||
Show ComponentBuildError | |||||
Defined in Control.Monad.Component.Internal.Types Methods showsPrec :: Int -> ComponentBuildError -> ShowS # show :: ComponentBuildError -> String # showList :: [ComponentBuildError] -> ShowS # | |||||
Pretty ComponentBuildError | |||||
Defined in Control.Monad.Component.Internal.Types | |||||
type Rep ComponentBuildError | |||||
Defined in Control.Monad.Component.Internal.Types type Rep ComponentBuildError = D1 ('MetaData "ComponentBuildError" "Control.Monad.Component.Internal.Types" "componentm-0.0.0.2-HkrqEsYQVy9GWV6FCWKEhB" 'False) ((C1 ('MetaCons "DuplicatedComponentKeyDetected" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Description)) :+: C1 ('MetaCons "ComponentAllocationFailed" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Description) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SomeException))) :+: (C1 ('MetaCons "ComponentErrorThrown" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SomeException)) :+: C1 ('MetaCons "ComponentIOLiftFailed" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SomeException)))) |
ComponentM
tracing accessors
data ComponentEvent #
An event record used to trace the execution of an application initialization and teardown
Constructors
ComponentBuilt !BuildResult | |
ComponentReleased !TeardownResult | |
ComponentErrorDetected !ComponentError |
Instances
Contains metadata about the build of a resource from a ComponentM
value
Instances
Generic Build | |||||
Defined in Control.Monad.Component.Internal.Types Associated Types
| |||||
Pretty Build | |||||
Defined in Control.Monad.Component.Internal.Types | |||||
Display Build | |||||
Defined in Control.Monad.Component.Internal.Types | |||||
type Rep Build | |||||
Defined in Control.Monad.Component.Internal.Types type Rep Build = D1 ('MetaData "Build" "Control.Monad.Component.Internal.Types" "componentm-0.0.0.2-HkrqEsYQVy9GWV6FCWKEhB" 'False) (C1 ('MetaCons "Build" 'PrefixI 'True) ((S1 ('MetaSel ('Just "componentDesc") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Description) :*: S1 ('MetaSel ('Just "componentTeardown") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Teardown)) :*: (S1 ('MetaSel ('Just "buildElapsedTime") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 NominalDiffTime) :*: (S1 ('MetaSel ('Just "buildFailure") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe SomeException)) :*: S1 ('MetaSel ('Just "buildDependencies") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Set Description)))))) |
buildElapsedTime :: Build -> NominalDiffTime #
Elasped time in the allocation of a component resource
buildFailure :: Build -> Maybe SomeException #
Error thrown in the allocation of a component resource
data BuildResult #
Wraps a collection of Build
records
Instances
toBuildList :: BuildResult -> [Build] #