X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FHttpd.hs;h=a5f974978a4c6e5ccc4baad408d61bd5ce69f661;hp=e1abcab63d8fc5344262f3cde0f14eec136347b8;hb=950640dd241222203778f8167943d30fa52f356a;hpb=01fe22bec14421e3b9430efbfc9daee05f181730 diff --git a/Network/HTTP/Lucu/Httpd.hs b/Network/HTTP/Lucu/Httpd.hs index e1abcab..a5f9749 100644 --- a/Network/HTTP/Lucu/Httpd.hs +++ b/Network/HTTP/Lucu/Httpd.hs @@ -28,28 +28,30 @@ import Prelude.Unicode -- -- Example: -- --- > {-# LANGUAGE OverloadedStrings #-} --- > {-# LANGUAGE QuasiQuotes #-} --- > module Main where --- > import Network --- > import Network.HTTP.Lucu --- > --- > main :: IO () --- > main = let config = defaultConfig --- > resources = mkResTree [ ([], helloWorld) ] --- > in --- > withSocketsDo $ runHttpd config resourcees [] --- > --- > helloWorld :: Resource --- > helloWorld = emptyResource { --- > resGet --- > = Just $ do setContentType [mimeType| text/plain |] --- > putChunk "Hello, world!" --- > } +-- @ +-- {-\# LANGUAGE OverloadedStrings \#-} +-- {-\# LANGUAGE QuasiQuotes \#-} +-- module Main where +-- import qualified "Data.Collections" as C +-- import "Network" +-- import "Network.HTTP.Lucu" -- --- FIXME: update the above example -runHttpd ∷ Config → SchemeMap → IO () -runHttpd cnf sm +-- main :: 'IO' () +-- main = let config = 'defaultConfig' +-- tree :: 'ResourceTree' +-- tree = C.fromList [ ([], 'nonGreedy' helloWorld) ] +-- in +-- 'Network.withSocketsDo' '.' 'runHttpd' config '$' 'resourceMap' tree +-- +-- helloWorld :: 'Network.HTTP.Lucu.Resource' +-- helloWorld = C.fromList +-- [ ( 'Network.HTTP.Lucu.GET' +-- , do 'Network.HTTP.Lucu.setContentType' ['Network.HTTP.Lucu.mimeType'| text/plain |] +-- 'Network.HTTP.Lucu.putChunk' \"Hello, world!\" +-- } +-- @ +runHttpd ∷ HostMapper α ⇒ Config → α → IO () +runHttpd cnf hm = do let launchers = catMaybes [ do addr ← cnfServerV4Addr cnf @@ -108,7 +110,7 @@ runHttpd cnf sm httpLoop port so = do (h, addr) ← SL.accept so tQueue ← mkInteractionQueue - readerTID ← forkIO $ requestReader cnf sm h port addr tQueue + readerTID ← forkIO $ requestReader cnf hm h port addr tQueue _writerTID ← forkIO $ responseWriter cnf h tQueue readerTID httpLoop port so