Files
simplexmq/spec/modules/Simplex/Messaging/Session.md
Evgeny @ SimpleX Chat 66d7efa61e some modules documented
2026-03-11 08:53:57 +00:00

921 B

Simplex.Messaging.Session

Atomic get-or-create session variables with identity-safe removal.

Source: Session.hs

getSessVar

Returns Left newVar if the key was absent (variable created), Right existingVar if already present. The new variable gets an atomically incremented sessionVarId from the shared counter, and its sessionVar TMVar starts empty.

The caller uses the Left/Right distinction to decide whether to populate the TMVar (new session) or wait on the existing one.

removeSessVar

Only removes if the stored variable's sessionVarId matches the one being removed. This is a compare-and-swap pattern: between the time a caller obtained a SessionVar and the time it tries to remove it, another thread may have replaced it with a new session (via getSessVar). Without the ID check, the stale caller would remove the new session.