on master help sign in
Use the conduit producer branch
commita031e67d1178f06ff0e975fd398a73ec2f3fad22 authorMichael Snoyman <michael@snoyman.com> dateWed 13 Feb 2013, 10:35 (14 years ago) parent187e086
3 files changed+12−19
.travis.yml+1−1 wai-extra/Network/Wai/Parse.hs+11−8 warp/Network/Wai/Handler/Warp/Response.hs−10
.travis.yml+1−1
@@ -4,6 +4,6 @@ install:
44 - cabal unpack wai-logger-0.3.0
55 - cp sources-travis.txt sources.txt
66 - cabal install mega-sdist hspec cabal-meta cabal-src
7− - cabal-meta install
7+ - cabal-meta install --force-reinstalls
88
99script: mega-sdist --test
wai-extra/Network/Wai/Parse.hs+11−8
@@ -52,7 +52,7 @@ import Control.Monad (when, unless)
5252import Control.Monad.Trans.Class (lift)
5353import Control.Monad.Trans.Resource (allocate, release, register)
5454#if MIN_VERSION_conduit(1, 0, 0)
55−import Data.Conduit.Internal (Pipe (NeedInput, HaveOutput), (>+>), withUpstream, Sink (..), injectLeftovers, streamFromPipe, ConduitM)
55+import Data.Conduit.Internal (Pipe (NeedInput, HaveOutput), (>+>), withUpstream, Sink (..), injectLeftovers, ConduitM (..))
5656import Data.Void (Void)
5757#endif
5858
@@ -190,7 +190,7 @@ conduitRequestBody backend (Multipart bound) =
190190 parsePieces backend $ S8.pack "--" `S.append` bound
191191
192192#if MIN_VERSION_conduit(1, 0, 0)
193−takeLine :: MonadSink S.ByteString m (Maybe S.ByteString)
193+takeLine :: Monad m => Consumer S.ByteString m (Maybe S.ByteString)
194194#else
195195takeLine :: Monad m => Pipe S.ByteString S.ByteString o u m (Maybe S.ByteString)
196196#endif
@@ -209,7 +209,7 @@ takeLine =
209209 return $ Just $ killCR x
210210
211211#if MIN_VERSION_conduit(1, 0, 0)
212−takeLines :: MonadSink S.ByteString (ResourceT IO) [S.ByteString]
212+takeLines :: Consumer S.ByteString (ResourceT IO) [S.ByteString]
213213#else
214214takeLines :: Pipe S.ByteString S.ByteString o u (ResourceT IO) [S.ByteString]
215215#endif
@@ -311,13 +311,13 @@ sinkTillBound' :: S.ByteString
311311#endif
312312sinkTillBound' bound name fi sink =
313313#if MIN_VERSION_conduit(1, 0, 0)
314− streamFromPipe $ anyOutput $
314+ ConduitM $ anyOutput $
315315#endif
316316 conduitTillBound bound >+> withUpstream (fix $ sink name fi)
317317 where
318318#if MIN_VERSION_conduit(1, 0, 0)
319319 fix :: Sink S8.ByteString (ResourceT IO) y -> Pipe Void S8.ByteString Void Bool (ResourceT IO) y
320− fix (Sink p) = ignoreTerm >+> injectLeftovers p
320+ fix (ConduitM p) = ignoreTerm >+> injectLeftovers p
321321 ignoreTerm = await' >>= maybe (return ()) (\x -> yield' x >> ignoreTerm)
322322 await' = NeedInput (return . Just) (const $ return Nothing)
323323 yield' = HaveOutput (return ()) (return ())
@@ -336,6 +336,9 @@ conduitTillBound :: Monad m
336336 -> Pipe S.ByteString S.ByteString S.ByteString u m Bool
337337#endif
338338conduitTillBound bound =
339+#if MIN_VERSION_conduit(1, 0, 0)
340+ unConduitM $
341+#endif
339342 go id
340343 where
341344 go front = await >>= maybe (close front) (push front)
@@ -366,19 +369,19 @@ sinkTillBound :: S.ByteString
366369 -> (x -> S.ByteString -> IO x)
367370 -> x
368371#if MIN_VERSION_conduit(1, 0, 0)
369− -> MonadSink S.ByteString (ResourceT IO) (Bool, x)
372+ -> Consumer S.ByteString (ResourceT IO) (Bool, x)
370373#else
371374 -> Pipe S.ByteString S.ByteString o u (ResourceT IO) (Bool, x)
372375#endif
373376sinkTillBound bound iter seed0 =
374377#if MIN_VERSION_conduit(1, 0, 0)
375− streamFromPipe $
378+ ConduitM $
376379#endif
377380 (conduitTillBound bound >+> (withUpstream $ ij $ CL.foldM iter' seed0))
378381 where
379382 iter' a b = liftIO $ iter a b
380383#if MIN_VERSION_conduit(1, 0, 0)
381− ij p = ignoreTerm >+> injectLeftovers p
384+ ij (ConduitM p) = ignoreTerm >+> injectLeftovers p
382385 ignoreTerm = await' >>= maybe (return ()) (\x -> yield' x >> ignoreTerm)
383386 await' = NeedInput (return . Just) (const $ return Nothing)
384387 yield' = HaveOutput (return ()) (return ())
warp/Network/Wai/Handler/Warp/Response.hs−10
@@ -1,6 +1,5 @@
11{-# LANGUAGE OverloadedStrings #-}
22{-# LANGUAGE ScopedTypeVariables #-}
3−{-# LANGUAGE CPP #-}
43
54module Network.Wai.Handler.Warp.Response (
65 sendResponse
@@ -15,9 +14,6 @@ import Data.ByteString (ByteString)
1514import qualified Data.ByteString.Char8 as B (pack)
1615import qualified Data.CaseInsensitive as CI
1716import Data.Conduit
18−#if MIN_VERSION_conduit(1, 0, 0)
19−import Data.Conduit.Internal (mapOutput, SourceM (..))
20−#endif
2117import Data.Conduit.Blaze (builderToByteString)
2218import qualified Data.Conduit.List as CL
2319import Data.Maybe (isJust)
@@ -111,15 +107,9 @@ sendResponse cleaner req conn (ResponseSource s hs bodyFlush)
111107 where
112108 th = threadHandle cleaner
113109 body =
114−#if MIN_VERSION_conduit(1, 0, 0)
115− SourceM $
116−#endif
117110 mapOutput (\x -> case x of
118111 Flush -> flush
119112 Chunk builder -> builder)
120−#if MIN_VERSION_conduit(1, 0, 0)
121− $ unSourceM
122−#endif
123113 bodyFlush
124114 cbody = if needsChunked then body $= chunk else body
125115 -- FIXME perhaps alloca a buffer per thread and reuse that in all