packages feed

Holumbus-Distribution-0.0.1: Examples/Ports/Sender.hs

-- ----------------------------------------------------------------------------
{- |
  Module     : 
  Copyright  : Copyright (C) 2008 Stefan Schmidt
  License    : MIT

  Maintainer : Stefan Schmidt (stefanschmidt@web.de)
  Stability  : experimental
  Portability: portable
  Version    : 0.1


-}
-- ----------------------------------------------------------------------------

module Main(main) where
    
import           Data.List
-- import           Data.Binary

import           Holumbus.Common.Logging
import           Holumbus.Network.Port
import           Holumbus.Network.PortRegistry.PortRegistryPort
import qualified Holumbus.Console.Console as Console


version :: String
version = "Ports-Demo Sender 0.1"


main :: IO ()
main
  = do
    initializeLogging []
    putStrLn version
    putStrLn "Begin"
    printStreamController 
    reg <- newPortRegistryFromXmlFile "/tmp/registry.xml"
    setPortRegistry reg
    p <- readPortFromFile "p.port"
    Console.handleUserInput createConsole p

        
createConsole :: Console.ConsoleData (Port String)
createConsole =
  -- Console.addConsoleCommand "send" sendMsg "sends a message" $
  -- Console.addConsoleCommand "sendP" sendPMsg "sends a message to the private port of the receiver" $
  -- Console.addConsoleCommand "sendN" sendNMsg "sends a message to the named port of the receiver" $
  Console.addConsoleCommand "sendG" sendGMsg "sends a message to the global port of the receiver" $
  Console.addConsoleCommand "debug" printDebug "prints internal state of the filesystem (DEBUG)" $ 
  Console.addConsoleCommand "version" printVersion "prints the version" $ 
  Console.initializeConsole

{-
sendMsg :: StringPort -> [String] -> IO ()
sendMsg p line
  = do
    respStream <- newStringStream
    respPort <- newPortFromStream respStream
    let msg = intercalate " " line
    sendWithGeneric p msg (encode respPort)
    response <- tryWaitReadStreamMsg respStream time10
    case response of
      -- if no response
      Nothing -> putStrLn "no response in 10 seconds"          
      -- handle the response
      (Just r) -> putStrLn $ "ResponseMessage:\n" ++ show r
    closeStream respStream
    
sendPMsg :: StringPort -> [String] -> IO ()
sendPMsg _ line
  = do
    privPort <- (newPort "private" "localhost" 10000)::IO StringPort
    let msg = intercalate " " line
    send privPort msg
 
 
sendNMsg :: StringPort -> [String] -> IO ()
sendNMsg _ line
  = do
    namedPort <- (newPort "named" "localhost" 10001)::IO StringPort
    let msg = intercalate " " line
    send namedPort msg
-}

sendGMsg :: (Port String) -> [String] -> IO ()
sendGMsg _ line
  = do
    globalPort <- (newGlobalPort "global")::IO (Port String)
    let msg = intercalate " " line
    send globalPort msg


printDebug :: (Port String) -> [String] -> IO ()
printDebug _ _
  = do
    printStreamController




printVersion :: (Port String) -> [String] -> IO ()
printVersion _ _
  = do
    putStrLn version