transient-0.4.4: Making composable programs with multithreading, events and distributed computing

Safe HaskellNone






sourceFile :: String -> TransIO String Source #

slurp input from a file a line at a time. It creates as much threads as possible. to allow single threaded processing, use it with `threads 0`

sinkFile :: TransIO String -> String -> TransIO () Source #

Stream the input to a file

process Source #


:: TransIO a

input computation

-> IO handle

open computation that gives resources to be used during the computation

-> (handle -> Maybe SomeException -> IO ())

close computation that frees the resources

-> (handle -> a -> TransIO (StreamData b))

process to be done

-> TransIO b 

is the general operation for processing a streamed input, with opening resources before processing and closing them when finish is called. The process statements suscribe to the Finish EVar.

When this variable is updated, the close procedure is called.

When the processing return SDone or SError, the Finish variable is updated so all the subscribed code, that close the resources, is executed.

initFinish :: TransientIO () Source #

initialize the event variable for finalization. all the following computations in different threads will share it it also isolate this event from other branches that may have his own finish variable

finish :: Maybe SomeException -> TransIO a Source #

trigger the event, so this closes all the resources

onFinish :: (Maybe SomeException -> TransIO ()) -> TransIO () Source #

set a computation to be called when the finish event happens