@Override
  public void handleClientMembership(String clientId, int eventType) {
    String notifType = null;
    List<ManagedResource> cleanedUp = null;

    if (eventType == ClientMembershipMessage.LEFT) {
      notifType = NOTIF_CLIENT_LEFT;
      cleanedUp = cleanupBridgeClientResources(clientId);
    } else if (eventType == ClientMembershipMessage.CRASHED) {
      notifType = NOTIF_CLIENT_CRASHED;
      cleanedUp = cleanupBridgeClientResources(clientId);
    } else if (eventType == ClientMembershipMessage.JOINED) {
      notifType = NOTIF_CLIENT_JOINED;
    }

    if (cleanedUp != null) {
      for (ManagedResource resource : cleanedUp) {
        MBeanUtils.unregisterMBean(resource);
      }
    }

    Helper.sendNotification(this, new Notification(notifType, modelMBean,
        Helper.getNextNotificationSequenceNumber(), clientId));
  }
Implementation handles client membership changes.

@param clientId id of the client for whom membership change happened
@param eventType membership change type; one of {@link ClientMembershipMessage#JOINED},
       {@link ClientMembershipMessage#LEFT}, {@link ClientMembershipMessage#CRASHED}
geode-core/src/main/java/org/apache/geode/admin/jmx/internal/SystemMemberJmxImpl.java