haskey-0.3.1.0: A transactional, ACID compliant, embeddable key-value store.

Safe HaskellNone
LanguageHaskell2010

Database.Haskey.Alloc.Concurrent.Internal.Meta

Description

This module implements data structures and function related to the metadata of the concurrent page allocator.

Synopsis

Documentation

class Value root => Root root Source #

User-defined data root stored inside ConcurrentMeta.

This can be a user-defined collection of Tree roots.

Instances
(Key k, Value v) => Root (Tree k v) Source # 
Instance details

Defined in Database.Haskey.Alloc.Concurrent.Internal.Meta

data CurrentMetaPage Source #

Data type used to point to the most recent version of the meta data.

Constructors

Meta1 
Meta2 

data ConcurrentMeta root Source #

Meta data of the page allocator.

The root type parameter should be a user-defined collection of Tree roots, instantiating the Root type class.

To store store a single tree, use ConcurrentMeta (Tree k v).

Instances
Show root => Show (ConcurrentMeta root) Source # 
Instance details

Defined in Database.Haskey.Alloc.Concurrent.Internal.Meta

Generic (ConcurrentMeta root) Source # 
Instance details

Defined in Database.Haskey.Alloc.Concurrent.Internal.Meta

Associated Types

type Rep (ConcurrentMeta root) :: Type -> Type #

Methods

from :: ConcurrentMeta root -> Rep (ConcurrentMeta root) x #

to :: Rep (ConcurrentMeta root) x -> ConcurrentMeta root #

Binary root => Binary (ConcurrentMeta root) Source # 
Instance details

Defined in Database.Haskey.Alloc.Concurrent.Internal.Meta

Methods

put :: ConcurrentMeta root -> Put #

get :: Get (ConcurrentMeta root) #

putList :: [ConcurrentMeta root] -> Put #

type Rep (ConcurrentMeta root) Source # 
Instance details

Defined in Database.Haskey.Alloc.Concurrent.Internal.Meta

type Rep (ConcurrentMeta root) = D1 (MetaData "ConcurrentMeta" "Database.Haskey.Alloc.Concurrent.Internal.Meta" "haskey-0.3.1.0-HwnqosrjtX4FBQhqq0zmUK" False) (C1 (MetaCons "ConcurrentMeta" PrefixI True) (((S1 (MetaSel (Just "concurrentMetaRevision") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 TxId) :*: S1 (MetaSel (Just "concurrentMetaDataNumPages") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (S TypeData PageId))) :*: (S1 (MetaSel (Just "concurrentMetaIndexNumPages") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (S TypeIndex PageId)) :*: S1 (MetaSel (Just "concurrentMetaRoot") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 root))) :*: ((S1 (MetaSel (Just "concurrentMetaDataFreeTree") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (S TypeData FreeTree)) :*: S1 (MetaSel (Just "concurrentMetaIndexFreeTree") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (S TypeIndex FreeTree))) :*: (S1 (MetaSel (Just "concurrentMetaOverflowTree") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 OverflowTree) :*: (S1 (MetaSel (Just "concurrentMetaDataCachedFreePages") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (S TypeData [FreePage])) :*: S1 (MetaSel (Just "concurrentMetaIndexCachedFreePages") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (S TypeIndex [FreePage])))))))

class StoreM FilePath m => ConcurrentMetaStoreM m where Source #

A class representing the storage requirements of the page allocator.

A store supporting the page allocator should be an instance of this class.

Methods

putConcurrentMeta :: Root root => FilePath -> ConcurrentMeta root -> m () Source #

Write the meta-data structure to a certain page.

readConcurrentMeta :: Root root => FilePath -> Proxy root -> m (Maybe (ConcurrentMeta root)) Source #

Try to read the meta-data structure from a handle, or return Nothing if the handle doesn't contain a meta page.