packages feed

network-control 0.1.6 → 0.1.7

raw patch · 3 files changed

+23/−7 lines, 3 files

Files

Changelog.md view
@@ -1,5 +1,9 @@ # Revision history for network-control +## 0.1.7++* Implementing setLRUCapacity.+ ## 0.1.6  * Allowing size 0.
Network/Control/LRUCache.hs view
@@ -14,6 +14,7 @@     newLRUCacheRef,     cached,     cached',+    setLRUCapacity,      -- * Internal     empty',@@ -120,17 +121,16 @@  ---------------------------------------------------------------- +-- | Mutable LRUCache. newtype LRUCacheRef k v = LRUCacheRef (IORef (LRUCache k v)) +-- | Creating 'LRUCacheRef'. newLRUCacheRef :: Int -> IO (LRUCacheRef k v) newLRUCacheRef capacity = LRUCacheRef <$> newIORef (empty capacity) -cached' :: Ord k => LRUCacheRef k v -> k -> IO (Maybe v)-cached' (LRUCacheRef ref) k = do-    atomicModifyIORef' ref $ \c -> case lookup' k c of-        Nothing -> (c, Nothing)-        Just (v, c') -> (c', Just v)-+-- | Looking up a target and adjusting the LRU cache.+--   If not found, a new value is inserted.+--   A pair of value and "found" is returned. cached :: Ord k => LRUCacheRef k v -> k -> IO v -> IO (v, Bool) cached (LRUCacheRef ref) k io = do     lookupRes <- atomicModifyIORef' ref $ \c -> case lookup' k c of@@ -142,3 +142,15 @@             v <- io             atomicModifyIORef' ref $ \c -> (insert k v c, ())             return (v, False)++-- | Looking up a target and adjusting the LRU cache.+cached' :: Ord k => LRUCacheRef k v -> k -> IO (Maybe v)+cached' (LRUCacheRef ref) k = do+    atomicModifyIORef' ref $ \c -> case lookup' k c of+        Nothing -> (c, Nothing)+        Just (v, c') -> (c', Just v)++-- | Setting capacity of the LRU cache.+setLRUCapacity :: LRUCacheRef k v -> Int -> IO ()+setLRUCapacity (LRUCacheRef ref) lim = atomicModifyIORef' ref $ \c ->+    (c{lcLimit = lim}, ())
network-control.cabal view
@@ -1,6 +1,6 @@ cabal-version:   3.0 name:            network-control-version:         0.1.6+version:         0.1.7 license:         BSD-3-Clause license-file:    LICENSE maintainer:      kazu@iij.ad.jp