Package org.jgroups.blocks
Class MessageListenerAdapter
- java.lang.Object
-
- org.jgroups.blocks.MessageListenerAdapter
-
- All Implemented Interfaces:
ExtendedMessageListener
,MessageListener
public class MessageListenerAdapter extends java.lang.Object implements ExtendedMessageListener
This class provides multiplexing possibilities forMessageListener
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 ofMessageListener
to be registered for message notification. With help of this class you can overcome this limitation.- Author:
- Roman Rokytskyy (rrokytskyy@acm.org)
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.HashSet
messageListeners
protected MessageListener[]
messageListenersCache
protected MessageListener
stateListener
-
Constructor Summary
Constructors Constructor Description MessageListenerAdapter()
Create default instance of this class.MessageListenerAdapter(MessageListener mainListener)
Create instance of this class.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addMessageListener(MessageListener listener)
Add message listener to this adapter.byte[]
getState()
Get state from state listener if present.void
getState(java.io.OutputStream ostream)
Allows an application to write a state through a provided OutputStream.byte[]
getState(java.lang.String state_id)
Allows an application to provide a partial state as a byte arrayvoid
getState(java.lang.String state_id, java.io.OutputStream ostream)
Allows an application to write a partial state through a provided OutputStream.void
receive(Message msg)
Receive message from group.void
removeMessageListener(MessageListener listener)
Remove message listener from this adapter.void
setState(byte[] state)
Set state of ths group.void
setState(java.io.InputStream istream)
Allows an application to read a state through a provided InputStream.void
setState(java.lang.String state_id, byte[] state)
Allows an application to read a partial state indicated by state_id from a given state byte array parameter.void
setState(java.lang.String state_id, java.io.InputStream istream)
Allows an application to read a partial state through a provided InputStream.void
setStateListener(MessageListener listener)
Registerlistener
for state notification events.
-
-
-
Field Detail
-
stateListener
protected MessageListener stateListener
-
messageListeners
protected final 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 useaddMessageListener(MessageListener)
orremoveMessageListener(MessageListener)
to add or remove message listeners, andsetStateListener(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 ofMessageListener
that will provide state messages.
-
-
Method Detail
-
getState
public byte[] getState()
Get state from state listener if present.- Specified by:
getState
in interfaceMessageListener
- Returns:
- current state of the group state or
null
if no state listeners were registered.
-
getState
public byte[] getState(java.lang.String state_id)
Description copied from interface:ExtendedMessageListener
Allows an application to provide a partial state as a byte array- Specified by:
getState
in interfaceExtendedMessageListener
- Parameters:
state_id
- id of the partial state requested- Returns:
- partial state for the given state_id
-
getState
public void getState(java.io.OutputStream ostream)
Description copied from interface:ExtendedMessageListener
Allows an application to write a state through a provided OutputStream. An application is obligated to always close the given OutputStream reference.- Specified by:
getState
in interfaceExtendedMessageListener
- Parameters:
ostream
- the OutputStream- See Also:
OutputStream.close()
-
getState
public void getState(java.lang.String state_id, java.io.OutputStream ostream)
Description copied from interface:ExtendedMessageListener
Allows an application to write a partial state through a provided OutputStream. An application is obligated to always close the given OutputStream reference.- Specified by:
getState
in interfaceExtendedMessageListener
- Parameters:
state_id
- id of the partial state requestedostream
- the OutputStream- See Also:
OutputStream.close()
-
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 interfaceMessageListener
- Parameters:
msg
- message to distribute within message listeners.
-
setState
public void setState(byte[] state)
Set state of ths group. This method will delegate call to state listener if it was previously registered.- Specified by:
setState
in interfaceMessageListener
-
setState
public void setState(java.lang.String state_id, byte[] state)
Description copied from interface:ExtendedMessageListener
Allows an application to read a partial state indicated by state_id from a given state byte array parameter.- Specified by:
setState
in interfaceExtendedMessageListener
- Parameters:
state_id
- id of the partial state requestedstate
- partial state for the given state_id
-
setState
public void setState(java.io.InputStream istream)
Description copied from interface:ExtendedMessageListener
Allows an application to read a state through a provided InputStream. An application is obligated to always close the given InputStream reference.- Specified by:
setState
in interfaceExtendedMessageListener
- Parameters:
istream
- the InputStream- See Also:
InputStream.close()
-
setState
public void setState(java.lang.String state_id, java.io.InputStream istream)
Description copied from interface:ExtendedMessageListener
Allows an application to read a partial state through a provided InputStream. An application is obligated to always close the given InputStream reference.- Specified by:
setState
in interfaceExtendedMessageListener
- Parameters:
state_id
- id of the partial state requestedistream
- the InputStream- See Also:
InputStream.close()
-
addMessageListener
public final void addMessageListener(MessageListener listener)
Add message listener to this adapter. This method registerslistener
for message notification.Note, state notification will not be used.
-
removeMessageListener
public void removeMessageListener(MessageListener listener)
Remove message listener from this adapter. This method deregisterslistener
from message notification.
-
setStateListener
public void setStateListener(MessageListener listener)
Registerlistener
for state notification events. There can be only one state listener per adapter.
-
-