
Hello Joel, your code is unreadable, inefficent and don't handle async exceptions between calls to `handle`. as i already sayed you'd better to use: handle (...) repeat_forever do cmd <- read h ssl post $! Cmd $! cmd Monday, December 12, 2005, 12:30:27 PM, you wrote: JR> Folks, JR> I have a thread that launches socket reader and writer threads. My JR> intent is to notify the main thread when an exception is caught by JR> the reader/writer. Is this code proper? JR> --- JR> withException :: (Event a -> IO ()) JR> -> IO () JR> -> IO Bool JR> withException post action = JR> handle (\e -> do case e of JR> AsyncException ThreadKilled -> return () JR> _ -> post $ NetworkError e JR> return False JR> ) $ do { action; return True } JR> writeLoop :: (Event a -> IO ()) -> Handle -> (SSL, BIO, BIO) -> IO () JR> writeLoop post h ssl = JR> do go <- withException post $ JR> do cmd <- read h ssl JR> post $! Cmd $! cmd JR> when go $ writeLoop post h ssl JR> --- JR> Thanks, Joel JR> -- JR> http://wagerlabs.com/ JR> _______________________________________________ JR> Haskell-Cafe mailing list JR> Haskell-Cafe@haskell.org JR> http://www.haskell.org/mailman/listinfo/haskell-cafe -- Best regards, Bulat mailto:bulatz@HotPOP.com