Safe Haskell | None |
---|---|
Language | Haskell98 |
Web.ServerSession.Backend.Acid
Description
Storage backend for serversession
using acid-state
.
In order to use this backend, just open the AcidState
. For
example:
import Control.Exception (bracket) import Data.Acid.Local (openLocalState, createCheckpointAndClose) import Web.ServerSession.Backend.Acid (AcidStorage(..), emptyState) withSessionStorage :: (AcidStorage -> IO a) -> IO a withSessionStorage = bracket (AcidStorage
<$> openLocalStateemptyState
) (createCheckpointAndClose .acidState
)
- newtype AcidStorage sess = AcidStorage {
- acidState :: AcidState (ServerSessionAcidState sess)
- emptyState :: ServerSessionAcidState sess
- data ServerSessionAcidState sess
Documentation
newtype AcidStorage sess #
Session storage backend using acid-state
.
Constructors
AcidStorage | |
Fields
|
Instances
(IsSessionData sess, SafeCopy sess, SafeCopy (Decomposed sess)) => Storage (AcidStorage sess) # | We do not provide any ACID guarantees for different actions
running inside the same |
type TransactionM (AcidStorage sess) # | |
type SessionData (AcidStorage sess) # | |
emptyState :: ServerSessionAcidState sess #
Empty ServerSessionAcidState
used to bootstrap the AcidState
.
data ServerSessionAcidState sess #
The current sessions.
Besides the obvious map from session IDs to sessions, we also maintain a map of auth IDs to session IDs. This allow us to quickly invalidate all sessions of a given user.
Instances
AcidContext sess => IsAcidic (ServerSessionAcidState sess) # | |
SafeCopy (Decomposed sess) => SafeCopy (ServerSessionAcidState sess) # | We can't |