/* * Created on Jun 28, 2004 * * To change the template for this generated file go to * Window - Preferences - Java - Code Generation - Code and Comments */ package org.kc7bfi.jflac; import org.kc7bfi.jflac.frame.Frame; import org.kc7bfi.jflac.metadata.Metadata; import java.util.HashSet; import java.util.Iterator; /** * Class to handle frame listeners. * * @author kc7bfi */ class FrameListeners implements FrameListener { private HashSet frameListeners = new HashSet(); /** * Add a frame listener. * * @param listener The frame listener to add */ public void addFrameListener(FrameListener listener) { synchronized (frameListeners) { frameListeners.add(listener); } } /** * Remove a frame listener. * * @param listener The frame listener to remove */ public void removeFrameListener(FrameListener listener) { synchronized (frameListeners) { frameListeners.remove(listener); } } /** * Process metadata records. * * @param metadata the metadata block * @see org.kc7bfi.jflac.FrameListener#processMetadata(org.kc7bfi.jflac.metadata.MetadataBase) */ public void processMetadata(Metadata metadata) { synchronized (frameListeners) { Iterator it = frameListeners.iterator(); while (it.hasNext()) { FrameListener listener = (FrameListener) it.next(); listener.processMetadata(metadata); } } } /** * Process data frames. * * @param frame the data frame * @see org.kc7bfi.jflac.FrameListener#processFrame(org.kc7bfi.jflac.frame.Frame) */ public void processFrame(Frame frame) { synchronized (frameListeners) { Iterator it = frameListeners.iterator(); while (it.hasNext()) { FrameListener listener = (FrameListener) it.next(); listener.processFrame(frame); } } } /** * Called for each frame error detected. * * @param msg The error message * @see org.kc7bfi.jflac.FrameListener#processError(java.lang.String) */ public void processError(String msg) { synchronized (frameListeners) { Iterator it = frameListeners.iterator(); while (it.hasNext()) { FrameListener listener = (FrameListener) it.next(); listener.processError(msg); } } } }