org.javagroups.blocks
Class MessageListenerAdapter

java.lang.Object
  |
  +--org.javagroups.blocks.MessageListenerAdapter
All Implemented Interfaces:
MessageListener

public class MessageListenerAdapter
extends java.lang.Object
implements MessageListener

This class provides multiplexing possibilities for MessageListener instances. Usually, we have more than one instance willing to listen to incoming messages, but only one that can produce state for group. PullPushAdapter allows only one instance of MessageListener to be registered for message notification. With help of this class you can overcome this limitation.

Author:
Roman Rokytskyy (rrokytskyy@acm.org)

Field Summary
protected  java.util.HashSet messageListeners
           
protected  MessageListener[] messageListenersCache
           
protected  MessageListener stateListener
           
 
Constructor Summary
MessageListenerAdapter()
          Create default instance of this class.
MessageListenerAdapter(MessageListener mainListener)
          Create instance of this class.
 
Method Summary
 void addMessageListener(MessageListener listener)
          Add message listener to this adapter.
 java.lang.Object getState()
          Get state from state listener if present.
 void receive(Message msg)
          Receive message from group.
 void removeMessageListener(MessageListener listener)
          Remove message listener from this adapter.
 void setState(java.lang.Object state)
          Set state of ths group.
 void setStateListener(MessageListener listener)
          Register listener for state notification events.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

stateListener

protected MessageListener stateListener

messageListeners

protected java.util.HashSet messageListeners

messageListenersCache

protected MessageListener[] messageListenersCache
Constructor Detail

MessageListenerAdapter

public MessageListenerAdapter()
Create default instance of this class. Newly created instance will have no message or state listeners. You have to use addMessageListener(MessageListener) or removeMessageListener(MessageListener) to add or remove message listeners, and setStateListener(MessageListener) to set listener that will participate in state transfer.

MessageListenerAdapter

public MessageListenerAdapter(MessageListener mainListener)
Create instance of this class. mainListener is a main listener instance that received message notifications and can get and set group state.
Parameters:
mainListener - instance of MessageListener that will provide state messages.
Method Detail

getState

public java.lang.Object getState()
Get state from state listener if present.
Specified by:
getState in interface MessageListener
Returns:
current state of the group state or null if no state listeners were registered.

receive

public void receive(Message msg)
Receive message from group. This method will send this message to each message listener that was registered in this adapter.
Specified by:
receive in interface MessageListener
Parameters:
msg - message to distribute within message listeners.

setState

public void setState(java.lang.Object state)
Set state of ths group. This method will delegate call to state listener if it was previously registered.
Specified by:
setState in interface MessageListener

addMessageListener

public void addMessageListener(MessageListener listener)
Add message listener to this adapter. This method registers listener for message notification.

Note, state notification will not be used.


removeMessageListener

public void removeMessageListener(MessageListener listener)
Remove message listener from this adapter. This method deregisters listener from message notification.

setStateListener

public void setStateListener(MessageListener listener)
Register listener for state notification events. There can be only one state listener per adapter.


Copyright © 2001,2002 www.javagroups.com . All Rights Reserved.