1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
module RemoteCommon where
import Control.Monad.Reader
import Control.Monad.State
import Data.Acid
import Data.SafeCopy
------------------------------------------------------
-- The Haskell structure that we want to encapsulate
data StressState = StressState !Int
$(deriveSafeCopy 0 'base ''StressState)
------------------------------------------------------
-- The transaction we will execute over the state.
pokeState :: Update StressState ()
pokeState = do StressState i <- get
put (StressState (i+1))
queryState :: Query StressState Int
queryState = do StressState i <- ask
return i
clearState :: Update StressState ()
clearState = put $ StressState 0
$(makeAcidic ''StressState ['pokeState, 'queryState, 'clearState])
|