glue-core-0.4.9: Make better services and clients.

Safe HaskellSafe
LanguageHaskell2010

Glue.Preload

Description

Module containing a form of caching where values for given keys are preloaded ahead of time. | Once warmed up requests for preloaded keys will be instant, with the values refreshed in the background.

Synopsis

Documentation

data PreloadedOptions m a b Source #

Options for determining behaviour of preloading services.

defaultPreloadedOptions :: HashSet a -> MToIO m -> PreloadedOptions m a b Source #

Defaulted options for preloading a HashSet of keys with a 30 second refresh time.

preloadingService Source #

Arguments

:: (MonadIO m, MonadIO n, MonadBaseControl IO m, MonadBaseControl IO n, Eq a, Hashable a, Show a) 
=> PreloadedOptions m a b

Instance of PreloadedOptions to configure the preloading functionality.

-> MultiGetService m a b

The service to perform preloading of.

-> n (MultiGetService m a b, () -> n ()) 

Preloads the results of calls for given keys.

preloadingCall Source #

Arguments

:: (MonadIO m, MonadIO n, MonadBaseControl IO m, MonadBaseControl IO n) 
=> MToIO m

Get an IO of the call for the caching.

-> Int

Amount of time between refreshes.

-> m b

The call to perform preloading of.

-> n (m b, () -> n ()) 

Preloads a single parameter-less call.

preloadedKeys :: PreloadedOptions m a b -> HashSet a Source #

Keys to preload.

preloadingRefreshTimeMs :: PreloadedOptions m a b -> Int Source #

Amount of time between refreshes.

preloadingRun :: PreloadedOptions m a b -> MToIO m Source #

Get an IO of the response for the caching.