Safe Haskell | None |
---|---|
Language | GHC2021 |
Multitasking.Workers
Contents
Synopsis
- data SinkTask a
- startSink :: MonadIO m => Coordinator -> (a -> IO ()) -> m (SinkTask a)
- putSinkTask :: MonadSTM m => SinkTask a -> a -> m ()
- data SourceTask a
- startSource :: MonadIO m => Coordinator -> IO a -> m (SourceTask a)
- takeSourceTask :: MonadSTM m => SourceTask a -> m a
- drainSourceTask :: MonadSTM m => SourceTask a -> m (Maybe a)
- data PipeTask a b
- startPipe :: MonadIO m => Coordinator -> (a -> IO b) -> m (PipeTask a b)
- putPipeTask :: MonadSTM m => PipeTask a b -> a -> m ()
- takePipeTask :: MonadSTM m => PipeTask a b -> m b
- drainPipeTask :: MonadSTM m => PipeTask a b -> m (Maybe b)
Sink Task
A SinkTask
continously consumes values of type a
.
Multiples values can queue up if writeSinkTask
is too fast.
startSink :: MonadIO m => Coordinator -> (a -> IO ()) -> m (SinkTask a) Source #
start a SinkTask
. It will execute the given function until it is canceled.
putSinkTask :: MonadSTM m => SinkTask a -> a -> m () Source #
Feeds a new value to the sink task
Source Task
data SourceTask a Source #
A SourceTask
is a task which continously produces values of type a
.
Multiples values can queue up to be consumed with readSourceTask
.
Instances
Await (SourceTask a) Source # | |||||
Defined in Multitasking.Workers Associated Types
Methods await :: MonadSTM m => SourceTask a -> m (Payload (SourceTask a)) Source # probe :: MonadSTM m => SourceTask a -> m (Maybe (Payload (SourceTask a))) Source # | |||||
type Payload (SourceTask a) Source # | |||||
Defined in Multitasking.Workers |
startSource :: MonadIO m => Coordinator -> IO a -> m (SourceTask a) Source #
start a SourceTask
with the given action. It will be executed forever to produce new values.
takeSourceTask :: MonadSTM m => SourceTask a -> m a Source #
Take a value from the SourceTask
, waiting if there is no output.
drainSourceTask :: MonadSTM m => SourceTask a -> m (Maybe a) Source #
Get a value from the SourceTask
. Returns immediately with Nothing
if there is no output.
Pipe Task
A pipe task transforms values of type a
to values of type b
.
Both ends can queue up.
Instances
Await (PipeTask a b) Source # | |||||
Defined in Multitasking.Workers Associated Types
| |||||
type Payload (PipeTask a b) Source # | |||||
Defined in Multitasking.Workers |
startPipe :: MonadIO m => Coordinator -> (a -> IO b) -> m (PipeTask a b) Source #
start a PipeTask
with the given function. It will be executed continously.
putPipeTask :: MonadSTM m => PipeTask a b -> a -> m () Source #
Feeds new values to the pipe task
takePipeTask :: MonadSTM m => PipeTask a b -> m b Source #
Gets the output from the pipe task. Waits if there is output available yet.