The UniversalMembershipListenerAdapter is a wrapper
for SystemMembershipListener and
BridgeMembershipListener, providing a facade that makes both
appear to customer code as a single SystemMembershipListener
from the Admin API. This includes adapting
BridgeMembershipListener events to appear as events for the
SystemMembershipListener.

UniversalMembershipListenerAdapter implements
SystemMembershipListener, exposing the callbacks in that
interface as methods to be overridden by the customer.

An internal implementation of BridgeMembershipListener is
registered when this class is instantiated. This implementation creates a
SystemMembershipEvent and calls the
corresponding SystemMembershipListener public methods on
UniversalMembershipListenerAdapter. To the customer code, the
BridgeMembershipEvents are wrapped to appear as
SystemMembershipEvents. In this way, both types of membership
events appear as SystemMembershipEvents, allowing customer
code written using the Admin API to continue working by changing the
listener implementation to simply extend this class.

Any BridgeServer using the UniversalMembershipListenerAdapter
will receive notifications of system membership changes and bridge
membership changes through a single listener.

Any bridge client using the UniversalMembershipListenerAdapter
would receive notifications of bridge server connection changes. If that
bridge client also creates a connection to the GemFire DistributedSystem, then it will also
receive notifications of system membership changes.

Simply constructing the UniversalMembershipListenerAdapter
results in the underlying BridgeMembershipListener also being
registered.

The following code illustrates how a BridgeServer application would use
UniversalMembershipListenerAdapter. The code in this example
assumes that the class MyMembershipListenerImpl extends
UniversalMembershipListenerAdapter:

The callbacks on MyMembershipListenerImpl would then be
invoked for all SystemMembershipEvents and
BridgeMembershipEvents. The latter will appear to be
SystemMembershipEvents.

Similarly, the following code illustrates how a bridge client application
would use UniversalMembershipListenerAdapter, where
MyMembershipListenerImpl is a subclass. Simply by constructing this subclass
of UniversalMembershipListenerAdapter it is registering itself
as a BridgeMembershipListener:

new MyMembershipListenerImpl();

A bridge client that also connects to the DistributedSystem
could register with theAdminDistributedSystem as shown
above.

registerBridgeMembershipListener

public void registerBridgeMembershipListener()

Registers this adapter as a BridgeMembershipListener.
Registration is automatic when constructing this adapter, so this call
is no necessary unless it was previously unregistered by calling
unregisterBridgeMembershipListener().

memberLeft

Invoked when a member has gracefully left the distributed system. Also
invoked when a client has gracefully disconnected from this process.
or when this process has gracefully disconnected from a
BridgeServer.

memberCrashed

Invoked when a member has unexpectedly left the distributed system. Also
invoked when a client has unexpectedly disconnected from this process
or when this process has unexpectedly disconnected from a
BridgeServer.