TCache-0.12.1: A Transactional cache with user-defined persistence

Safe HaskellNone
LanguageHaskell98

Data.TCache.Defs

Description

some internal definitions. To use default persistence, import Data.TCache.DefaultPersistence instead

Synopsis

Documentation

data Status a Source #

Constructors

NotRead 
DoNotExist 
Exist a 

data Elem a Source #

Constructors

Elem !a !AccessTime !ModifTime 

type TPVar a = TVar (Status (Elem a)) Source #

data DBRef a Source #

Constructors

DBRef !String !(TPVar a) 

castErr :: (Typeable * a, Typeable * t) => t -> a Source #

class Indexable a where Source #

Indexable is an utility class used to derive instances of IResource

Example:

data Person= Person{ pname :: String, cars :: [DBRef Car]} deriving (Show, Read, Typeable)
data Car= Car{owner :: DBRef Person , cname:: String} deriving (Show, Read, Eq, Typeable)

Since Person and Car are instances of Read ans Show, by defining the Indexable instance will implicitly define the IResource instance for file persistence:

instance Indexable Person where  key Person{pname=n} = "Person " ++ n
instance Indexable Car where key Car{cname= n} = "Car " ++ n

Minimal complete definition

key

Methods

key :: a -> String Source #

defPath :: a -> String Source #

class Serializable a where Source #

Serialize is an alternative to the IResource class for defining persistence in TCache. The deserialization must be as lazy as possible. serialization/deserialization are not performance critical in TCache

Read, Show, instances are implicit instances of Serializable

   serialize  = pack . show
   deserialize= read . unpack

Since write and read to disk of to/from the cache are not be very frequent The performance of serialization is not critical.

Minimal complete definition

serialize

class PersistIndex a where Source #

Used by IndexQuery for index persistence(see Data.TCache.IndexQuery.

Minimal complete definition

persistIndex

data Persist Source #

a persist mechanism has to implement these three primitives filePersist is the default file persistence

Constructors

Persist

delete

Fields

filePersist :: Persist Source #

Implements default default-persistence of objects in files with their keys as filenames

setDefaultPersist :: Persist -> IO () Source #

Set the default persistence mechanism of all serializable objects that have setPersist= const Nothing. By default it is filePersist

this statement must be the first one before any other TCache call

readFileStrict :: FilePath -> IO ByteString Source #

Strict read from file, needed for default file persistence