packages feed

haskell-mpi-1.4.0: test/examples/clientserver/Client.hs

{-# LANGUAGE ScopedTypeVariables #-}

-- Based on the simple client-server example from page 326/327 of 
-- "MPI Standard version 2.2"

module Main where

import System.Environment (getArgs)
import System.Exit
import Foreign.C.Types
import Control.Monad (forM_, when)
import Control.Parallel.MPI.Fast

main :: IO ()
main = do
  args <- getArgs
  when (length args /= 1) $ do
    putStr "server port name required.\n"
    exitWith (ExitFailure 1)
  sendRequest $ head args
  
sendRequest :: String -> IO ()
sendRequest port = mpi $ do
  server <- commConnect port infoNull 0 commWorld
  forM_ [0..4] $ \(i::CInt) -> send server 0 2 i
  send server 0 1 (0xdeadbeef::CInt)
  commDisconnect server