[Haskell-cafe] Re: `Expect'-like lazy reading/Parsec matching on
TCP sockets
Bulat Ziganshin
bulat.ziganshin at gmail.com
Fri Apr 6 15:53:40 EDT 2007
Hello Scott,
Friday, April 6, 2007, 11:44:01 PM, you wrote:
you should write compiler version and OS for such problems. if it's
6.6 and Win, try to upgrade to current STABLE build: smth like
http://www.haskell.org/ghc/dist/stable/dist/ghc-6.6.20061207-i386-unknown-mingw32.tar.gz
but newer (this one is dec 12 build)
I/O in Windows threaded RTS was fixed after initial 6.6 release and
afaik hWaitForInput should work better now. alternatively, you can try
with hand-made timeout solution
> Ooops! It seems that this doesn't behave well with a -threaded
> RTS. I get an EOF on handles that I know for a fact shouldn't
> be receiving them. It still works well without -threaded, but
> does anyone know why I'm getting this behavior?
> hGetContentsTimeout :: Handle -> Int -> IO String
> hGetContentsTimeout h t = do
> hSetBuffering stdin NoBuffering
> ready <- hWaitForInput h t
> if (not ready) then return []
> else do
> c <- hGetChar h
> s <- unsafeInterleaveIO (hGetContentsTimeout h t)
> return (c:s)
> (I did add EOF checking, but all that did was return the end of the list earlier than I wanted)
>
--
Best regards,
Bulat mailto:Bulat.Ziganshin at gmail.com
More information about the Haskell-Cafe
mailing list