WashNGo-2.12.0.1: WASH is a family of EDSLs for programming Web applications in Haskell.Source codeContentsIndex
WASH.CGI.Transaction
Description

Transactional, type-indexed implementation of server-side state.

Glossary

A transactional entity (TE) is a named multi-versioned global variable.

Synopsis
data T a
init :: (Types a, Read a, Show a) => String -> a -> TCGI b (T a)
create :: (Read a, Show a, Types a) => a -> TCGI b (T a)
remove :: Types a => T a -> TCGI b ()
get :: (Read a, Show a) => T a -> TCGI b a
set :: (Read a, Show a) => T a -> a -> TCGI b ()
with :: (WithMonad cgi, Read result, Show result) => result -> (result -> cgi ()) -> (Control (TCGI result) result -> TCGI result ()) -> cgi ()
data Control cgi result = Control {
abandon :: result -> cgi ()
setFail :: result -> cgi ()
setCommit :: result -> cgi ()
}
data TCGI b a
Documentation
data T a Source
Handle of a transactional variable
init :: (Types a, Read a, Show a) => String -> a -> TCGI b (T a)Source
Attempt to create a new tv n and set its initial value. Returns handle to the variable. If the variable already exists, then just returns the handle.
create :: (Read a, Show a, Types a) => a -> TCGI b (T a)Source
Create a fresh transactional variable with an initial value and return its handle. Performs a physical write to ensure that the variable's name is unique. Locks the transaction directory during the write operation.
remove :: Types a => T a -> TCGI b ()Source
Remove a transactional variable. Subsequent read accesses to this variable will make the transaction fail. May throw an exception if the variable is not present.
get :: (Read a, Show a) => T a -> TCGI b aSource
Read transactional variable through a typed handle.
set :: (Read a, Show a) => T a -> a -> TCGI b ()Source
Write to a transactional variable through typed handle. Only affects the log, no physical write happens. Checks physically for existence of the variable (but tries the log first). Raises exception if it does not exist.
with :: (WithMonad cgi, Read result, Show result) => result -> (result -> cgi ()) -> (Control (TCGI result) result -> TCGI result ()) -> cgi ()Source
data Control cgi result Source
Constructors
Control
abandon :: result -> cgi ()abandon with result (rollback)
setFail :: result -> cgi ()set result on failure
setCommit :: result -> cgi ()set result on successful commit
data TCGI b a Source
Type of a CGI action in a transactional scope with a result variable of type a.
Produced by Haddock version 2.6.0