Gore&Ash module for high level network synchronization https://github.com/Teaspot-Studio/gore-and-ash-sync
|Latest on Hackage:||18.104.22.168|
This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.
The module provides facilities of high level synchronizing for Gore&Ash engine.
Add following to your
- location: git: https://github.com/Teaspot-Studio/gore-and-ash-sync.git commit: <PLACE HERE FULL HASH OF LAST COMMIT>
When defining you application stack, add
type AppStack = ModuleStack [LoggingT, ActorT, NetworkT, SyncT, ... other modules ... ] IO
Unfortunately deriving for
SyncMonad isn't work (bug of GHC 7.10.3), so you need meddle with some boilerplate while defining
SyncMonad instance for your application monad wrapper:
newtype AppMonad a = AppMonad (AppStack a) deriving (Functor, Applicative, Monad, MonadFix, MonadIO, MonadThrow, MonadCatch LoggingMonad, NetworkMonad) instance SyncMonad AppMonad where getSyncIdM = AppMonad . getSyncIdM getSyncTypeRepM = AppMonad . getSyncTypeRepM registerSyncIdM = AppMonad . registerSyncIdM addSyncTypeRepM a b = AppMonad $ addSyncTypeRepM a b syncScheduleMessageM peer ch i mt msg = AppMonad $ syncScheduleMessageM peer ch i mt msg syncSetLoggingM = AppMonad . syncSetLoggingM syncSetRoleM = AppMonad . syncSetRoleM syncGetRoleM = AppMonad syncGetRoleM syncRequestIdM a b = AppMonad $ syncRequestIdM a b
- Updted to ghc 8 and added changelog.