gore-and-ash-sync 1.1.1.0 → 1.2.0.0
raw patch · 2 files changed
+18/−6 lines, 2 filesdep +resourcetdep +transformersdep +transformers-basedep ~gore-and-ash-actordep ~gore-and-ash-loggingdep ~gore-and-ash-network
Dependencies added: resourcet, transformers, transformers-base
Dependency ranges changed: gore-and-ash-actor, gore-and-ash-logging, gore-and-ash-network
Files
gore-and-ash-sync.cabal view
@@ -1,5 +1,5 @@ name: gore-and-ash-sync-version: 1.1.1.0+version: 1.2.0.0 synopsis: Gore&Ash module for high level network synchronization description: Please see README.md homepage: https://github.com/Teaspot-Studio/gore-and-ash-sync@@ -33,14 +33,17 @@ , deepseq >= 1.4.1.1 , exceptions >= 0.8.0.2 , gore-and-ash >= 1.1.0.0- , gore-and-ash-actor >= 1.1.0.0- , gore-and-ash-logging >= 1.1.0.0- , gore-and-ash-network >= 1.1.0.0+ , gore-and-ash-actor >= 1.2.0.0+ , gore-and-ash-logging >= 1.2.0.0+ , gore-and-ash-network >= 1.2.0.0 , hashable >= 1.2.3.3 , mtl >= 2.2.1+ , resourcet >= 1.1.7.1 , text >= 1.2.2.0+ , transformers >= 0.4.2+ , transformers-base >= 0.4.4 , unordered-containers >= 0.2.5.1- + default-extensions: Arrows BangPatterns
src/Game/GoreAndAsh/Sync/Module.hs view
@@ -17,9 +17,12 @@ , syncLog ) where +import Control.Monad.Base import Control.Monad.Catch+import Control.Monad.Error.Class import Control.Monad.Fix import Control.Monad.State.Strict+import Control.Monad.Trans.Resource import Data.Maybe import Data.Monoid import Data.Proxy @@ -68,8 +71,14 @@ -- -- The module is NOT pure within first phase (see 'ModuleStack' docs), therefore currently only 'IO' end monad can handler the module. newtype SyncT s m a = SyncT { runSyncT :: StateT (SyncState s) m a }- deriving (Functor, Applicative, Monad, MonadState (SyncState s), MonadFix, MonadTrans, MonadIO, MonadThrow, MonadCatch, MonadMask)+ deriving (Functor, Applicative, Monad, MonadState (SyncState s), MonadFix, MonadTrans, MonadIO, MonadThrow, MonadCatch, MonadMask, MonadError e) +instance MonadBase IO m => MonadBase IO (SyncT s m) where + liftBase = SyncT . liftBase ++instance MonadResource m => MonadResource (SyncT s m) where + liftResourceT = SyncT . liftResourceT+ instance (NetworkMonad m, LoggingMonad m, ActorMonad m, GameModule m s) => GameModule (SyncT s m) (SyncState s) where type ModuleState (SyncT s m) = SyncState s runModule (SyncT m) s = do