diff --git a/affection.cabal b/affection.cabal index 51cb0f7..5077048 100644 --- a/affection.cabal +++ b/affection.cabal @@ -45,7 +45,10 @@ library -- , Affection.Actor -- , Affection.Animation , Affection.Util - , Affection.MessageBus + , Affection.MessageBus.Util + , Affection.MessageBus.Class + , Affection.MessageBus.Engine + , Affection.MessageBus.Message default-extensions: OverloadedStrings -- Modules included in this library but not exported. diff --git a/src/Affection.hs b/src/Affection.hs index d0d5afa..3dbb127 100644 --- a/src/Affection.hs +++ b/src/Affection.hs @@ -41,7 +41,10 @@ import Affection.MouseInteractable as A -- import Affection.Actor as A -- import Affection.Animation as A import Affection.Util as A -import Affection.MessageBus as A +import Affection.MessageBus.Class as A +import Affection.MessageBus.Message as A +import Affection.MessageBus.Engine as A +import Affection.MessageBus.Util as A import Graphics.Rendering.OpenGL as GL (clear, flush, ClearBuffer(..)) diff --git a/src/Affection/MessageBus.hs b/src/Affection/MessageBus.hs deleted file mode 100644 index 2fcbaf8..0000000 --- a/src/Affection/MessageBus.hs +++ /dev/null @@ -1,22 +0,0 @@ -module Affection.MessageBus where - -import Control.Concurrent.STM as STM - -import Data.IORef - -class Message msg where - msgPayload :: msg -> Maybe a - -type Channel msg = TChan msg - -class Participant prt where - partChannel :: (Message msg) => prt -> IORef (Channel msg) - - partConnectChannel :: (Message msg) => prt -> (Channel msg) -> IO () - - partListen :: (Message msg) => prt -> IO msg - - partBroadcast :: (Message msg) => prt -> msg -> IO () - -newBroadcastChannel :: IO (Channel msg) -newBroadcastChannel = atomically $ newBroadcastTChan