All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.engio.mbassy.bus.common.PubSubSupport Maven / Gradle / Ivy

package net.engio.mbassy.bus.common;

import net.engio.mbassy.bus.IMessagePublication;

/**
 * This interface defines the very basic message publication semantics according to the publish subscribe pattern.
 * Listeners can be subscribed and unsubscribed using the corresponding methods. When a listener is subscribed its
 * handlers will be registered and start to receive matching message publications.
 *
 */
public interface PubSubSupport extends RuntimeProvider{

    /**
     * Subscribe all handlers of the given listener. Any listener is only subscribed once
     * -> subsequent subscriptions of an already subscribed listener will be silently ignored
     *
     * @param listener
     */
    void subscribe(Object listener);

    /**
     * Immediately remove all registered message handlers (if any) of the given listener. When this call returns all handlers
     * have effectively been removed and will not receive any messages (provided that running publications (iterators) in other threads
     * have not yet obtained a reference to the listener)
     * 

* A call to this method passing any object that is not subscribed will not have any effect and is silently ignored. * * @param listener * @return true, if the listener was found and successfully removed * false otherwise */ boolean unsubscribe(Object listener); /** * Synchronously publish a message to all registered listeners. This includes listeners defined for super types of the * given message type, provided they are not configured to reject valid subtype. The call returns when all matching handlers * of all registered listeners have been notified (invoked) of the message. * * @param message */ IMessagePublication publish(T message); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy