-- ---------------------------------------------------------------------------- {- | 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