groovyx.gpars.dataflow
Class DataflowBroadcast<T>

java.lang.Object
  extended by groovyx.gpars.dataflow.stream.DataflowStreamWriteAdapter<T>
      extended by groovyx.gpars.dataflow.DataflowBroadcast<T>
Type Parameters:
T - The type of messages to pass through the stream
All Implemented Interfaces:
DataflowWriteChannel<T>

public final class DataflowBroadcast<T>
extends DataflowStreamWriteAdapter<T>

Offers a deterministic one-to-many and many-to-many messaging alternative to DataflowQueue. Internally it wraps a DataflowStream class with a DataflowStreamWriteAdapter and so synchronizes all writes to the underlying stream allowing multiple threads accessing the stream concurrently. On demand through the createReadChannel() method it will return an DataflowReadChannel through which the reader will receive all messages written to the channel since then.

Typical use:

DataflowWriteChannel broadcastStream = new DataflowBroadcast() DataflowReadChannel stream1 = broadcastStream.createReadChannel() DataflowReadChannel stream2 = broadcastStream.createReadChannel() broadcastStream << 'Message' assert stream1.val == stream2.val

Author:
Vaclav Pech

Constructor Summary
DataflowBroadcast()
          Creates a new adapter
 
Method Summary
 DataflowReadChannel<T> createReadChannel()
          Retrieves an implementation of DataflowReadChannel to read all messages submitted to the broadcast chanel.
 java.lang.String toString()
           
 
Methods inherited from class groovyx.gpars.dataflow.stream.DataflowStreamWriteAdapter
bind, getHead, leftShift, leftShift
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DataflowBroadcast

public DataflowBroadcast()
Creates a new adapter

Method Detail

toString

public java.lang.String toString()
Overrides:
toString in class DataflowStreamWriteAdapter<T>

createReadChannel

public DataflowReadChannel<T> createReadChannel()
Retrieves an implementation of DataflowReadChannel to read all messages submitted to the broadcast chanel. Since multiple parties (threads/tasks/actors/...) may ask for read channels independently, the submitted messages are effectively broadcast to all the subscribers.

Returns:
A read channel to receive messages submitted to the broadcast channel from now on.

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