1 module Network.HTTP.Lucu.Httpd
2 ( runHttpd -- Config -> ResTree -> IO ()
6 import Control.Concurrent
7 import Control.Concurrent.STM
8 import qualified Data.ByteString.Lazy.Char8 as B
9 import Data.ByteString.Lazy.Char8 (ByteString)
11 import Network.HTTP.Lucu.Config
12 import Network.HTTP.Lucu.Interaction
13 import Network.HTTP.Lucu.RequestReader
14 import Network.HTTP.Lucu.Resource
15 import Network.HTTP.Lucu.Resource.Tree
16 import Network.HTTP.Lucu.ResponseWriter
20 runHttpd :: Config -> ResTree -> IO ()
23 do so <- listenOn (cnfServerPort cnf)
26 loop :: Socket -> IO ()
28 = do (h, host, _) <- accept so
29 tQueue <- newInteractionQueue
30 readerTID <- forkIO $ requestReader cnf table h host tQueue
31 writerTID <- forkIO $ responseWriter cnf h tQueue readerTID