{-# LANGUAGE OverloadedStrings #-} -- | -- Module : Caching.ExpiringCacheMap.Internal.Types -- Copyright: (c) 2014 Edward L. Blake -- License: BSD-style -- Maintainer: Edward L. Blake -- Stability: experimental -- Portability: portable -- -- Types used by internal functions and as the opaque types exported by other -- modules, assume these type definitions to change from version to version. -- module Caching.ExpiringCacheMap.Internal.Types ( -- * Cache internals ECM(..), CacheState(..), ECMNewState, ECMEnterState, ECMReadState ) where import qualified Control.Concurrent.MVar as MV import Caching.ExpiringCacheMap.Utils.Types type ECMNewState a b s m k v = (CacheState s m k v) -> a (b (CacheState s m k v)) type ECMEnterState a b s m k v = b (CacheState s m k v) -> ((CacheState s m k v) -> a ((CacheState s m k v), v)) -> a v type ECMReadState a b s m k v = b (CacheState s m k v) -> a (CacheState s m k v) -- | The cache state. newtype CacheState s m k v = CacheState (Maybe s, m k (TimeUnits, TimeUnits, v), ECMMapSize, ([(k, ECMIncr)], ECMULength), ECMIncr) -- | The type that encapsulates a cache map. newtype ECM a b s m k v = ECM ( b (CacheState s m k v), Maybe s -> k -> a (TimeUnits, (Maybe s, v)), a TimeUnits, ECMMapSize, -- TimeUnits, ECMIncr, ECMULength, ECMULength, ECMEnterState a b s m k v, ECMReadState a b s m k v)