The membership and communication services have been abstracted via a set of classes and a factory. This document is an introduction to the organization of these classes.

At the lowest level is a NetMember. A NetMember is a low-level system-independent notion of a network member. At this writing, there is only one implementation, GMSMember.

NetMember is intended to be implemented in the service provider interface but not necessarily exported to the rest of the system. In the current design, DistributedMember is the type used to identify peers in the network.

The starting point for accessing membership services is via MemberFactory. This class allows one to create a NetMember using various arguments or a MembershipManager, which handles most membership services.

MemberFactory uses pluggable instances that implement the service provider interface MemberServices. At this writing, there is only one implementation, GMSMemberFactory.

A MembershipManager is the central focus for membership activity. It includes startup and shutdown methods, requests for the current view of members, and a method to send messages.

The current membership view in the system is via NetView, which also includes a NetViewId, a sequential identifier that abstracts the ViewId notion from JavaGroups.

One of the arguments to the constructor for a MembershipManager is a DistributedMembershipListener. This listener interface handles membership events, such as new member arrival, member departure, and message receipt.