on master help sign in
move sendStopToProducer inside fromProducer
commit9465fc035aa106ee7590f59f4ebdee0fbdf903a2 authorHarendra Kumar <harendra.kumar@gmail.com> dateSun 8 Dec 2019, 18:42 (7 years ago) parentd229a4b
2 files changed+2−11
src/Streamly/Internal/Data/Stream/Parallel.hs+1−11 src/Streamly/Internal/Data/Stream/SVar.hs+1
src/Streamly/Internal/Data/Stream/Parallel.hs+1−11
@@ -334,17 +334,7 @@ newFoldSVar stt f = do
334334 -- Add the producer thread-id to the SVar.
335335 liftIO myThreadId >>= modifyThread sv
336336
337− -- XXX move this in fromProducer itself.
338− --
339− -- A wrapper to send a Stop event back to the producer when the fold
340− -- receives a stop from the producer.
341− let pull m = mkStream $ \st yld _ stp -> do
342− let stop = sendStopToProducer sv >> stp
343− single a = yld a (K.nilM (sendStopToProducer sv))
344− yieldk a r = yld a (pull r)
345− in foldStreamShared st yieldk single stop m
346−
347− void $ doFork (void $ f $ fromStream $ pull $ fromProducer sv)
337+ void $ doFork (void $ f $ fromStream $ fromProducer sv)
348338 (svarMrun sv)
349339 (handleFoldException sv)
350340 return sv
src/Streamly/Internal/Data/Stream/SVar.hs+1
@@ -133,6 +133,7 @@ fromProducer sv = mkStream $ \st yld sng stp -> do
133133 t <- liftIO $ getTime Monotonic
134134 liftIO $ writeIORef (svarStopTime (svarStats sv)) (Just t)
135135 liftIO $ printSVar sv "SVar Done"
136+ sendStopToProducer sv
136137 stp
137138
138139 {-# INLINE processEvents #-}