tmapchan 0.0.0 → 0.0.1
raw patch · 3 files changed
+15/−1 lines, 3 files
Files
- src/Control/Concurrent/STM/TMapChan.hs +8/−0
- src/Control/Concurrent/STM/TMapChan/Hash.hs +6/−0
- tmapchan.cabal +1/−1
src/Control/Concurrent/STM/TMapChan.hs view
@@ -7,6 +7,7 @@ , delete, deleteAll , -- * Utils getTChan+ , broadcast , cloneAt, cloneAll, cloneAllUniquely ) where @@ -86,6 +87,13 @@ -- * Utils+++-- | Insert for every key+broadcast :: Ord k => TMapChan k a -> a -> STM ()+broadcast t@(TMapChan xs) a = do+ ks <- Map.keys <$> readTVar xs+ forM_ ks (\k -> insert t k a) -- | Creates a new one if it doesn't already exist
src/Control/Concurrent/STM/TMapChan/Hash.hs view
@@ -91,6 +91,12 @@ pure c' Just c' -> pure c' +broadcast :: (Eq k, Hashable k) => TMapChan k a -> a -> STM ()+broadcast t@(TMapChan xs) a = do+ ks <- HashMap.keys <$> readTVar xs+ forM_ ks (\k -> insert t k a)++ cloneAt :: (Eq k, Hashable k) => TMapChan k a -> k -- ^ key to clone /from/
tmapchan.cabal view
@@ -1,5 +1,5 @@ name: tmapchan-version: 0.0.0+version: 0.0.1 synopsis: A time-ordered multimap which consumes values as you lookup -- description: homepage: https://github.com/athanclark/tmapchan#readme