org.codehaus.gpars

groovyx.gpars.dataflow.stream
[Java] Class StreamCore

java.lang.Object
  groovyx.gpars.dataflow.stream.StreamCore
All Implemented Interfaces:
FList

public abstract class StreamCore

Represents a common base for publish-subscribe deterministic channels.

Parameters:
- Type for values to pass through the channels
Authors:
Johannes Link, Vaclav Pech


Field Summary
protected DataflowVariable first

protected java.util.concurrent.atomic.AtomicReference rest

protected java.util.Collection wheneverBoundListeners

A collection of listeners who need to be informed each time the stream is bound to a value

 
Constructor Summary
protected StreamCore(DataflowVariable first)

Creates an empty stream

protected StreamCore(DataflowVariable first, groovy.lang.Closure toBeApplied)

Creates a stream while applying the supplied initialization closure to it

protected StreamCore(DataflowVariable first, java.util.Collection wheneverBoundListeners, java.util.Collection updateListeners)

 
Method Summary
void addUpdateListener(DataflowChannelListener updateListener)

private void addUpdateListeners(java.util.Collection updateListeners)

java.lang.String appendingString()

StreamCore apply(groovy.lang.Closure closure)

Calls the supplied closure with the stream as a parameter

private void bind(java.lang.Object value)

protected StreamCore createNewStream()

A factory method to create new instances of the correct class when needed

void decrementParties()

Decreases the number of parties required to perform the data exchange

static java.lang.Object eos()

boolean equals(java.lang.Object obj)

private static java.lang.Object eval(java.lang.Object valueOrDataflowVariable)

FList filter(groovy.lang.Closure filterClosure)

Builds a filtered stream using the supplied filter closure

private void filter(StreamCore rest, groovy.lang.Closure filterClosure, StreamCore result)

StreamCore generate(java.lang.Object seed, groovy.lang.Closure generator, groovy.lang.Closure condition)

Populates the stream with generated values

private void generateNext(java.lang.Object value, StreamCore stream, groovy.lang.Closure generator, groovy.lang.Closure condition)

java.lang.Object getFirst()

Retrieved the first element in the stream, blocking until a value is available

DataflowVariable getFirstDFV()

FList getRest()

Retrieves a DataflowStream representing the rest of this Stream after removing the first element

int hashCode()

private DataflowExpression hookWheneverBoundListeners(DataflowExpression expr)

Hooks the registered when bound handlers to the supplied dataflow expression

void incrementParties()

Increases the number of parties required to perform the data exchange

boolean isEmpty()

Indicates, whether the first element in the stream is an eos

java.util.Iterator iterator()

Builds an iterator to iterate over the stream

StreamCore leftShift(DataflowReadChannel ref)

Adds a dataflow variable value to the stream, once the value is available

StreamCore leftShift(java.lang.Object value)

Adds a value to the stream

FList map(groovy.lang.Closure mapClosure)

Builds a modified stream using the supplied map closure

private void map(FList rest, groovy.lang.Closure mapClosure, StreamCore result)

java.lang.Object reduce(groovy.lang.Closure reduceClosure)

Reduces all elements in the stream using the supplied closure

java.lang.Object reduce(java.lang.Object seed, groovy.lang.Closure reduceClosure)

Reduces all elements in the stream using the supplied closure

private java.lang.Object reduce(java.lang.Object current, FList rest, groovy.lang.Closure reduceClosure)

void wheneverBound(groovy.lang.Closure closure)

void wheneverBound(MessageStream stream)

 
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

first

protected final DataflowVariable first


rest

protected final java.util.concurrent.atomic.AtomicReference rest


wheneverBoundListeners

protected final java.util.Collection wheneverBoundListeners
A collection of listeners who need to be informed each time the stream is bound to a value


 
Constructor Detail

StreamCore

protected StreamCore(DataflowVariable first)
Creates an empty stream
Parameters:
first - The variable to store as the head of the stream


StreamCore

protected StreamCore(DataflowVariable first, groovy.lang.Closure toBeApplied)
Creates a stream while applying the supplied initialization closure to it
Parameters:
first - The variable to store as the head of the stream
toBeApplied - The closure to use for initialization


StreamCore

@SuppressWarnings({"AssignmentToCollectionOrArrayFieldFromParameter"})
protected StreamCore(DataflowVariable first, java.util.Collection wheneverBoundListeners, java.util.Collection updateListeners)


 
Method Detail

addUpdateListener

final void addUpdateListener(DataflowChannelListener updateListener)


addUpdateListeners

private void addUpdateListeners(java.util.Collection updateListeners)


appendingString

@Override
public java.lang.String appendingString()


apply

public final StreamCore apply(groovy.lang.Closure closure)
Calls the supplied closure with the stream as a parameter
Parameters:
closure - The closure to call
Returns:
This instance of DataflowStream


bind

private void bind(java.lang.Object value)


createNewStream

protected StreamCore createNewStream()
A factory method to create new instances of the correct class when needed
Returns:
An instance of the appropriate sub-class


decrementParties

public void decrementParties()
Decreases the number of parties required to perform the data exchange


eos

public static java.lang.Object eos()


equals

@Override
public boolean equals(java.lang.Object obj)


eval

private static java.lang.Object eval(java.lang.Object valueOrDataflowVariable)


filter

@Override
public final FList filter(groovy.lang.Closure filterClosure)
Builds a filtered stream using the supplied filter closure
Parameters:
filterClosure - The closure to decide on inclusion of elements
Returns:
The first item of the filtered stream


filter

private void filter(StreamCore rest, groovy.lang.Closure filterClosure, StreamCore result)


generate

public final StreamCore generate(java.lang.Object seed, groovy.lang.Closure generator, groovy.lang.Closure condition)
Populates the stream with generated values
Parameters:
seed - The initial element to evaluate and add as the first value of the stream
generator - A closure generating stream elements from the previous values
condition - A closure indicating whether the generation should continue based on the last generated value
Returns:
This stream


generateNext

private void generateNext(java.lang.Object value, StreamCore stream, groovy.lang.Closure generator, groovy.lang.Closure condition)


getFirst

@Override
public final java.lang.Object getFirst()
Retrieved the first element in the stream, blocking until a value is available
Returns:
The first item in the stream


getFirstDFV

final DataflowVariable getFirstDFV()


getRest

@Override
public FList getRest()
Retrieves a DataflowStream representing the rest of this Stream after removing the first element
Returns:
The remaining stream elements


hashCode

@Override
public int hashCode()


hookWheneverBoundListeners

private DataflowExpression hookWheneverBoundListeners(DataflowExpression expr)
Hooks the registered when bound handlers to the supplied dataflow expression
Parameters:
expr - The expression to hook all the when bound listeners to
Returns:
The supplied expression handler to allow method chaining


incrementParties

public void incrementParties()
Increases the number of parties required to perform the data exchange


isEmpty

@Override
public final boolean isEmpty()
Indicates, whether the first element in the stream is an eos


iterator

@Override
public final java.util.Iterator iterator()
Builds an iterator to iterate over the stream
Returns:
A new FListIterator instance


leftShift

public final StreamCore leftShift(DataflowReadChannel ref)
Adds a dataflow variable value to the stream, once the value is available
Parameters:
ref - The DataflowVariable to check for value
Returns:
The rest of the stream


leftShift

public final StreamCore leftShift(java.lang.Object value)
Adds a value to the stream
Parameters:
value - The value to add
Returns:
The rest of the stream


map

@Override
public final FList map(groovy.lang.Closure mapClosure)
Builds a modified stream using the supplied map closure
Parameters:
mapClosure - The closure to transform elements
Returns:
The first item of the transformed stream


map

private void map(FList rest, groovy.lang.Closure mapClosure, StreamCore result)


reduce

@Override
public final java.lang.Object reduce(groovy.lang.Closure reduceClosure)
Reduces all elements in the stream using the supplied closure
Parameters:
reduceClosure - The closure to reduce elements of the stream gradually into an accumulator. The accumulator is seeded with the first stream element.
Returns:
The result of reduction of the whole stream


reduce

@Override
public final java.lang.Object reduce(java.lang.Object seed, groovy.lang.Closure reduceClosure)
Reduces all elements in the stream using the supplied closure
Parameters:
reduceClosure - The closure to reduce elements of the stream gradually into an accumulator.
seed - The value to initialize the accumulator with.
Returns:
The result of reduction of the whole stream


reduce

private java.lang.Object reduce(java.lang.Object current, FList rest, groovy.lang.Closure reduceClosure)


wheneverBound

public final void wheneverBound(groovy.lang.Closure closure)


wheneverBound

public final void wheneverBound(MessageStream stream)


 

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