/*
* $Id: ProcessingController.java,v 1.2 2006/09/25 08:52:36 acaproni Exp $
*
* $Date: 2006/09/25 08:52:36 $
* $Revision: 1.2 $
* $Author: acaproni $
*
* Copyright CERN, All Rights Reserved.
*/
package cern.laser.business;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/**
* This class is a singleton controlling if the MDB's should start processing alarm messages or not.
* The MDB's are notified via an callback method.
*
* @version $Revision: 1.2 $ $Date: 2006/09/25 08:52:36 $
* @author Katarina Sigerud
*/
public class ProcessingController {
private static ProcessingController singleton;
private Set listeners;
private boolean isProcessing;
//
// -- CONSTRUCTORS ------------------------------------------------
//
private ProcessingController() {
listeners = new HashSet();
isProcessing = false;
}
//
// -- PUBLIC METHODS ----------------------------------------------
//
public static final synchronized ProcessingController getInstance() {
if (singleton == null) {
singleton = new ProcessingController();
}
return singleton;
}
public synchronized void addListener(ProcessingControllerListener listener) {
listeners.add(listener);
}
public synchronized void startProcessing() {
isProcessing = true;
for (Iterator iter = listeners.iterator(); iter.hasNext();) {
ProcessingControllerListener listener = (ProcessingControllerListener) iter.next();
listener.startProcessing();
}
}
public synchronized boolean isProcessing() {
return isProcessing;
}
//
// -- implements XXX ----------------------------------------------
//
//
// -- PROTECTED METHODS -------------------------------------------
//
//
// -- PRIVATE METHODS ---------------------------------------------
//
}