happstack-state-6.1.3: Event-based distributed state.

Safe HaskellNone

Happstack.State.Transaction

Synopsis

Documentation

getTime :: Integral epochTime => AnyEv epochTimeSource

data EventHandler whereSource

Constructors

UpdateHandler :: UpdateEvent ev res => (TxContext -> ev -> IO res) -> (ev -> IO res) -> (Object -> ev) -> EventHandler 
QueryHandler :: QueryEvent ev res => (ev -> IO res) -> (Object -> ev) -> EventHandler 

emitFunc :: (Serialize ev, Typeable res) => EventMap -> TypeString -> ev -> IO resSource

emitEvent' :: (Serialize ev, Typeable res) => TypeString -> ev -> IO resSource

emitEvent :: (Serialize ev, Typeable res) => ev -> IO resSource

data EventItem Source

Constructors

EventItem 

Fields

eventContext :: TxContext
 
eventData :: Dynamic
 

pushEventItem :: Serialize ev => TxContext -> ev -> IO ()Source

update :: (MonadIO m, UpdateEvent ev res) => ev -> m resSource

Schedule an update and wait for it to complete. When this function returns, you're guaranteed the update will be persistent.

query :: (MonadIO m, QueryEvent ev res) => ev -> m resSource

Emit a state query and wait for the result.

quickQuery' :: Serialize st => TxRun st -> HR st -> IO ()Source

type Runner ev res = IO (IO ev, res -> IO ())Source

type EH i o = i -> IO oSource

data Event Source

Constructors

forall ev . Serialize ev => Event ev 

data IHR st Source

Constructors

forall ev . Serialize ev => IHR TxContext ev (RunHandler st ev) 

data HR st Source

Constructors

forall ev . Serialize ev => HR ev (RunHandler st ev) 

type RunHandler st ev = TxContext -> st -> IO (Maybe st, IO ())Source

data Res a Source

Constructors

Ok a 
Error ExceptionT 

type EventQueue st = TChan (HR st)Source

data TxRun st Source

Constructors

TxRun 

Fields

txProcessQueue :: !(ProcessQueue st)
 
txLastTxContext :: !(TVar TxContext)
 

runColdEvent :: TxContext -> Object -> IO ObjectSource

handleEvent :: (st -> Env -> Ev m res -> STM intermediate) -> (st -> intermediate -> IO (Maybe st, res)) -> (Either ExceptionT res -> IO ()) -> Ev m res -> RunHandler st evSource

handleQuery :: (Either ExceptionT res -> IO ()) -> Query st res -> RunHandler st evSource

handleUpdate :: (Either ExceptionT res -> IO ()) -> Update st res -> RunHandler st evSource

checkDiff :: a -> a -> IO (Maybe a)Source

newTxContext :: IO TxContextSource

addTxId :: TxRun st -> TxContext -> STM TxContextSource

data TxControl Source

Constructors

TxControl 

Fields

ctlSaver :: Saver

Saver given by the user.

ctlEventSaver :: MVar (WriterStream EventLogEntry)
 
ctlAllComponents :: [String]

Types of each component used.

ctlComponentVersions :: Map String [ByteString]

Map listing all versions of a component

ctlChildren :: [(ThreadId, MVar ())]
 
ctlPrefixLock :: Maybe PrefixLock

Stores exclusive prefix lock (implemented in filesystem)

ctlCreateCheckpoint :: IO ()