diff options
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/Cache.hs | 5 | ||||
| -rw-r--r-- | src/server/PGFService.hs | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/src/server/Cache.hs b/src/server/Cache.hs index d704fe495..8cb9135e2 100644 --- a/src/server/Cache.hs +++ b/src/server/Cache.hs @@ -1,4 +1,4 @@ -module Cache (Cache,newCache,readCache) where +module Cache (Cache,newCache,flushCache,readCache) where import Control.Concurrent.MVar import Data.Map (Map) @@ -17,6 +17,9 @@ newCache load = do objs <- newMVar Map.empty return $ Cache { cacheLoad = load, cacheObjects = objs } +flushCache :: Cache a -> IO () +flushCache c = modifyMVar_ (cacheObjects c) (const (return Map.empty)) + readCache :: Cache a -> FilePath -> IO a readCache c file = do v <- modifyMVar (cacheObjects c) findEntry diff --git a/src/server/PGFService.hs b/src/server/PGFService.hs index 752035e87..2ca9b4ca2 100644 --- a/src/server/PGFService.hs +++ b/src/server/PGFService.hs @@ -1,7 +1,7 @@ {-# LANGUAGE CPP #-} module PGFService(cgiMain,cgiMain',getPath, logFile,stderrToFile, - newPGFCache) where + newPGFCache,flushPGFCache) where import PGF (PGF) import qualified PGF @@ -51,10 +51,12 @@ newPGFCache = do pgfCache <- newCache PGF.readPGF pc <- newMVar Map.empty return (pgf,pc) return (pgfCache,cCache) +flushPGFCache (c1,c2) = flushCache c1 >> flushCache c2 #else type Caches = (Cache PGF,()) newPGFCache = do pgfCache <- newCache PGF.readPGF return (pgfCache,()) +flushPGFCache (c1,_) = flushCache c1 #endif getPath = |
