Bulat,

one possible solution: use Streams library and establish a stream
transformer that adds an error call on timeout. something like this:

data StreamWithTimeout s = StreamWithTimeout s Timeout

instance Stream s => Stream (StreamWithTimeout s) where
  vGetChar (StreamWithTimeout s t) = do
     timeout t (vGetChar s)
               (error "Timed out!")

If possible, I would like to try and use lazy [Char]s -- this would greatly
simplify my usage of the Parsec parser.

or, even simple, you can make your own variant of hGetContents which
adds a timeout checks before each next call to hGetChar or hGetBuf

Can this be as simple as applying the parser against a string returned
by the (modified) hGetContents, which will read all that is possible given
a certain time constraint?

Thanks,

- Scott
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to