我正在开发一款游戏,并选择了Happstack作为持久性部分。我发现它很容易使用,我为自己做了一个快速的例子来理解它:
getAllObjects :: MonadIO m => m [Thing]
getAllObjects = do
elems <- query GetObjects
return elems
addAnObject :: (MonadIO m) => Thing -> m ()
addAnObject thing = do update $ AddObject thing
test command = do
control <- startSystemState macidProxy
result <- command
shutdownSystem control
return result
checkpoint = do
control <- startSystemState macidProxy
createCheckpoint control
shutdownSystem control
并且每次我"测试"它时,它都会创建一个event.file。然后我"检查点"并创建一个新的检查点文件,这对我来说是好的,问题是旧事件文件不断增长!我手动删除每个文件(除了最后一个检查点和当前)。是否有一些代码我从happstack缺少做"删除旧的东西"?
没有清除旧事件文件的内置机制。Lemmih曾谈到过在某个时间点将这种设施添加到酸态。
编辑:darcs版本的acid-state现在有一个'createArchive'功能来存档不再需要恢复当前状态的旧日志文件。