org.codehaus.gpars

groovyx.gpars.dataflow
[Java] Class SyncDataflowBroadcast

java.lang.Object
  groovyx.gpars.dataflow.stream.DataflowStreamWriteAdapter
      groovyx.gpars.dataflow.SyncDataflowBroadcast

public final class SyncDataflowBroadcast
extends DataflowStreamWriteAdapter

Offers a synchronous deterministic one-to-many and many-to-many messaging alternative to SyncDataflowQueue. Internally it wraps a SyncDataflowStream 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

Parameters:
- The type of messages to pass through the stream
Authors:
Vaclav Pech


Field Summary
 
Fields inherited from class DataflowStreamWriteAdapter
head
 
Constructor Summary
SyncDataflowBroadcast()

Creates a new instance

 
Method Summary
DataflowReadChannel createReadChannel()

Retrieves an implementation of DataflowReadChannel to read all messages submitted to the broadcast chanel.

java.lang.String toString()

void unsubscribeReadChannel(DataflowReadChannel channel)

Un-registers the supplied read channel from the broadcast.

 
Methods inherited from class DataflowStreamWriteAdapter
bind, getHead, leftShift, leftShift, toString, updateHead
 

Constructor Detail

SyncDataflowBroadcast

public SyncDataflowBroadcast()
Creates a new instance


 
Method Detail

createReadChannel

public DataflowReadChannel 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.


toString

@SuppressWarnings({"SynchronizedMethod"})
@Override
public java.lang.String toString()


unsubscribeReadChannel

public void unsubscribeReadChannel(DataflowReadChannel channel)
Un-registers the supplied read channel from the broadcast. The number of parties that have to meet at data exchange is reduced by one.
throws:
InterruptedException If the thread got interrupted
Parameters:
channel - The channel to unsubscribe. The channel won't be able to read further messages.


 

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