package org.marketcetera.core.notifications;
import org.marketcetera.core.ClassVersion;
import org.marketcetera.core.publisher.IPublisher;
import org.marketcetera.core.publisher.ISubscriber;
/* $License$ */
/**
* Coordinates receipt and delivery of {@link INotification} objects.
*
* @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a>
* @version $Id: INotificationManager.java 16154 2012-07-14 16:34:05Z colin $
* @since 0.8.0
*/
@ClassVersion("$Id: INotificationManager.java 16154 2012-07-14 16:34:05Z colin $") //$NON-NLS-1$
public interface INotificationManager
extends IPublisher
{
/**
* Subscribes to all notifications.
*
* <p>If the given <code>ISubscriber</code> is already subscribed this method does nothing.
*
* @param inSubscriber an <code>ISubscriber</code> value
*/
public void subscribe(ISubscriber inSubscriber);
/**
* Unsubscribes to all notifications.
*
* <p>If the given <code>ISubscriber</code> is not already subscribed this method does nothing.
*
* @param inSubscriber an <code>ISubscriber</code> value
*/
public void unsubscribe(ISubscriber inSubscriber);
/**
* Publishes an <code>INotification</code>.
*
* <p>The given <code>INotification</code> is published to all subscribers in the order they
* subscribed.
*
* @param inNotification an <code>INotification</code> value
*/
public void publish(INotification inNotification);
}