org.codehaus.gpars

groovyx.gpars.dataflow.operator
[Java] Class DataflowProcessor

java.lang.Object
  groovyx.gpars.dataflow.operator.DataflowProcessor

@java.lang.SuppressWarnings* May hold custom state provided at construction time and read within the body
public abstract class DataflowProcessor

Dataflow selectors and operators (processors) form the basic units in dataflow networks. They are typically combined into oriented graphs that transform data. They accept a set of input and output dataflow channels and following specific strategies they transform input values from the input channels into new values written to the output channels. The output channels at the same time are suitable to be used as input channels by some other dataflow processors. The channels allow processors to communicate.

Dataflow selectors and operators enable creation of highly concurrent applications yet the abstraction hides the low-level concurrency primitives and exposes much friendlier API. Since selectors and operators internally leverage the actor implementation, they reuse a pool of threads and so the actual number of threads used by the calculation can be kept much lower than the actual number of processors used in the network.

Authors:
Vaclav Pech Date: Sep 9, 2009


Field Summary
static java.lang.String INPUTS

private static java.lang.String LISTENERS

static java.lang.String MAX_FORKS

static java.lang.String OUTPUTS

static java.lang.String STATE_OBJECT

protected DataflowProcessorActor actor

protected java.util.Collection listeners

protected java.lang.Object stateObject

 
Constructor Summary
protected DataflowProcessor(java.util.Map channels, groovy.lang.Closure code)

 
Method Summary
void addDataflowEventListener(DataflowEventListener listener)

Registers the provided handler to all input channels

void bindAllOutputValues(java.lang.Object... values)

Used by the processor's body to send a value to all output channels, while guaranteeing atomicity of the operation and preventing other calls to bindAllOutputsAtomically() from interfering with one another.

void bindAllOutputValuesAtomically(java.lang.Object... values)

void bindAllOutputs(java.lang.Object value)

void bindAllOutputsAtomically(java.lang.Object value)

Used by the processor's body to send a value to all output channels, while guaranteeing atomicity of the operation and preventing other calls to bindAllOutputsAtomically() from interfering with one another.

void bindOutput(int idx, java.lang.Object value)

void bindOutput(java.lang.Object value)

protected static void checkMaxForks(java.util.Map channels)

static java.util.List extractInputs(java.util.Map channels)

private static java.util.Collection extractListeners(java.util.Map channels)

static java.util.List extractOutputs(java.util.Map channels)

private static java.lang.Object extractState(java.util.Map channels)

protected void fireAfterRun(java.util.List messages)

protected void fireAfterStart()

protected void fireAfterStop()

protected java.util.List fireBeforeRun(java.util.List messages)

protected java.lang.Object fireControlMessageArrived(DataflowReadChannel channel, int index, java.lang.Object message)

java.lang.Object fireCustomEvent(java.lang.Object data)

protected java.lang.Object fireMessageArrived(DataflowReadChannel channel, int index, java.lang.Object message)

protected java.lang.Object fireMessageSentOut(DataflowWriteChannel channel, int index, java.lang.Object message)

protected boolean fireOnException(java.lang.Throwable e)

DataflowWriteChannel getOutput()

DataflowWriteChannel getOutputs(int idx)

java.util.List getOutputs()

java.lang.Object getStateObject()

void join()

void registerChannelListenersToAllInputs(DataflowChannelListener handler)

void removeDataflowEventListener(DataflowEventListener listener)

void reportError(java.lang.Throwable e)

static boolean shouldBeMultiThreaded(java.util.Map channels)

DataflowProcessor start(PGroup group)

Starts a processor using the specified parallel group

DataflowProcessor start()

Stops the processor immediately, potentially loosing unhandled messages

void terminate()

void terminateAfterNextRun()

 
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

INPUTS

public static final java.lang.String INPUTS


LISTENERS

private static final java.lang.String LISTENERS


MAX_FORKS

public static final java.lang.String MAX_FORKS


OUTPUTS

public static final java.lang.String OUTPUTS


STATE_OBJECT

public static final java.lang.String STATE_OBJECT


actor

protected DataflowProcessorActor actor


listeners

protected final java.util.Collection listeners


stateObject

protected final java.lang.Object stateObject


 
Constructor Detail

DataflowProcessor

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


 
Method Detail

addDataflowEventListener

public final void addDataflowEventListener(DataflowEventListener listener)
Registers the provided handler to all input channels
Parameters:
handler - The closure to invoke whenever a value gets bound to any of the input channels


bindAllOutputValues

public final void bindAllOutputValues(java.lang.Object... values)
Used by the processor's body to send a value to all output channels, while guaranteeing atomicity of the operation and preventing other calls to bindAllOutputsAtomically() from interfering with one another.
Parameters:
value - The value to bind


bindAllOutputValuesAtomically

public final void bindAllOutputValuesAtomically(java.lang.Object... values)


bindAllOutputs

public final void bindAllOutputs(java.lang.Object value)


bindAllOutputsAtomically

public final void bindAllOutputsAtomically(java.lang.Object value)
Used by the processor's body to send a value to all output channels, while guaranteeing atomicity of the operation and preventing other calls to bindAllOutputsAtomically() from interfering with one another. The values passed as arguments will each be sent to an output channel with identical position index.
Parameters:
values - Values to send to output channels of the same position index


bindOutput

public final void bindOutput(int idx, java.lang.Object value)


bindOutput

public final void bindOutput(java.lang.Object value)


checkMaxForks

protected static void checkMaxForks(java.util.Map channels)


extractInputs

static java.util.List extractInputs(java.util.Map channels)


extractListeners

private static java.util.Collection extractListeners(java.util.Map channels)


extractOutputs

static java.util.List extractOutputs(java.util.Map channels)


extractState

private static java.lang.Object extractState(java.util.Map channels)


fireAfterRun

protected final void fireAfterRun(java.util.List messages)


fireAfterStart

protected final void fireAfterStart()


fireAfterStop

protected final void fireAfterStop()


fireBeforeRun

protected final java.util.List fireBeforeRun(java.util.List messages)


fireControlMessageArrived

protected final java.lang.Object fireControlMessageArrived(DataflowReadChannel channel, int index, java.lang.Object message)


fireCustomEvent

public final java.lang.Object fireCustomEvent(java.lang.Object data)


fireMessageArrived

protected final java.lang.Object fireMessageArrived(DataflowReadChannel channel, int index, java.lang.Object message)


fireMessageSentOut

protected final java.lang.Object fireMessageSentOut(DataflowWriteChannel channel, int index, java.lang.Object message)


fireOnException

protected final boolean fireOnException(java.lang.Throwable e)


getOutput

public final DataflowWriteChannel getOutput()


getOutputs

public final DataflowWriteChannel getOutputs(int idx)


getOutputs

public final java.util.List getOutputs()


getStateObject

public final java.lang.Object getStateObject()


join

public final void join()


registerChannelListenersToAllInputs

public final void registerChannelListenersToAllInputs(DataflowChannelListener handler)


removeDataflowEventListener

public final void removeDataflowEventListener(DataflowEventListener listener)


reportError

@java.lang.SuppressWarningspublic final void removeDataflowEventListener(final DataflowEventListener listener) {
final void reportError(java.lang.Throwable e)


shouldBeMultiThreaded

static boolean shouldBeMultiThreaded(java.util.Map channels)


start

public final DataflowProcessor start(PGroup group)
Starts a processor using the specified parallel group
Returns:
This operator instance


start

public final DataflowProcessor start()
Stops the processor immediately, potentially loosing unhandled messages


terminate

public final void terminate()


terminateAfterNextRun

public final void terminateAfterNextRun()


 

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