- type ExceptionT = SomeException
- logMT :: Priority -> String -> IO ()
- getTime :: Integral epochTime => AnyEv epochTime
- getEventClockTime :: AnyEv ClockTime
- getEventId :: Integral txId => AnyEv txId
- data GetCheckpointState = GetCheckpointState
- newtype SetCheckpointState = SetCheckpointState ByteString
- type TypeString = String
- data EventHandler where
- UpdateHandler :: UpdateEvent ev res => (TxContext -> ev -> IO res) -> (ev -> IO res) -> (Object -> ev) -> EventHandler
- QueryHandler :: QueryEvent ev res => (ev -> IO res) -> (Object -> ev) -> EventHandler
- type EventMap = Map TypeString EventHandler
- data EmitInternal = EmitInternal EventMap
- emitRef :: IORef EmitInternal
- emitFunc :: (Serialize ev, Typeable res) => EventMap -> TypeString -> ev -> IO res
- emitEvent' :: (Serialize ev, Typeable res) => TypeString -> ev -> IO res
- emitEvent :: (Serialize ev, Typeable res) => ev -> IO res
- setNewEventMap :: EventMap -> IO ()
- data EventItem = EventItem {
- eventContext :: TxContext
- eventData :: Dynamic
- eventStreamRef :: MVar (Chan EventItem)
- initEventStream :: IO ()
- pushEventItem :: Serialize ev => TxContext -> ev -> IO ()
- getEventStream :: IO (IO EventItem)
- createEventMap :: (Methods st, Component st) => MVar TxControl -> Proxy st -> IO EventMap
- extraEvents :: Serialize st => TxRun st -> EventMap
- allStateTypes :: (Methods a, Component a) => Proxy a -> [TypeString]
- componentVersions :: (Methods a, Component a) => Proxy a -> Map String [ByteString]
- componentIO :: (Methods a, Component a) => Proxy a -> [IO ()]
- createNewTxRun :: IO (TxRun st)
- setNewStateType :: String -> String
- getStateType :: String -> String
- setNewState :: TypeString -> ByteString -> IO ()
- setNewState' :: EventMap -> TypeString -> ByteString -> IO ()
- getState :: TypeString -> IO ByteString
- data SetNewState st = SetNewState ByteString
- data GetState st = GetState
- update :: (MonadIO m, UpdateEvent ev res) => ev -> m res
- query :: (MonadIO m, QueryEvent ev res) => ev -> m res
- quickQuery' :: Serialize st => TxRun st -> HR st -> IO ()
- type Runner ev res = IO (IO ev, res -> IO ())
- type EH i o = i -> IO o
- data Event = forall ev . Serialize ev => Event ev
- data IHR st = forall ev . Serialize ev => IHR TxContext ev (RunHandler st ev)
- data HR st = forall ev . Serialize ev => HR ev (RunHandler st ev)
- type RunHandler st ev = TxContext -> st -> IO (Maybe st, IO ())
- data Res a
- = Ok a
- | Error ExceptionT
- type EventQueue st = TChan (HR st)
- type ProcessQueue st = TChan (IHR st)
- data TxRun st = TxRun {
- txProcessQueue :: !(ProcessQueue st)
- txLastTxContext :: !(TVar TxContext)
- type EvLoaders' st = Map String (ProcessQueue st -> ByteString -> IO (TxId, ByteString))
- type EvLoaders = Map String (ByteString -> IO (TxId, ByteString))
- setEvLoadersQueue :: ProcessQueue st -> EvLoaders' st -> EvLoaders
- runObjectEvent :: Object -> IO Object
- runObjectEventFunc :: Object -> EventMap -> IO Object
- runColdEvent :: TxContext -> Object -> IO Object
- runColdEventFunc :: TxContext -> Object -> EventMap -> IO Object
- lookupEventHandler :: TypeString -> EventMap -> IO EventHandler
- eventTString :: Serialize ev => ev -> TypeString
- handleEvent :: (st -> Env -> Ev m res -> STM intermediate) -> (st -> intermediate -> IO (Maybe st, res)) -> (Either ExceptionT res -> IO ()) -> Ev m res -> RunHandler st ev
- handleQuery :: (Either ExceptionT res -> IO ()) -> Query st res -> RunHandler st ev
- handleUpdate :: (Either ExceptionT res -> IO ()) -> Update st res -> RunHandler st ev
- checkDiff :: a -> a -> IO (Maybe a)
- getEpochMilli :: IO EpochMilli
- newTxContext :: IO TxContext
- addTxId :: TxRun st -> TxContext -> STM TxContext
- globalRandomGen :: MVar StdGen
- data TxControl = TxControl {}
- data EventLogEntry = EventLogEntry TxContext Object
- runTxLoop :: MVar (WriterStream EventLogEntry) -> ProcessQueue st -> st -> IO ()
Documentation
type ExceptionT = SomeExceptionSource
getEventId :: Integral txId => AnyEv txIdSource
data GetCheckpointState Source
newtype SetCheckpointState Source
type TypeString = StringSource
data EventHandler whereSource
UpdateHandler :: UpdateEvent ev res => (TxContext -> ev -> IO res) -> (ev -> IO res) -> (Object -> ev) -> EventHandler | |
QueryHandler :: QueryEvent ev res => (ev -> IO res) -> (Object -> ev) -> EventHandler |
type EventMap = Map TypeString EventHandlerSource
emitEvent' :: (Serialize ev, Typeable res) => TypeString -> ev -> IO resSource
setNewEventMap :: EventMap -> IO ()Source
pushEventItem :: Serialize ev => TxContext -> ev -> IO ()Source
extraEvents :: Serialize st => TxRun st -> EventMapSource
allStateTypes :: (Methods a, Component a) => Proxy a -> [TypeString]Source
componentVersions :: (Methods a, Component a) => Proxy a -> Map String [ByteString]Source
createNewTxRun :: IO (TxRun st)Source
getStateType :: String -> StringSource
setNewState :: TypeString -> ByteString -> IO ()Source
setNewState' :: EventMap -> TypeString -> ByteString -> IO ()Source
getState :: TypeString -> IO ByteStringSource
data SetNewState st Source
Typeable1 SetNewState | |
Version (SetNewState st) | |
Typeable st => Serialize (SetNewState st) | |
Typeable st => UpdateEvent (SetNewState st) () |
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.
forall ev . Serialize ev => IHR TxContext ev (RunHandler st ev) |
forall ev . Serialize ev => HR ev (RunHandler st ev) |
type EventQueue st = TChan (HR st)Source
type ProcessQueue st = TChan (IHR st)Source
TxRun | |
|
type EvLoaders' st = Map String (ProcessQueue st -> ByteString -> IO (TxId, ByteString))Source
type EvLoaders = Map String (ByteString -> IO (TxId, ByteString))Source
setEvLoadersQueue :: ProcessQueue st -> EvLoaders' st -> EvLoadersSource
runObjectEvent :: Object -> IO ObjectSource
runColdEvent :: TxContext -> Object -> IO ObjectSource
eventTString :: Serialize ev => ev -> TypeStringSource
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
newTxContext :: IO TxContextSource
TxControl | |
|
data EventLogEntry Source
EventLogEntry TxContext Object |
runTxLoop :: MVar (WriterStream EventLogEntry) -> ProcessQueue st -> st -> IO ()Source