haxl-2.0.1.0: A Haskell library for efficient, concurrent, and concise data access.

Safe HaskellNone
LanguageHaskell2010

Haxl.Core.StateStore

Description

Most users should import Haxl.Core instead of importing this module directly.

Synopsis

Documentation

class Typeable f => StateKey (f :: * -> *) where Source #

StateKey maps one type to another type. A type that is an instance of StateKey can store and retrieve information from a StateStore.

Associated Types

data State f Source #

Methods

getStateType :: Proxy f -> TypeRep Source #

We default this to typeOf1, but if f is itself a complex type that is already applied to some paramaters, we want to be able to use the same state by using typeOf2, etc

Instances

Typeable * tag => StateKey (ConcurrentIOReq tag) Source # 

Associated Types

data State (ConcurrentIOReq tag :: * -> *) :: * Source #

data StateStore Source #

The StateStore maps a StateKey to the State for that type.

stateGet :: forall r. StateKey r => StateStore -> Maybe (State r) Source #

Retrieves a State from the StateStore container.

stateSet :: forall f. StateKey f => State f -> StateStore -> StateStore Source #

Inserts a State in the StateStore container.

stateEmpty :: StateStore Source #

A StateStore with no entries.