org.codehaus.gpars

groovyx.gpars.dataflow
[Java] Class Dataflow

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

@SuppressWarnings({"rawtypes", "RawUseOfParameterizedType", "AbstractClassWithoutAbstractMethods", "AbstractClassNeverImplemented", "ConstantDeclaredInAbstractClass", "UtilityClass", "unchecked"})
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

The parallel group used by all Dataflow Concurrency actors by default.

static java.lang.ThreadLocal activeParallelGroup

Maps threads/tasks to parallel groups they belong to

 
Constructor Summary
Dataflow()

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

Creates an operator using the default dataflow 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 an operator using the current 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 Input with lower position index have higher priority.

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 prioritizing selector using the default dataflow parallel group.

static PGroup retrieveCurrentDFPGroup()

Retrieves the thread-local value of the active PGroup or the default DataflowGroup

static Select select(DataflowReadChannel... channels)

Creates a select using the default dataflow parallel group.

static Select select(java.util.List channels)

Creates a select using the default dataflow parallel group.

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)

Creates a selector using the default dataflow parallel group.

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

Creates a selector using the default dataflow parallel group.

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 splitter copying its single input channel into all of its output channels.

static Promise task(groovy.lang.Closure code)

Creates a new task assigned to a thread from the default dataflow 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 current parallel group.

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

Sets the supplied PGroup as the default for the given block of 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)

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, groovy.lang.Closure errorHandler)

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

 
Methods inherited from class java.lang.Object
java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#wait(long, int), 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
The parallel group used by all Dataflow Concurrency actors by default.


activeParallelGroup

public static final java.lang.ThreadLocal activeParallelGroup
Maps threads/tasks to parallel groups they belong to


 
Constructor Detail

Dataflow

Dataflow()


 
Method Detail

operator

public static DataflowProcessor operator(java.util.Map channels, groovy.lang.Closure code)
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.List inputChannels, java.util.List outputChannels, 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, int maxForks, 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(DataflowReadChannel input, DataflowWriteChannel output, 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, int maxForks, 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


prioritySelector

public 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.
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.List inputChannels, java.util.List outputChannels, 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.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:
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.List inputChannels, java.util.List outputChannels)
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


retrieveCurrentDFPGroup

public static PGroup retrieveCurrentDFPGroup()
Retrieves the thread-local value of the active PGroup or the default DataflowGroup
Returns:
The PGroup to use for DF within the current thread


select

public static Select select(DataflowReadChannel... 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)
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


selector

public static DataflowProcessor selector(java.util.Map channels, 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


selector

public static DataflowProcessor selector(java.util.List inputChannels, java.util.List outputChannels, 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.Map channels)
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.List inputChannels, java.util.List outputChannels)
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:
inputChannels - dataflow channels to use for input
outputChannels - dataflow channels to use for output
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 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


splitter

public static DataflowProcessor splitter(DataflowReadChannel inputChannel, java.util.List outputChannels, int maxForks)
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


task

public static Promise task(groovy.lang.Closure code)
Creates a new task assigned to a thread from the default dataflow 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.
Parameters:
code - 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:
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.lang.Runnable runnable)
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


usingGroup

public static java.lang.Object usingGroup(PGroup group, groovy.lang.Closure code)
Sets the supplied PGroup as the default for the given block of code. All dataflow functions, such as task or operator and callback handlers, will use the PGroup and its thread pool for their scheduling.
Parameters:
group - The group to make the default inside the block
code - The code to run with overriden default
Returns:
The value returned from the supplied code block


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:
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


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
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
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
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:
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(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:
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 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
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 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
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 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)
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 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, Promise promise4, 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
promise4 - 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 if it gets bound
- The type of the final result
Returns:
A promise for the final result


 

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