diff options
Diffstat (limited to 'lib/Phi/Phi.hs')
-rw-r--r-- | lib/Phi/Phi.hs | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/lib/Phi/Phi.hs b/lib/Phi/Phi.hs index 5d14181..1fef39b 100644 --- a/lib/Phi/Phi.hs +++ b/lib/Phi/Phi.hs @@ -1,13 +1,11 @@ -{-# LANGUAGE ExistentialQuantification #-} +{-# LANGUAGE ExistentialQuantification, DeriveDataTypeable, StandaloneDeriving #-} module Phi.Phi ( Phi - , MessageBus , Message + , DefaultMessage(..) , fromMessage , initPhi - , runPhi , sendMessage - , getMessageBus , receiveMessage ) where @@ -16,9 +14,11 @@ import Control.Monad import Data.Typeable data Phi = Phi (Chan Message) -data MessageBus = MessageBus (Chan Message) data Message = forall a. (Typeable a, Show a) => Message a +deriving instance Show Message + +data DefaultMessage = Repaint deriving (Typeable, Show) fromMessage :: (Typeable a, Show a) => Message -> Maybe a fromMessage (Message m) = cast m @@ -26,14 +26,8 @@ fromMessage (Message m) = cast m initPhi :: IO Phi initPhi = liftM Phi newChan -runPhi :: Phi -> IO () -runPhi (Phi chan) = forever $ readChan chan - sendMessage :: (Typeable a, Show a) => Phi -> a -> IO () sendMessage (Phi chan) = writeChan chan . Message -getMessageBus :: Phi -> IO MessageBus -getMessageBus (Phi chan) = liftM MessageBus $ dupChan chan - -receiveMessage :: MessageBus -> IO Message -receiveMessage (MessageBus chan) = readChan chan +receiveMessage :: Phi -> IO Message +receiveMessage (Phi chan) = readChan chan |