packages feed

acid-state-0.7.10: examples/RemoteServer.hs

{-# LANGUAGE DeriveDataTypeable, TypeFamilies, TemplateHaskell #-}
module Main (main) where

import Data.Acid
import Data.Acid.Local
import Data.Acid.Remote (acidServer)

import Control.Exception (bracket)
import Data.Typeable

import Network

import RemoteCommon

-- open a server on port 8080

main :: IO ()
main =
    bracket
      (do putStrLn "Loading checkpoint"
          mkAcid <- prepareLocalState $ StressState 0
          putStrLn "Waiting for lock/replaying events"
          acid <- mkAcid
          putStrLn "Done."
          return acid)
      closeAcidState
      (\s -> acidServer s (PortNumber 8080))