streaming-commons-0.2.2.6: Common lower-level functions needed by various streaming data libraries
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Streaming.Process

Description

A full tutorial for this module is available at: https://github.com/snoyberg/conduit/blob/master/PROCESS.md.

Note that, while the tutorial covers Data.Conduit.Process, that module closely follows the present one, and almost all concepts in the tutorial apply here.

Synopsis

Functions

streamingProcess :: (MonadIO m, InputSource stdin, OutputSink stdout, OutputSink stderr) => CreateProcess -> m (stdin, stdout, stderr, StreamingProcessHandle) #

The primary function for running a process. Note that, with the exception of UseProvidedHandle, the values for std_in, std_out and std_err will be ignored by this function.

Since 0.1.4

closeStreamingProcessHandle :: MonadIO m => StreamingProcessHandle -> m () #

Free any resources (e.g. Handles) acquired by a call to streamingProcess.

Since: 0.1.16

Specialized streaming types

data Inherited #

Inherit the stream from the current process.

Since 0.1.4

Constructors

Inherited 

Instances

Instances details
InputSource Inherited # 
Instance details

Defined in Data.Streaming.Process

Methods

isStdStream :: (Maybe Handle -> IO Inherited, Maybe StdStream) #

OutputSink Inherited # 
Instance details

Defined in Data.Streaming.Process

Methods

osStdStream :: (Maybe Handle -> IO Inherited, Maybe StdStream) #

data ClosedStream #

Close the stream with the child process.

You usually do not want to use this, as it will leave the corresponding file descriptor unassigned and hence available for re-use in the child process.

Since 0.1.4

Constructors

ClosedStream 

Instances

Instances details
InputSource ClosedStream # 
Instance details

Defined in Data.Streaming.Process

Methods

isStdStream :: (Maybe Handle -> IO ClosedStream, Maybe StdStream) #

OutputSink ClosedStream # 
Instance details

Defined in Data.Streaming.Process

Methods

osStdStream :: (Maybe Handle -> IO ClosedStream, Maybe StdStream) #

data UseProvidedHandle #

Use the Handle provided by the CreateProcess value. This would allow you, for example, to open up a Handle to a file, set it as std_out, and avoid any additional overhead of dealing with providing that data to your process.

Since 0.1.4

Constructors

UseProvidedHandle 

Instances

Instances details
InputSource UseProvidedHandle # 
Instance details

Defined in Data.Streaming.Process

Methods

isStdStream :: (Maybe Handle -> IO UseProvidedHandle, Maybe StdStream) #

OutputSink UseProvidedHandle # 
Instance details

Defined in Data.Streaming.Process

Methods

osStdStream :: (Maybe Handle -> IO UseProvidedHandle, Maybe StdStream) #

Process handle

data StreamingProcessHandle #

Wraps up the standard ProcessHandle to avoid the waitForProcess deadlock. See the linked documentation from the module header for more information.

Since 0.1.4

waitForStreamingProcess :: MonadIO m => StreamingProcessHandle -> m ExitCode #

Blocking call to wait for a process to exit.

Since 0.1.4

waitForStreamingProcessSTM :: StreamingProcessHandle -> STM ExitCode #

STM version of waitForStreamingProcess.

Since 0.1.4

getStreamingProcessExitCode :: MonadIO m => StreamingProcessHandle -> m (Maybe ExitCode) #

Non-blocking call to check for a process exit code.

Since 0.1.4

getStreamingProcessExitCodeSTM :: StreamingProcessHandle -> STM (Maybe ExitCode) #

STM version of getStreamingProcessExitCode.

Since 0.1.4

streamingProcessHandleRaw :: StreamingProcessHandle -> ProcessHandle #

Get the raw ProcessHandle from a StreamingProcessHandle. Note that you should avoid using this to get the process exit code, and instead use the provided functions.

Since 0.1.4

streamingProcessHandleTMVar :: StreamingProcessHandle -> TMVar ExitCode #

Get the TMVar storing the process exit code. In general, one of the above functions should be used instead to avoid accidentally corrupting the variable's state..

Since 0.1.4

Type classes

class InputSource a #

Class for all things which can be used to provide standard input.

Since 0.1.4

Minimal complete definition

isStdStream

Instances

Instances details
InputSource Handle # 
Instance details

Defined in Data.Streaming.Process.Internal

Methods

isStdStream :: (Maybe Handle -> IO Handle, Maybe StdStream) #

InputSource ClosedStream # 
Instance details

Defined in Data.Streaming.Process

Methods

isStdStream :: (Maybe Handle -> IO ClosedStream, Maybe StdStream) #

InputSource Inherited # 
Instance details

Defined in Data.Streaming.Process

Methods

isStdStream :: (Maybe Handle -> IO Inherited, Maybe StdStream) #

InputSource UseProvidedHandle # 
Instance details

Defined in Data.Streaming.Process

Methods

isStdStream :: (Maybe Handle -> IO UseProvidedHandle, Maybe StdStream) #

class OutputSink a #

Class for all things which can be used to consume standard output or error.

Since 0.1.4

Minimal complete definition

osStdStream

Instances

Instances details
OutputSink Handle # 
Instance details

Defined in Data.Streaming.Process.Internal

Methods

osStdStream :: (Maybe Handle -> IO Handle, Maybe StdStream) #

OutputSink ClosedStream # 
Instance details

Defined in Data.Streaming.Process

Methods

osStdStream :: (Maybe Handle -> IO ClosedStream, Maybe StdStream) #

OutputSink Inherited # 
Instance details

Defined in Data.Streaming.Process

Methods

osStdStream :: (Maybe Handle -> IO Inherited, Maybe StdStream) #

OutputSink UseProvidedHandle # 
Instance details

Defined in Data.Streaming.Process

Methods

osStdStream :: (Maybe Handle -> IO UseProvidedHandle, Maybe StdStream) #

Checked processes

withCheckedProcess :: (InputSource stdin, OutputSink stderr, OutputSink stdout, MonadIO m) => CreateProcess -> (stdin -> stdout -> stderr -> m b) -> m b #

Run a process and supply its streams to the given callback function. After the callback completes, wait for the process to complete and check its exit code. If the exit code is not a success, throw a ProcessExitedUnsuccessfully.

NOTE: This function does not kill the child process or ensure resources are cleaned up in the event of an exception from the provided function. For that, please use withCheckedProcessCleanup from the conduit-extra package.

Since 0.1.7

data ProcessExitedUnsuccessfully #

Indicates that a process exited with an non-success exit code.

Since 0.1.7

Constructors

ProcessExitedUnsuccessfully CreateProcess ExitCode 

Instances

Instances details
Exception ProcessExitedUnsuccessfully # 
Instance details

Defined in Data.Streaming.Process

Show ProcessExitedUnsuccessfully # 
Instance details

Defined in Data.Streaming.Process

Reexport