{-# LANGUAGE OverloadedStrings #-} module Main where import Data.Conduit.Binary import Data.Conduit.Network import Data.Conduit import qualified Data.Conduit.List as CL import qualified Data.ByteString.Char8 as S import Network.Socket (Family(..)) import Data.HList import ServerC {- data AppData m = AppData { appSource :: Source m ByteString , appSink :: Sink ByteString m () , appSockAddr :: SockAddr , appLocalAddr :: Maybe SockAddr } -} -- handleConnection will simply output everything -- it sees from the connection to the terminal handleConnection :: AppData IO -> IO () handleConnection appdata = do sourceLbs "\n" $$ appSink appdata -- send bytestring appSource appdata $$ CL.mapM_ S.putStrLn -- display inbound bytestring mainOld = do -- Listen to port 5222 and invoke handleConnection on every -- inbound connection. runTCPServer (serverSettings 5222 HostAny) handleConnection return () handleC st src snk = do sourceLbs "\n" $$ snk src $$ CL.mapM_ S.putStrLn mainC = do doServer (AF_INET .*. 5222 .*. HNil) handleC _ <- getLine return () main = mainC