org.apache.excalibur.event.impl
Class LossyMultiCastSink

java.lang.Object
  extended by org.apache.excalibur.event.impl.LossyMultiCastSink
All Implemented Interfaces:
org.apache.excalibur.event.Sink

public class LossyMultiCastSink
extends java.lang.Object
implements org.apache.excalibur.event.Sink

This is a org.apache.excalibur.event.seda.event.Sink implementation that multicasts enqueue operations to the contained and concrete sink objects. Compared to the regular org.apache.excalibur.event.seda.event.impl.MultiCastSink this sink works in that it delivers zero, one or more sinks. It can be configured to fail when less than one sink was delivered to.

Version:
$Revision: 1.4 $
Author:
Avalon Development Team

Nested Class Summary
private static class LossyMultiCastSink.DefaultPreparedEnqueue
          A prepared enqueue object that holds other prepared enqueue objects and allows to perform a commit / abort on all of these objects.
 
Field Summary
private  boolean m_oneSuccess
          indicates if at least one enqueue operation must succeed.
private  java.util.Collection m_sinks
          A collection of sink arrays representing the sinks to enqueue the element to.
private  int m_size
          The size of the sink.
 
Fields inherited from interface org.apache.excalibur.event.Sink
ROLE
 
Constructor Summary
LossyMultiCastSink(java.util.Collection sinks)
          This constructor creates a failure tolerant sink based on the collection of sink arrays.
LossyMultiCastSink(java.util.Collection sinks, boolean oneSuccess)
          This constructor creates a failure tolerant sink based on the collection of sink arrays.
 
Method Summary
 int canAccept()
           
 void enqueue(java.lang.Object element)
           
 void enqueue(java.lang.Object[] elements)
           
 boolean isFull()
           
 int maxSize()
           
 org.apache.excalibur.event.PreparedEnqueue prepareEnqueue(java.lang.Object[] elements)
           
 int size()
           
 boolean tryEnqueue(java.lang.Object element)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_sinks

private final java.util.Collection m_sinks
A collection of sink arrays representing the sinks to enqueue the element to.


m_size

private final int m_size
The size of the sink.


m_oneSuccess

private final boolean m_oneSuccess
indicates if at least one enqueue operation must succeed.

Constructor Detail

LossyMultiCastSink

public LossyMultiCastSink(java.util.Collection sinks)
This constructor creates a failure tolerant sink based on the collection of sink arrays. None of the enqueue operations must succeed.

Parameters:
sinks - A collection of sink arrays for each stage.
Since:
May 16, 2002

LossyMultiCastSink

public LossyMultiCastSink(java.util.Collection sinks,
                          boolean oneSuccess)
This constructor creates a failure tolerant sink based on the collection of sink arrays. The additional boolean flag describes whether at least one or none of the enqueue operations must succeed.

Parameters:
sinks - A collection of sink arrays for each stage.
Since:
May 16, 2002
Method Detail

canAccept

public int canAccept()
Specified by:
canAccept in interface org.apache.excalibur.event.Sink
See Also:
Sink.canAccept()

isFull

public boolean isFull()
Specified by:
isFull in interface org.apache.excalibur.event.Sink
See Also:
Sink.isFull()

maxSize

public int maxSize()
Specified by:
maxSize in interface org.apache.excalibur.event.Sink
See Also:
Sink.maxSize()

enqueue

public void enqueue(java.lang.Object element)
             throws org.apache.excalibur.event.SinkException
Specified by:
enqueue in interface org.apache.excalibur.event.Sink
Throws:
org.apache.excalibur.event.SinkException
See Also:
Sink.enqueue(Object)

enqueue

public void enqueue(java.lang.Object[] elements)
             throws org.apache.excalibur.event.SinkException
Specified by:
enqueue in interface org.apache.excalibur.event.Sink
Throws:
org.apache.excalibur.event.SinkException
See Also:
Sink.enqueue(Object[])

tryEnqueue

public boolean tryEnqueue(java.lang.Object element)
Specified by:
tryEnqueue in interface org.apache.excalibur.event.Sink
See Also:
Sink.tryEnqueue(Object)

prepareEnqueue

public org.apache.excalibur.event.PreparedEnqueue prepareEnqueue(java.lang.Object[] elements)
                                                          throws org.apache.excalibur.event.SinkException
Specified by:
prepareEnqueue in interface org.apache.excalibur.event.Sink
Throws:
org.apache.excalibur.event.SinkException
See Also:
Sink.prepareEnqueue(Object[])

size

public int size()
Specified by:
size in interface org.apache.excalibur.event.Sink
See Also:
Sink.size()