Package org.jgroups.blocks
Class MessageListenerAdapter
java.lang.Object
org.jgroups.blocks.MessageListenerAdapter
- All Implemented Interfaces:
ExtendedMessageListener
,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
FieldsModifier and TypeFieldDescriptionprotected final HashSet
protected MessageListener[]
protected MessageListener
-
Constructor Summary
ConstructorsConstructorDescriptionCreate default instance of this class.MessageListenerAdapter
(MessageListener mainListener) Create instance of this class. -
Method Summary
Modifier and TypeMethodDescriptionfinal void
addMessageListener
(MessageListener listener) Add message listener to this adapter.byte[]
getState()
Get state from state listener if present.void
getState
(OutputStream ostream) Allows an application to write a state through a provided OutputStream.byte[]
Allows an application to provide a partial state as a byte arrayvoid
getState
(String state_id, OutputStream ostream) Allows an application to write a partial state through a provided OutputStream.void
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
(InputStream istream) Allows an application to read a state through a provided InputStream.void
Allows an application to read a partial state indicated by state_id from a given state byte array parameter.void
setState
(String state_id, InputStream istream) Allows an application to read a partial state through a provided InputStream.void
setStateListener
(MessageListener listener) Registerlistener
for state notification events.
-
Field Details
-
stateListener
-
messageListeners
-
messageListenersCache
-
-
Constructor Details
-
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
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 Details
-
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
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
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:
-
getState
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:
-
receive
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
- Parameters:
state
-
-
setState
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
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:
-
setState
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:
-
addMessageListener
Add message listener to this adapter. This method registerslistener
for message notification.Note, state notification will not be used.
-
removeMessageListener
Remove message listener from this adapter. This method deregisterslistener
from message notification. -
setStateListener
Registerlistener
for state notification events. There can be only one state listener per adapter.
-