> {- > process Main (main) where > -} > > module Main (main) where > > import Distributed > > data Msg = Value Int | GetValue Pid | Inc | Dec | Hallo > deriving (Show, Read) > instance Serialize Msg > destNode = Nodename "Counter-Node" > main = do > putStrLn "Starting" > destHost <- myGetVarDefault "COUNTERSERVER" "localhost" > Distributed.start (client (Hostname destHost)) "" > > where > client :: Hostname -> DIO Msg () > client destHost = do > proc $ putStrLn "i,d,v?" > str <- proc $ getLine > case str of > "i" -> do remoteSend destHost destNode "Counter" Inc > client destHost > "d" -> do remoteSend destHost destNode "Counter" Dec > client destHost > "v" -> do me <- self > remoteSend destHost destNode "Counter" (GetValue me) > receive (\v -> case v of > Value v -> do > proc (putStrLn ("\n"++(show v))) > ) > client destHost > "q" -> return () > _ -> client destHost