org.codehaus.gpars

groovyx.gpars.dataflow
[Java] Class Dataflow

java.lang.Object
  groovyx.gpars.dataflow.Dataflow

@java.lang.SuppressWarnings*
public abstract class Dataflow

Contains factory methods to create dataflow actors and starting them.

Authors:
Vaclav Pech, Dierk Koenig Date: Jun 4, 2009


Field Summary
static PGroup DATA_FLOW_GROUP

static java.lang.ThreadLocal activeParallelGroup

 
Constructor Summary
Dataflow()

 
Method Summary
static Promise lazyTask(groovy.lang.Closure code)

Creates a new task assigned to a thread from the current parallel group.

static Promise lazyTask(java.util.concurrent.Callable callable)

Creates an operator using the default dataflow parallel group

static DataflowProcessor operator(java.util.Map channels, groovy.lang.Closure code)

Creates an operator using the current parallel group

static DataflowProcessor operator(java.util.List inputChannels, java.util.List outputChannels, groovy.lang.Closure code)

Creates an operator using the current parallel group

static DataflowProcessor operator(java.util.List inputChannels, java.util.List outputChannels, int maxForks, groovy.lang.Closure code)

Creates an operator using the current parallel group

static DataflowProcessor operator(DataflowReadChannel input, DataflowWriteChannel output, groovy.lang.Closure code)

Creates an operator using the current parallel group

static DataflowProcessor operator(DataflowReadChannel input, DataflowWriteChannel output, int maxForks, groovy.lang.Closure code)

Creates a selector using the default dataflow parallel group

static DataflowProcessor prioritySelector(java.util.Map channels, groovy.lang.Closure code)

Creates a prioritizing selector using the default dataflow parallel group Input with lower position index have higher priority.

static DataflowProcessor prioritySelector(java.util.List inputChannels, java.util.List outputChannels, groovy.lang.Closure code)

Creates a prioritizing selector using the default dataflow parallel group.

static DataflowProcessor prioritySelector(java.util.Map channels)

Creates a prioritizing selector using the default dataflow parallel group.

static DataflowProcessor prioritySelector(java.util.List inputChannels, java.util.List outputChannels)

Creates a splitter copying its single input channel into all of its output channels.

static PGroup retrieveCurrentDFPGroup()

static Select select(SelectableChannel... channels)

Creates a select using the default dataflow parallel group.

static Select select(java.util.List channels)

Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.

static DataflowProcessor selector(java.util.Map channels, groovy.lang.Closure code)

Creates a selector using the default dataflow parallel group

static DataflowProcessor selector(java.util.List inputChannels, java.util.List outputChannels, groovy.lang.Closure code)

Creates a selector using the default dataflow parallel group.

static DataflowProcessor selector(java.util.Map channels)

static DataflowProcessor selector(java.util.List inputChannels, java.util.List outputChannels)

Creates a prioritizing selector using the default dataflow parallel group Input with lower position index have higher priority.

static DataflowProcessor splitter(DataflowReadChannel inputChannel, java.util.List outputChannels)

Creates a splitter copying its single input channel into all of its output channels.

static DataflowProcessor splitter(DataflowReadChannel inputChannel, java.util.List outputChannels, int maxForks)

Creates a select using the default dataflow parallel group.

static Promise task(groovy.lang.Closure code)

Creates a new task assigned to a thread from the current parallel group.

static Promise task(java.util.concurrent.Callable callable)

Creates a new task assigned to a thread from the current parallel group.

static Promise task(java.lang.Runnable runnable)

Creates a new task assigned to a thread from the default dataflow parallel group.

static java.lang.Object usingGroup(PGroup group, groovy.lang.Closure code)

static Promise whenAllBound(java.util.List promises, groovy.lang.Closure code)

Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.

static Promise whenAllBound(Promise promise1, groovy.lang.Closure code)

Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.

static Promise whenAllBound(Promise promise1, Promise promise2, groovy.lang.Closure code)

Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.

static Promise whenAllBound(Promise promise1, Promise promise2, Promise promise3, groovy.lang.Closure code)

Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.

static Promise whenAllBound(Promise promise1, Promise promise2, Promise promise3, Promise promise4, groovy.lang.Closure code)

Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.

static Promise whenAllBound(java.util.List promises, groovy.lang.Closure code, groovy.lang.Closure errorHandler)

Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.

static Promise whenAllBound(Promise promise1, groovy.lang.Closure code, groovy.lang.Closure errorHandler)

Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.

static Promise whenAllBound(Promise promise1, Promise promise2, groovy.lang.Closure code, groovy.lang.Closure errorHandler)

Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.

static Promise whenAllBound(Promise promise1, Promise promise2, Promise promise3, groovy.lang.Closure code, groovy.lang.Closure errorHandler)

static Promise whenAllBound(Promise promise1, Promise promise2, Promise promise3, Promise promise4, groovy.lang.Closure code, groovy.lang.Closure errorHandler)

 
Methods inherited from class java.lang.Object
java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()
 

Field Detail

DATA_FLOW_GROUP

public static final PGroup DATA_FLOW_GROUP


activeParallelGroup

public static final java.lang.ThreadLocal activeParallelGroup


 
Constructor Detail

Dataflow

Dataflow()


 
Method Detail

lazyTask

public static Promise lazyTask(groovy.lang.Closure code)
Creates a new task assigned to a thread from the current parallel group. The task is lazy, since it only gets executed if the returned Promise instance is read or a then-callback is registered on it. Tasks are a lightweight version of dataflow operators, which do not define their communication channels explicitly, but can only exchange data using explicit DataflowVariables and Streams. Registers itself with Dataflow for nested 'whenBound' handlers to use the same group.
Parameters:
callable - The task body to run
Returns:
A LazyDataflowVariable, which gets assigned the value returned from the supplied code


lazyTask

public static Promise lazyTask(java.util.concurrent.Callable callable)
Creates an operator using the default dataflow parallel group
Parameters:
channels - A map specifying "inputs" and "outputs" - dataflow channels (instances of the DataflowQueue or DataflowVariable classes) to use for inputs and outputs
code - The operator's body to run each time all inputs have a value to read
Returns:
A new active operator instance


operator

public static DataflowProcessor operator(java.util.Map channels, @groovy.lang.DelegatesTo groovy.lang.Closure code)
Creates an operator using the current parallel group
Parameters:
inputChannels - dataflow channels to use for input
outputChannels - dataflow channels to use for output
code - The operator's body to run each time all inputs have a value to read
Returns:
A new active operator instance


operator

public static DataflowProcessor operator(java.util.List inputChannels, java.util.List outputChannels, @groovy.lang.DelegatesTo groovy.lang.Closure code)
Creates an operator using the current parallel group
Parameters:
inputChannels - dataflow channels to use for input
outputChannels - dataflow channels to use for output
maxForks - Number of parallel threads running operator's body, defaults to 1
code - The operator's body to run each time all inputs have a value to read
Returns:
A new active operator instance


operator

public static DataflowProcessor operator(java.util.List inputChannels, java.util.List outputChannels, int maxForks, @groovy.lang.DelegatesTo groovy.lang.Closure code)
Creates an operator using the current parallel group
Parameters:
input - a dataflow channel to use for input
output - a dataflow channel to use for output
code - The operator's body to run each time all inputs have a value to read
Returns:
A new active operator instance


operator

public static DataflowProcessor operator(DataflowReadChannel input, DataflowWriteChannel output, @groovy.lang.DelegatesTo groovy.lang.Closure code)
Creates an operator using the current parallel group
Parameters:
input - a dataflow channel to use for input
output - a dataflow channel to use for output
maxForks - Number of parallel threads running operator's body, defaults to 1
code - The operator's body to run each time all inputs have a value to read
Returns:
A new active operator instance


operator

public static DataflowProcessor operator(DataflowReadChannel input, DataflowWriteChannel output, int maxForks, @groovy.lang.DelegatesTo groovy.lang.Closure code)
Creates a selector using the default dataflow parallel group
Parameters:
channels - A map specifying "inputs" and "outputs" - dataflow channels (instances of the DataflowQueue or DataflowVariable classes) to use for inputs and outputs
code - The selector's body to run each time a value is available in any of the inputs channels
Returns:
A new active selector instance


prioritySelector

public static DataflowProcessor prioritySelector(java.util.Map channels, @groovy.lang.DelegatesTo groovy.lang.Closure code)
Creates a prioritizing selector using the default dataflow parallel group Input with lower position index have higher priority.
Parameters:
inputChannels - dataflow channels to use for input
outputChannels - dataflow channels to use for output
code - The selector's body to run each time a value is available in any of the inputs channels
Returns:
A new active selector instance


prioritySelector

public static DataflowProcessor prioritySelector(java.util.List inputChannels, java.util.List outputChannels, @groovy.lang.DelegatesTo groovy.lang.Closure code)
Creates a prioritizing selector using the default dataflow parallel group. Since no body is provided, the selector will simply copy the incoming values to all output channels. Input with lower position index have higher priority.
Parameters:
channels - A map specifying "inputs" and "outputs" - dataflow channels (instances of the DataflowQueue or DataflowVariable classes) to use for inputs and outputs
Returns:
A new active selector instance


prioritySelector

public static DataflowProcessor prioritySelector(java.util.Map channels)
Creates a prioritizing selector using the default dataflow parallel group. Since no body is provided, the selector will simply copy the incoming values to all output channels. Input with lower position index have higher priority.
Parameters:
inputChannels - dataflow channels to use for input
outputChannels - dataflow channels to use for output
Returns:
A new active selector instance


prioritySelector

public static DataflowProcessor prioritySelector(java.util.List inputChannels, java.util.List outputChannels)
Creates a splitter copying its single input channel into all of its output channels. The created splitter will be part of the default parallel group Input with lower position index have higher priority.
Parameters:
inputChannel - The channel to read values from
outputChannels - A list of channels to output to
Returns:
A new active splitter instance


retrieveCurrentDFPGroup

public static PGroup retrieveCurrentDFPGroup()


select

public static Select select(SelectableChannel... channels)
Creates a select using the default dataflow parallel group. The returns Select instance will allow the user to obtain values from the supplied dataflow variables or streams as they become available.
Parameters:
channels - Dataflow variables or streams to wait for values on
Returns:
A new select instance


select

public static Select select(java.util.List channels)
Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.
Parameters:
promises - The promises to wait for
code - A closure to execute with concrete values for each of the supplied promises
- The type of the final result
Returns:
A promise for the final result


selector

public static DataflowProcessor selector(java.util.Map channels, @groovy.lang.DelegatesTo groovy.lang.Closure code)
Creates a selector using the default dataflow parallel group
Parameters:
inputChannels - dataflow channels to use for input
outputChannels - dataflow channels to use for output
code - The selector's body to run each time a value is available in any of the inputs channels
Returns:
A new active selector instance


selector

public static DataflowProcessor selector(java.util.List inputChannels, java.util.List outputChannels, @groovy.lang.DelegatesToe selector will simply copy the incom groovy.lang.Closure code)
Creates a selector using the default dataflow parallel group. Since no body is provided, the selector will simply copy the incoming values to all output channels.
Parameters:
channels - A map specifying "inputs" and "outputs" - dataflow channels (instances of the DataflowQueue or DataflowVariable classes) to use for inputs and outputs
Returns:
A new active selector instance


selector

public static DataflowProcessor selector(java.util.Map channels)


selector

public static DataflowProcessor selector(java.util.List inputChannels, java.util.List outputChannels)
Creates a prioritizing selector using the default dataflow parallel group Input with lower position index have higher priority.
Parameters:
channels - A map specifying "inputs" and "outputs" - dataflow channels (instances of the DataflowQueue or DataflowVariable classes) to use for inputs and outputs
code - The selector's body to run each time a value is available in any of the inputs channels
Returns:
A new active selector instance


splitter

public static DataflowProcessor splitter(DataflowReadChannel inputChannel, java.util.List outputChannels)
Creates a splitter copying its single input channel into all of its output channels. The created splitter will be part of this parallel group Input with lower position index have higher priority.
Parameters:
inputChannel - The channel to read values from
outputChannels - A list of channels to output to
maxForks - Number of threads running the splitter's body, defaults to 1
Returns:
A new active splitter instance


splitter

public static DataflowProcessor splitter(DataflowReadChannel inputChannel, java.util.List outputChannels, int maxForks)
Creates a select using the default dataflow parallel group. The returns Select instance will allow the user to obtain values from the supplied dataflow variables or streams as they become available.
Parameters:
channels - Dataflow variables or streams to wait for values on
Returns:
A new select instance


task

public static Promise task(groovy.lang.Closure code)
Creates a new task assigned to a thread from the current parallel group. Tasks are a lightweight version of dataflow operators, which do not define their communication channels explicitly, but can only exchange data using explicit DataflowVariables and Streams. Registers itself with Dataflow for nested 'whenBound' handlers to use the same group.
Parameters:
callable - The task body to run
Returns:
A DataflowVariable, which gets assigned the value returned from the supplied code


task

public static Promise task(java.util.concurrent.Callable callable)
Creates a new task assigned to a thread from the current parallel group. Tasks are a lightweight version of dataflow operators, which do not define their communication channels explicitly, but can only exchange data using explicit DataflowVariables and Streams. Registers itself with Dataflow for nested 'whenBound' handlers to use the same group.
Parameters:
runnable - The task body to run
Returns:
A DataflowVariable, which gets bound to null once the supplied code finishes


task

public static Promise task(java.lang.Runnable runnable)
Creates a new task assigned to a thread from the default dataflow parallel group. The task is lazy, since it only gets executed if the returned Promise instance is read or a then-callback is registered on it. Tasks are a lightweight version of dataflow operators, which do not define their communication channels explicitly, but can only exchange data using explicit DataflowVariables and Streams.
Parameters:
code - The task body to run
Returns:
A LazyDataflowVariable, which gets assigned the value returned from the supplied code


usingGroup

public static java.lang.Object usingGroup(PGroup group, groovy.lang.Closure code)


whenAllBound

public static Promise whenAllBound(java.util.List promises, groovy.lang.Closure code)
Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.
Parameters:
promise1 - The promises to wait for
code - A closure to execute with concrete values for each of the supplied promises
- The type of the final result
Returns:
A promise for the final result


whenAllBound

public static Promise whenAllBound(Promise promise1, groovy.lang.Closure code)
Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.
Parameters:
promise1 - The promises to wait for
promise2 - The promises to wait for
code - A closure to execute with concrete values for each of the supplied promises
- The type of the final result
Returns:
A promise for the final result


whenAllBound

public static Promise whenAllBound(Promise promise1, Promise promise2, groovy.lang.Closure code)
Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.
Parameters:
promise1 - The promises to wait for
promise2 - The promises to wait for
promise3 - The promises to wait for
code - A closure to execute with concrete values for each of the supplied promises
- The type of the final result
Returns:
A promise for the final result


whenAllBound

public static Promise whenAllBound(Promise promise1, Promise promise2, Promise promise3, groovy.lang.Closure code)
Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.
Parameters:
promise1 - The promises to wait for
promise2 - The promises to wait for
promise3 - The promises to wait for
promise4 - The promises to wait for
code - A closure to execute with concrete values for each of the supplied promises
- The type of the final result
Returns:
A promise for the final result


whenAllBound

public static Promise whenAllBound(Promise promise1, Promise promise2, Promise promise3, Promise promise4, groovy.lang.Closure code)
Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.
Parameters:
promises - The promises to wait for
code - A closure to execute with concrete values for each of the supplied promises
errorHandler - A closure handling an exception (an instance of Throwable), if it gets bound
- The type of the final result
Returns:
A promise for the final result


whenAllBound

public static Promise whenAllBound(java.util.List promises, groovy.lang.Closure code, groovy.lang.Closure errorHandler)
Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.
Parameters:
promise1 - The promises to wait for
code - A closure to execute with concrete values for each of the supplied promises
errorHandler - A closure handling an exception (an instance of Throwable), if it gets bound
- The type of the final result
Returns:
A promise for the final result


whenAllBound

public static Promise whenAllBound(Promise promise1, groovy.lang.Closure code, groovy.lang.Closure errorHandler)
Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.
Parameters:
promise1 - The promises to wait for
promise2 - The promises to wait for
code - A closure to execute with concrete values for each of the supplied promises
errorHandler - A closure handling an exception (an instance of Throwable), if it gets bound
- The type of the final result
Returns:
A promise for the final result


whenAllBound

public static Promise whenAllBound(Promise promise1, Promise promise2, groovy.lang.Closure code, groovy.lang.Closure errorHandler)
Without blocking the thread waits for all the promises to get bound and then passes them to the supplied closure.
Parameters:
promise1 - The promises to wait for
promise2 - The promises to wait for
promise3 - The promises to wait for
code - A closure to execute with concrete values for each of the supplied promises
errorHandler - A closure handling an exception (an instance of Throwable), if it gets bound
- The type of the final result
Returns:
A promise for the final result


whenAllBound

public static Promise whenAllBound(Promise promise1, Promise promise2, Promise promise3, groovy.lang.Closure code, groovy.lang.Closure errorHandler)


whenAllBound

public static Promise whenAllBound(Promise promise1, Promise promise2, Promise promise3, Promise promise4, groovy.lang.Closure code, groovy.lang.Closure errorHandler)


 

Copyright © 2008–2013 Václav Pech. All Rights Reserved.