| module TChannelTransport(TChannelTrans(..)) where | 
 | import System.IO | 
 | import IO | 
 | import Thrift | 
 | import Control.Exception | 
 | data TChannelTrans = TChannelTrans (Handle) | 
 |  | 
 | instance TTransport TChannelTrans where | 
 |     tisOpen a = True | 
 |     topen a = return a | 
 |     tclose a = return a | 
 |     tread a 0 = return [] | 
 |     tread (TChannelTrans h) i = Prelude.catch | 
 |                                  (do c <- hGetChar h | 
 |                                      t <- tread (TChannelTrans h) (i-1) | 
 |                                      return $ c:t) | 
 |                                  (\e -> if isEOFError e then return [] else throwDyn (TransportExn "TChannelTransport: Could not read" TE_UNKNOWN)) | 
 |     twrite a [] = return () | 
 |     twrite (TChannelTrans h) (c:t) = do hPutChar h c | 
 |                                         twrite (TChannelTrans h) t | 
 |     tflush (TChannelTrans h) = hFlush h | 
 |  |