private static void doNotifyClientMembershipListener(DistributedMember member, boolean client,
      ClientMembershipEvent clientMembershipEvent, EventType eventType) {

    for (ClientMembershipListener listener : clientMembershipListeners) {

      try {
        if (eventType.equals(EventType.JOINED)) {
          listener.memberJoined(clientMembershipEvent);
        } else if (eventType.equals(EventType.LEFT)) {
          listener.memberLeft(clientMembershipEvent);
        } else {
          listener.memberCrashed(clientMembershipEvent);
        }
      } catch (CancelException e) {
        // this can be thrown by a server when the system is shutting
        // down
        return;
      } catch (VirtualMachineError e) {
        SystemFailure.initiateFailure(e);
        throw e;
      } catch (Throwable t) {
        SystemFailure.checkFailure();
        logger.warn("unexpected exception", t);
      }
    }
  }
Notifies registered listeners that a Client member has joined. The new member may be a client
connecting to this process or a server that this process has just connected to.

@param member the {@code DistributedMember}
@param client true if the member is a client; false if server
@param typeOfEvent joined/left/crashed
geode-core/src/main/java/org/apache/geode/internal/cache/tier/InternalClientMembership.java