/* * @(#)BasicDataSink.java 1.2 02/08/21 * * Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved. */ package com.sun.media.datasink; import java.util.Vector; import java.util.Enumeration; import javax.media.datasink.*; public abstract class BasicDataSink implements javax.media.DataSink { protected Vector listeners = new Vector(1); public void addDataSinkListener(DataSinkListener dsl) { if (dsl != null) if (!listeners.contains(dsl)) listeners.addElement(dsl); } public void removeDataSinkListener(DataSinkListener dsl) { if (dsl != null) listeners.removeElement(dsl); } protected void sendEvent(DataSinkEvent event) { if (!listeners.isEmpty()) { synchronized (listeners) { Enumeration list = listeners.elements(); while (list.hasMoreElements()) { DataSinkListener listener = (DataSinkListener)list.nextElement(); listener.dataSinkUpdate(event); } } } } protected void removeAllListeners() { listeners.removeAllElements(); } protected final void sendEndofStreamEvent() { sendEvent(new EndOfStreamEvent(this)); } protected final void sendDataSinkErrorEvent(String reason) { sendEvent(new DataSinkErrorEvent(this, reason)); } }