packages feed

TCache 0.9.0.2 → 0.9.0.3

raw patch · 4 files changed

+20/−18 lines, 4 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Data.TCache.Defs: DBRef :: String -> (TPVar a) -> DBRef a
+ Data.TCache.Defs: DBRef :: !String -> !TPVar a -> DBRef a
- Data.TCache.Defs: Elem :: a -> AccessTime -> ModifTime -> Elem a
+ Data.TCache.Defs: Elem :: !a -> !AccessTime -> !ModifTime -> Elem a
- Data.TCache.Triggers: DBRef :: String -> (TPVar a) -> DBRef a
+ Data.TCache.Triggers: DBRef :: !String -> !TPVar a -> DBRef a
- Data.TCache.Triggers: Elem :: a -> AccessTime -> ModifTime -> Elem a
+ Data.TCache.Triggers: Elem :: !a -> !AccessTime -> !ModifTime -> Elem a

Files

Data/TCache.hs view
@@ -267,9 +267,9 @@  import Control.Concurrent.MVar
 import Control.Exception(catch, throw)---import Debug.Trace+import Debug.Trace ---(!>) = flip trace+(!>) = flip trace  -- there are two references to the DBRef here -- The Maybe one keeps it alive until the cache releases it for *Resources@@ -348,9 +348,9 @@  if newkey /= key    then  error $ "writeDBRef: law of key conservation broken: old , new= " ++ key ++ " , "++newkey    else do-    applyTriggers  [dbref] [Just x]  -- !> ("writeDBRef "++ key)+    applyTriggers  [dbref] [Just x]     t <- unsafeIOToSTM timeInteger-    writeTVar tv $ Exist $ Elem x t t+    writeTVar tv $ Exist $ Elem x t t   !> ("writeDBRef "++ key)     return()  @@ -453,11 +453,12 @@  newDBRef ::   (IResource a, Typeable a) => a -> STM  (DBRef a)  
 newDBRef x = do-  let ref= getDBRef $ keyResource x+  let ref= getDBRef $! keyResource x+   mr <- readDBRef  ref   case mr of-    Nothing -> writeDBRef ref x >> return ref-    Just r -> return ref+    Nothing -> writeDBRef ref x >> return ref !> " write"+    Just r -> return ref                      !> " non write"     
 --newDBRef ::   (IResource a, Typeable a) => a -> STM  (DBRef a)
 --newDBRef x = do
Data/TCache/DefaultPersistence.hs view
@@ -30,10 +30,12 @@ import Data.TCache.Defs(castErr) import qualified Data.ByteString.Lazy.Char8 as B -import Debug.Trace+--import Debug.Trace+--+--a !> b = trace b a -a !> b = trace b a + {- | Indexable is an utility class used to derive instances of IResource  Example:@@ -81,11 +83,10 @@   deserialize :: {-serialFormat-} B.ByteString -> a   setPersist :: a -> Persist   setPersist _= defaultPersist-{--instance (Show a, Read a)=> Serializable a where-  serialize= show-  deserialize= read--}++--instance (Show a, Read a)=> Serializable a where+--  serialize= show+--  deserialize= read   -- |
Data/TCache/Defs.hs view
@@ -12,11 +12,11 @@  data Status a= NotRead | DoNotExist | Exist a deriving Typeable -data Elem a= Elem a AccessTime ModifTime   deriving Typeable+data Elem a= Elem !a !AccessTime !ModifTime   deriving Typeable 
 type TPVar a=   TVar (Status(Elem a)) -data DBRef a= DBRef String  (TPVar a)  deriving Typeable+data DBRef a= DBRef !String  !(TPVar a)  deriving Typeable   
TCache.cabal view
@@ -1,5 +1,5 @@ name:                TCache-version:             0.9.0.2+version:             0.9.0.3 synopsis:            A Transactional cache with user-defined persistence description:     TCache is a transactional cache with configurable persitence. It allows conventional@@ -7,7 +7,7 @@     their user defined storages. Default persistence in files is provided for testing purposes     State in memory and into permanent storage is transactionally coherent. -+    0.9.0.3 : Solved a "lost registers" bug.     0.9.0.1 : Solves a bug when object keys generate invalid filenames.               changes in defaultPersistence to further separate serialization from input-output     .