Safe Haskell | None |
---|---|
Language | Haskell2010 |
Internal module exposing the guts of the package. Use at your own risk. No API stability guarantees apply.
Synopsis
- type SessionIdToSession sess = HashMap (SessionId sess) (Session sess)
- type AuthIdToSessionId sess = HashMap AuthId (Set (SessionId sess))
- data ServerSessionAcidState sess = ServerSessionAcidState {
- sessionIdToSession :: !(SessionIdToSession sess)
- authIdToSessionId :: !(AuthIdToSessionId sess)
- emptyState :: ServerSessionAcidState sess
- removeSessionFromAuthId :: SessionId sess -> Maybe AuthId -> AuthIdToSessionId sess -> AuthIdToSessionId sess
- insertSessionForAuthId :: SessionId sess -> Maybe AuthId -> AuthIdToSessionId sess -> AuthIdToSessionId sess
- getSession :: Storage (AcidStorage sess) => SessionId sess -> Query (ServerSessionAcidState sess) (Maybe (Session sess))
- deleteSession :: Storage (AcidStorage sess) => SessionId sess -> Update (ServerSessionAcidState sess) ()
- deleteAllSessionsOfAuthId :: Storage (AcidStorage sess) => AuthId -> Update (ServerSessionAcidState sess) ()
- insertSession :: Storage (AcidStorage sess) => Session sess -> Update (ServerSessionAcidState sess) ()
- replaceSession :: Storage (AcidStorage sess) => Session sess -> Update (ServerSessionAcidState sess) ()
- data GetSession sess
- data DeleteSession sess
- data DeleteAllSessionsOfAuthId sess
- data InsertSession sess
- data ReplaceSession sess
- newtype AcidStorage sess = AcidStorage {
- acidState :: AcidState (ServerSessionAcidState sess)
Documentation
type SessionIdToSession sess = HashMap (SessionId sess) (Session sess) Source #
Map from session IDs to sessions. The most important map, allowing us efficient access to a session given its ID.
type AuthIdToSessionId sess = HashMap AuthId (Set (SessionId sess)) Source #
Map from auth IDs to session IDs. Allow us to invalidate
all sessions of given user without having to iterate through
the whole SessionIdToSession
map.
data ServerSessionAcidState sess Source #
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.
ServerSessionAcidState | |
|
Instances
(Typeable sess, SafeCopy (Decomposed sess)) => SafeCopy (ServerSessionAcidState sess) Source # | We can't |
Defined in Web.ServerSession.Backend.Acid.Internal version :: Version (ServerSessionAcidState sess) # kind :: Kind (ServerSessionAcidState sess) # getCopy :: Contained (Get (ServerSessionAcidState sess)) # putCopy :: ServerSessionAcidState sess -> Contained Put # internalConsistency :: Consistency (ServerSessionAcidState sess) # objectProfile :: Profile (ServerSessionAcidState sess) # errorTypeName :: Proxy (ServerSessionAcidState sess) -> String # | |
AcidContext sess => IsAcidic (ServerSessionAcidState sess) Source # | |
Defined in Web.ServerSession.Backend.Acid.Internal acidEvents :: [Event (ServerSessionAcidState sess)] # |
emptyState :: ServerSessionAcidState sess Source #
Empty ServerSessionAcidState
used to bootstrap the AcidState
.
removeSessionFromAuthId :: SessionId sess -> Maybe AuthId -> AuthIdToSessionId sess -> AuthIdToSessionId sess Source #
Remove the given SessionId
from the set of the given
AuthId
on the map. Does not do anything if no AuthId
is
provided.
insertSessionForAuthId :: SessionId sess -> Maybe AuthId -> AuthIdToSessionId sess -> AuthIdToSessionId sess Source #
Insert the given session ID as being part of the given auth
ID. Conceptually the opposite of removeSessionFromAuthId
.
Does not do anything if no AuthId
is provided.
getSession :: Storage (AcidStorage sess) => SessionId sess -> Query (ServerSessionAcidState sess) (Maybe (Session sess)) Source #
Get the session for the given session ID.
deleteSession :: Storage (AcidStorage sess) => SessionId sess -> Update (ServerSessionAcidState sess) () Source #
Delete the session with given session ID.
deleteAllSessionsOfAuthId :: Storage (AcidStorage sess) => AuthId -> Update (ServerSessionAcidState sess) () Source #
Delete all sessions of the given auth ID.
insertSession :: Storage (AcidStorage sess) => Session sess -> Update (ServerSessionAcidState sess) () Source #
Insert a new session.
replaceSession :: Storage (AcidStorage sess) => Session sess -> Update (ServerSessionAcidState sess) () Source #
Replace the contents of a session.
data GetSession sess Source #
Instances
Typeable sess => SafeCopy (GetSession sess) Source # | |
Defined in Web.ServerSession.Backend.Acid.Internal version :: Version (GetSession sess) # kind :: Kind (GetSession sess) # getCopy :: Contained (Get (GetSession sess)) # putCopy :: GetSession sess -> Contained Put # internalConsistency :: Consistency (GetSession sess) # objectProfile :: Profile (GetSession sess) # errorTypeName :: Proxy (GetSession sess) -> String # | |
AcidContext sess => QueryEvent (GetSession sess) Source # | |
Defined in Web.ServerSession.Backend.Acid.Internal | |
AcidContext sess => Method (GetSession sess) Source # | |
Defined in Web.ServerSession.Backend.Acid.Internal type MethodResult (GetSession sess) # type MethodState (GetSession sess) # methodTag :: GetSession sess -> Tag # | |
type MethodState (GetSession sess) Source # | |
Defined in Web.ServerSession.Backend.Acid.Internal | |
type MethodResult (GetSession sess) Source # | |
Defined in Web.ServerSession.Backend.Acid.Internal |
data DeleteSession sess Source #
Instances
Typeable sess => SafeCopy (DeleteSession sess) Source # | |
Defined in Web.ServerSession.Backend.Acid.Internal version :: Version (DeleteSession sess) # kind :: Kind (DeleteSession sess) # getCopy :: Contained (Get (DeleteSession sess)) # putCopy :: DeleteSession sess -> Contained Put # internalConsistency :: Consistency (DeleteSession sess) # objectProfile :: Profile (DeleteSession sess) # errorTypeName :: Proxy (DeleteSession sess) -> String # | |
AcidContext sess => UpdateEvent (DeleteSession sess) Source # | |
Defined in Web.ServerSession.Backend.Acid.Internal | |
AcidContext sess => Method (DeleteSession sess) Source # | |
Defined in Web.ServerSession.Backend.Acid.Internal type MethodResult (DeleteSession sess) # type MethodState (DeleteSession sess) # methodTag :: DeleteSession sess -> Tag # | |
type MethodState (DeleteSession sess) Source # | |
Defined in Web.ServerSession.Backend.Acid.Internal | |
type MethodResult (DeleteSession sess) Source # | |
Defined in Web.ServerSession.Backend.Acid.Internal |
data DeleteAllSessionsOfAuthId sess Source #
Instances
data InsertSession sess Source #
Instances
data ReplaceSession sess Source #
Instances
newtype AcidStorage sess Source #
Session storage backend using acid-state
.
AcidStorage | |
|