package org.jgroups; import java.io.InputStream; import java.io.OutputStream; /** * MessageListener allows a listener to be notified when a {@link Message} or a state transfer * events arrives to a node. * <p> * MessageListener is often used by JGroups building blocks installed on top of a channel i.e * RpcDispatcher and MessageDispatcher. * * * @see org.jgroups.blocks.RpcDispatcher * @see org.jgroups.blocks.MessageDispatcher * * @since 2.0 * @author Bela Ban * @author Vladimir Blagojevic */ public interface MessageListener { /** * Called when a message is received. * * @param msg */ void receive(Message msg); /** * Allows an application to write a state through a provided OutputStream. After the state has * been written the OutputStream doesn't need to be closed as stream closing is automatically * done when a calling thread returns from this callback. * * @param output * the OutputStream * @throws Exception * if the streaming fails, any exceptions should be thrown so that the state requester * can re-throw them and let the caller know what happened * @see java.io.OutputStream#close() */ void getState(OutputStream output) throws Exception; /** * Allows an application to read a state through a provided InputStream. After the state has been * read the InputStream doesn't need to be closed as stream closing is automatically done when a * calling thread returns from this callback. * * @param input * the InputStream * @throws Exception * if the streaming fails, any exceptions should be thrown so that the state requester * can catch them and thus know what happened * @see java.io.InputStream#close() */ void setState(InputStream input) throws Exception; }