001         package com.croftsoft.core.util.pubsub;
002    
003         /*********************************************************************
004         * An interface for publish-and-subscribe publishers.
005         *
006         * <p>
007         * Used to pass messages and events between loosely coupled objects.
008         * </p>
009         *
010         * <p>
011         * This interface extends interface Subscriber so that it can be used
012         * as a one-to-many relay; received messages are simply published.
013         * </p>
014         *
015         * @see
016         *   Subscriber
017         *
018         * @version
019         *   2002-01-29
020         * @since
021         *   2002-01-29
022         * @author
023         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
024         *********************************************************************/
025    
026         public interface  Publisher
027           extends Subscriber
028         //////////////////////////////////////////////////////////////////////
029         //////////////////////////////////////////////////////////////////////
030         {
031    
032         public boolean  addSubscriber ( Subscriber  subscriber );
033    
034         public boolean  removeSubscriber ( Subscriber  subscriber );
035    
036         public void  publish ( Object  message );
037    
038         /*********************************************************************
039         * Simply calls method <code>publish(message)</code>.
040         *
041         * <p>
042         * This interface extends interface Subscriber so that it can be used
043         * as a one-to-many relay; received messages are published.
044         * </p>
045         *********************************************************************/
046         public void  receive ( Object  message );
047         
048         //////////////////////////////////////////////////////////////////////
049         //////////////////////////////////////////////////////////////////////
050         }