net.sf.fmj.media.datasink.BasicDataSink Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of fmj Show documentation
Show all versions of fmj Show documentation
Freedom for Media in Java
package net.sf.fmj.media.datasink;
import java.util.*;
import javax.media.datasink.*;
public abstract class BasicDataSink implements javax.media.DataSink
{
protected final Vector listeners
= new Vector(1);
public void addDataSinkListener(DataSinkListener dsl)
{
if ((dsl != null) && !listeners.contains(dsl))
listeners.addElement(dsl);
}
protected void removeAllListeners()
{
listeners.removeAllElements();
}
public void removeDataSinkListener(DataSinkListener dsl)
{
if (dsl != null)
listeners.removeElement(dsl);
}
protected final void sendDataSinkErrorEvent(String reason)
{
sendEvent(new DataSinkErrorEvent(this, reason));
}
protected final void sendEndofStreamEvent()
{
sendEvent(new EndOfStreamEvent(this));
}
protected void sendEvent(DataSinkEvent event)
{
if (!listeners.isEmpty())
{
synchronized (listeners)
{
for (DataSinkListener listener : listeners)
listener.dataSinkUpdate(event);
}
}
}
}