From 287d9e5c4fc50bcca2474b9783148181d7ede872 Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Mon, 6 Apr 2026 23:35:05 +0200 Subject: Log watching --- src/Cache.hs | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/Cache.hs') diff --git a/src/Cache.hs b/src/Cache.hs index 4694aa0..d272112 100644 --- a/src/Cache.hs +++ b/src/Cache.hs @@ -26,6 +26,10 @@ cacheAdd cache@(Cache maxsize ref _) key val = do cacheLookup :: Ord k => Cache k v -> k -> IO (Maybe v) cacheLookup (Cache _ ref _) key = fmap fst . Map.lookup key <$> readIORef ref +cacheInvalidate :: Ord k => Cache k v -> k -> IO () +cacheInvalidate (Cache _ ref _) key = + atomicModifyIORef' ref $ \mp -> (Map.delete key mp, ()) + -- Uses 2-random LRU (https://danluu.com/2choices-eviction/) cachePrune :: Ord k => Cache k v -> IO () cachePrune (Cache maxsize ref genref) = do go =<< atomicModifyIORef' genref splitGen -- cgit v1.3