btree-concurrent-0.1.5: A backend agnostic, concurrent BTree

Safe HaskellNone

Data.BTree.Cache.STM

Documentation

data State k v Source

Constructors

Read !(Maybe v) 
Write !(Maybe k) !(Maybe v) 

Instances

(Eq k, Eq v) => Eq (State k v) 
Show (State k v) 

data Exist Source

Constructors

Exist 
NoExist 

Instances

data Ref k v Source

Constructors

Ref 

Fields

refST :: TVar (Either (State k v) (State k v, Int, State k v))
 
refExt :: TVar Exist
 

data Param m k v Source

Constructors

Param 

Fields

cacheSize :: Int
 
table :: HashTableSTM k (Ref k (Either ByteString v))
 
toIO :: forall a. m a -> IO a
 
flushQ :: TVar [(k, Ref k v)]
 
timestamp :: UTCTime
 
genId :: TVar Int
 
genActive :: TVar Int
 

Instances

Monad (CacheSTM m k v) => MonadReader (Param m k v) (CacheSTM m k v) 
(Monad (CacheSTM m k v), Show k, Serialize k, Serialize v, Ord k, Eq k, Eq v, Hashable k, KVBackend m k ByteString) => Cache (CacheSTM m k v) (Param m k v) k v 

trace :: a -> aSource

newtype CacheSTM m k v a Source

Constructors

CacheSTM 

Fields

runCacheSTM :: ReaderT (Param m k v) (ErrorT (IO ()) STM) a
 

Instances

Monad (CacheSTM m k v) => MonadError (IO ()) (CacheSTM m k v) 
Monad (CacheSTM m k v) 
Functor (CacheSTM m k v) 
Monad (CacheSTM m k v) => MonadReader (Param m k v) (CacheSTM m k v) 
(Monad (CacheSTM m k v), Show k, Serialize k, Serialize v, Ord k, Eq k, Eq v, Hashable k, KVBackend m k ByteString) => Cache (CacheSTM m k v) (Param m k v) k v 

stm :: (Monad (t1 m), Monad m, MonadTrans t, MonadTrans t1) => m a -> t (t1 m) aSource

evalCacheSTM :: Param m k v -> CacheSTM m k v a -> IO aSource

sizedParam :: Int -> (forall a. m a -> IO a) -> IO (Param m k v)Source

getRef :: (Monad (t1 STM), Ord k, Hashable k, MonadTrans t, MonadTrans t1, MonadError (IO ()) (t (t1 STM)), MonadReader (Param m k b) (t (t1 STM)), KVBackend m k ByteString) => k -> t (t1 STM) (Ref k (Either ByteString b))Source

newRef :: (Monad (t1 STM), Ord k, Hashable k, MonadTrans t, MonadTrans t1, MonadError (IO ()) (t (t1 STM)), MonadReader (Param m k v) (t (t1 STM)), KVBackend m k ByteString) => Maybe k -> k -> Maybe (Either ByteString v) -> t (t1 STM) ()Source

maybeQueue :: (Monad (t1 STM), MonadTrans t, MonadTrans t1, MonadReader (Param m k v) (t (t1 STM))) => Bool -> TVar (Either (State t2 t3) (State t6 t7, t4, t5)) -> (k, Ref k v) -> t (t1 STM) ()Source

store :: (Ord k, Hashable k, KVBackend m k ByteString) => Maybe k -> k -> v -> CacheSTM m k v ()Source

fetch :: (Ord k, Serialize v, Hashable k, KVBackend m k ByteString) => k -> CacheSTM m k v (Maybe v)Source

fetchGen :: (Ord k, Serialize v, Hashable k, KVBackend m k ByteString) => Int -> k -> CacheSTM m k v (Maybe v)Source

remove :: (Ord k, Hashable k, KVBackend m k ByteString) => Maybe k -> k -> CacheSTM m k v ()Source

updateTag :: (Ord k, Hashable k) => Maybe k -> k -> CacheSTM m k v ()Source

keys :: CacheSTM m k v [k]Source

debug :: (Show a, MonadIO m) => a -> m ()Source

getGen :: Eq a => a -> Either t (t, a, t) -> tSource

flipWrite :: Eq v => Maybe v -> Either (State k v) (State k1 v, t, State t1 v) -> Either (State k v) (State k1 v, t, State t1 v)Source

withGeneration :: MonadIO m => Param m1 k v -> (Int -> m b) -> m bSource

flush :: (Ord t, Serialize a, Hashable t) => Param m t a -> IO ()Source

sync :: (Eq b, Ord t, Serialize b, KVBackend m t ByteString) => Param m t b -> IO ()Source

liftSTM :: STM a -> CacheSTM m k v aSource

fail :: IO () -> CacheSTM m k v aSource