module HSP.Env (
        module HSP.Env.Request,
        module HSP.Env.NumberGen,
        
        HSPEnv(..),
        
        mkSimpleEnv
    ) where
    
import HSP.Env.Request
import HSP.Env.NumberGen

import Data.IORef

-- | The runtime environment for HSP pages.
data HSPEnv = HSPEnv {
          getReq  :: Request -- In CGI mode we only support Request
--      , getResp :: Rp.Response
        , getNG   :: NumberGen
        }



mkSimpleEnv :: IO HSPEnv
mkSimpleEnv = do
        x <- newIORef 0
        let req = Request (const []) []
            num = NumberGen (atomicModifyIORef x (\a -> (a+1,a)))
        return $ HSPEnv req num