salvia-0.0.4: src/Network/Salvia/Core/Main.hs
module Network.Salvia.Core.Main (start) where
import Control.Monad.State
import Network.Salvia.Core.Config (listenAddr, listenPort, backlog, HttpdConfig)
import Network.Salvia.Core.Handler (Handler, makeContext)
import Network.Salvia.Core.Network (server)
-------- HTTP deamon implementation -------------------------------------------
{-
Given a server configuration and a handler to invoke when receiving client
request the server starts and keep running forever.
-}
start :: HttpdConfig -> Handler () -> IO ()
start config httpHandler =
server
(listenAddr config)
(listenPort config)
(backlog config)
tcpHandler
where
tcpHandler handle addr =
fst `liftM` runStateT httpHandler
(makeContext config addr handle)