You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by up...@apache.org on 2015/10/09 02:37:58 UTC

[40/50] [abbrv] incubator-geode git commit: GEODE-243: remove deprecated Bridge feature

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/properties.html
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/properties.html b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/properties.html
index 6a335a8..0dd2bae 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/properties.html
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/properties.html
@@ -3590,9 +3590,7 @@ TBA Is this class even used?
 <p>
 <em>Boolean</em> (default is false)
 <p>
-See com.gemstone.gemfire.cache.util.BridgeLoader#init(Properties).
-<p>
-See com.gemstone.gemfire.cache.util.BridgeWriter#init(Properties).
+Removed in Geode 1.0 with removal of deprecated Bridge classes.
 <p>
 TBA 
 </dd>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/execute/InternalFunctionService.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/execute/InternalFunctionService.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/execute/InternalFunctionService.java
index d4a33a6..1ef881c 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/execute/InternalFunctionService.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/execute/InternalFunctionService.java
@@ -90,9 +90,7 @@ public class InternalFunctionService {
    */
   private static boolean isClientRegion(Region region) {
     LocalRegion localRegion = (LocalRegion)region;
-    return (localRegion.hasServerProxy()
-        || AbstractRegion.isBridgeLoader(localRegion.getCacheLoader()) || AbstractRegion
-        .isBridgeWriter(localRegion.getCacheWriter()));
+    return localRegion.hasServerProxy();
   }
 
   private static final FunctionServiceManager funcServiceManager = new FunctionServiceManager();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/ha/HARegionQueue.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/ha/HARegionQueue.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/ha/HARegionQueue.java
index f5cf679..e094648 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/ha/HARegionQueue.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/ha/HARegionQueue.java
@@ -68,7 +68,7 @@ import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedM
 import com.gemstone.gemfire.internal.Assert;
 import com.gemstone.gemfire.internal.DataSerializableFixedID;
 import com.gemstone.gemfire.internal.Version;
-import com.gemstone.gemfire.internal.cache.BridgeServerImpl;
+import com.gemstone.gemfire.internal.cache.CacheServerImpl;
 import com.gemstone.gemfire.internal.cache.Conflatable;
 import com.gemstone.gemfire.internal.cache.EventID;
 import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
@@ -3013,9 +3013,9 @@ protected boolean checkEventForRemoval(Long counter, ThreadIdentifier threadid,
                 && !queueRemovalMessageList.isEmpty()) { // messages exist
               QueueRemovalMessage qrm = new QueueRemovalMessage();
               qrm.resetRecipients();
-              List<BridgeServerImpl> servers = this.cache.getBridgeServers();
+              List<CacheServerImpl> servers = this.cache.getCacheServers();
               List<DistributedMember> recipients = new LinkedList();
-              for (BridgeServerImpl server: servers) {
+              for (CacheServerImpl server: servers) {
                 recipients.addAll(server.getCacheServerAdvisor().adviseBridgeServers());
               }
               qrm.setRecipients(recipients);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PartitionedRegionObserverHolder.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PartitionedRegionObserverHolder.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PartitionedRegionObserverHolder.java
index 0e8c3d8..0498328 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PartitionedRegionObserverHolder.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PartitionedRegionObserverHolder.java
@@ -44,7 +44,7 @@ public class PartitionedRegionObserverHolder {
     return oldObserver;
   }
 
-  /** Return the current BridgeObserver instance */
+  /** Return the current ClientServerObserver instance */
   public static final PartitionedRegionObserver getInstance()
   {
     return _instance;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/ConnectionProxy.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/ConnectionProxy.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/ConnectionProxy.java
index 2c7e0a5..685a142 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/ConnectionProxy.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/ConnectionProxy.java
@@ -7,20 +7,10 @@
  */
 package com.gemstone.gemfire.internal.cache.tier;
 
-import java.util.*;
-
-import com.gemstone.gemfire.CancelCriterion;
-import com.gemstone.gemfire.cache.Region;
-import com.gemstone.gemfire.cache.util.EndpointDoesNotExistException;
-import com.gemstone.gemfire.cache.util.EndpointExistsException;
-import com.gemstone.gemfire.cache.util.EndpointInUseException;
 import com.gemstone.gemfire.internal.Version;
-import com.gemstone.gemfire.internal.cache.EventID;
-import com.gemstone.gemfire.internal.cache.tier.sockets.ClientProxyMembershipID;
 
 /**
- * Defines the connection proxy interface, implementations of which
- * provide connection management facilities to the bridge loader. 
+ * Provides the version of the client.
  *
  * @author Sudhir Menon
  * @since 2.0.2
@@ -33,152 +23,4 @@ public interface ConnectionProxy {
    * @since 5.7
    */
   public static final Version VERSION = Version.CURRENT.getGemFireVersion();
-
-  public abstract void finalizeProxy();
-
-  /**
-   * Returns the load balancing policy in effect for this connection
-   * proxy.
-   */
-  public abstract String getLBPolicy();
-
-  /**
-   * Returns the number of milliseconds to wait before re-connecting
-   * to a dead server.
-   */
-  public abstract int getRetryInterval();
-
-  /**
-   * Returns the number of milliseconds to wait before timing out
-   * client/server communication.
-   */
-  public abstract int getReadTimeout();
-
-
-  /**
-   * Closes this connection proxy and all of its connections
-   */
-  public abstract void close();
-
-  /**
-   * Returned true if this ConnectionProxy has been initialized and not closed.
-   */
-  public abstract boolean isOpen();
-
-  /**
-   * Update bookkeeping on this proxy associated with the loss of a region.
-   * In particular, remove all region interests.
-   */
-  public abstract void detachRegion(Region r);
-
-  /**
-   * Returns the number of connections that should be created
-   * to every cache server.
-   */
-  public abstract int getConnectionsPerServer();
-
-  /**
-   * Notes that the server with the given name is unavailable
-   */
-  public abstract void setServerUnavailable(String name);
-
-  /**
-   * Notes that the server with the given name is available
-   */
-  public abstract void setServerAvailable(String name);
-
-  /**
-   * Stops this connection proxy and
-   */
-  public abstract void terminate();
-
-  /**
-   * Releases the connection associated with the current thread
-   */
-  public abstract void release();
-
-  /**
-   * Returns value of establishCallbackConnection property.
-   * @since 4.2.3
-   */
-  public boolean getEstablishCallbackConnection();
-
-  /**
-   * Add an <code>Endpoint</code> to the known <code>Endpoint</code>s.
-   *
-   * @param name The name of the endpoint to add
-   * @param host The host name or ip address of the endpoint to add
-   * @param port The port of the endpoint to add
-   *
-   * @throws EndpointExistsException if the <code>Endpoint</code> to be
-   * added already exists.
-   *
-   * @since 5.0.2
-   */
-  public void addEndpoint(String name, String host, int port)
-  throws EndpointExistsException;
-
-  /**
-   * Remove an <code>Endpoint</code> from the dead <code>Endpoint</code>s.
-   * The specified <code>Endpoint</code> must be dead.
-   *
-   * @param name The name of the endpoint to remove
-   * @param host The host name or ip address of the endpoint to remove
-   * @param port The port of the endpoint to remove
-   *
-   * @throws EndpointDoesNotExistException if the <code>Endpoint</code> to be
-   * removed doesn't exist.
-   *
-   * @throws EndpointInUseException if the <code>Endpoint</code> to be removed
-   * contains <code>Connection</code>s
-   *
-   * @since 5.0.2
-   */
-  public void removeEndpoint(String name, String host, int port)
-  throws EndpointDoesNotExistException, EndpointInUseException;
-
-  /**
-   * @return Returns the threadIdToSequenceId.
-   * @since 5.1
-   */
-  public Map getThreadIdToSequenceIdMap();
-
-  /**
-   * Verify if this EventId is already present in the map or not. If it is
-   * already present then return true
-   *
-   * @param eventId the EventId of the incoming event
-   * @return true if it is already present
-   * @since 5.1
-   */
-  public abstract boolean verifyIfDuplicate(EventID eventId, boolean addToMap);
-
-  /**
-   * @return Returns the redundancy number
-   * @since 5.1
-   */
-  public int getRedundancyLevel();
-
-  /**
-   * Returns the cancellation criterion for this proxy
-   * @return the cancellation criterion
-   */
-  public CancelCriterion getCancelCriterion();
-
-  /**
-   * The configurable expiry time of last received sequence ID
-   *
-   * @return The configurable expiry time of last received sequence ID
-   */
-  public long getMessageTrackingTimeout();
-
-  public boolean isDurableClient();
-
-  public void reuse();
-  public int getRetryAttempts();
-
-  /**
-   * Test hook for getting the client proxy membership id from this proxy.
-   */
-  public ClientProxyMembershipID getProxyID();
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/InternalBridgeMembership.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/InternalBridgeMembership.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/InternalBridgeMembership.java
deleted file mode 100755
index b0dc18f..0000000
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/InternalBridgeMembership.java
+++ /dev/null
@@ -1,715 +0,0 @@
-/*=========================================================================
- * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
- * This product is protected by U.S. and international copyright
- * and intellectual property laws. Pivotal products are covered by
- * more patents listed at http://www.pivotal.io/patents.
- *=========================================================================
- */
-package com.gemstone.gemfire.internal.cache.tier;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.logging.log4j.Logger;
-
-import com.gemstone.gemfire.CancelException;
-import com.gemstone.gemfire.SystemFailure;
-import com.gemstone.gemfire.cache.CacheFactory;
-import com.gemstone.gemfire.cache.client.PoolManager;
-import com.gemstone.gemfire.cache.client.internal.PoolImpl;
-import com.gemstone.gemfire.cache.util.BridgeMembershipEvent;
-import com.gemstone.gemfire.cache.util.BridgeMembershipListener;
-import com.gemstone.gemfire.distributed.DistributedMember;
-import com.gemstone.gemfire.distributed.DistributedSystemDisconnectedException;
-import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
-import com.gemstone.gemfire.distributed.internal.ServerLocation;
-import com.gemstone.gemfire.internal.cache.BridgeServerImpl;
-import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
-import com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl;
-import com.gemstone.gemfire.internal.cache.tier.sockets.ClientHealthMonitor;
-import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
-import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.internal.logging.LoggingThreadGroup;
-import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
-import com.gemstone.gemfire.management.membership.ClientMembershipEvent;
-import com.gemstone.gemfire.management.membership.ClientMembershipListener;
-
-/**
- * Handles registration and event notification duties for
- * <code>BridgeMembershipListener</code>s. The public counterpart for this
- * class is {@link com.gemstone.gemfire.cache.util.BridgeMembership}.
- *
- * @author Kirk Lund
- * @since 4.2.1
- */
-public final class InternalBridgeMembership  {
-
-  private static final Logger logger = LogService.getLogger();
-  
-  /** 
-   * The membership listeners registered on this InternalBridgeMembership
-   * 
-   * This list is never modified in place, and a new list is installed
-   * only under the control of (@link #membershipLock}.
-   */
-  private static volatile List<BridgeMembershipListener> membershipListeners = Collections.emptyList();
-  
-  
-  private static volatile List<ClientMembershipListener> clientMembershipListeners = Collections.emptyList();
-  
-  /**
-   * Must be locked whenever references to the volatile field 
-   * {@link #membershipListeners} is changed.
-   */
-  private static final Object membershipLock = new Object();
-
-  /** 
-   * QueuedExecutor for firing BridgeMembershipEvents 
-   *
-   * Access synchronized via {@link #systems}
-   */
-  private static ThreadPoolExecutor executor;
-
-  private static final ThreadGroup threadGroup =
-      LoggingThreadGroup.createThreadGroup(
-          "BridgeMembership Event Invoker Group", logger);
-
-  /** List of connected <code>DistributedSystem</code>s */
-  private static final List systems = new ArrayList(1);
-
-  /**
-   * True if class is monitoring systems
-   * 
-   * @guarded.By InternalBridgeMembership.class
-   */
-  private static boolean isMonitoring = false;
-  
-  /**
-   * This work used to be in a class initializer.  Unfortunately, this allowed
-   * the class to escape before it was fully initialized, so now we just
-   * make sure this work is done before any public static method on it
-   * is invoked.
-   */
-  private static synchronized void startMonitoring() {
-    if (isMonitoring) {
-      return;
-    }
-    
-    synchronized(systems) {
-      // Initialize our own list of distributed systems via a connect listener
-      List existingSystems = InternalDistributedSystem.addConnectListener(
-        new InternalDistributedSystem.ConnectListener() {
-          public void onConnect(InternalDistributedSystem sys) {
-            addInternalDistributedSystem(sys);
-          }
-        });
-      
-      isMonitoring = true;
-      
-      // While still holding the lock on systems, add all currently known
-      // systems to our own list
-      for (Iterator iter = existingSystems.iterator(); iter.hasNext();) {
-        InternalDistributedSystem sys = (InternalDistributedSystem) iter.next();
-        try {
-          if (sys.isConnected()) {
-            addInternalDistributedSystem(sys);
-          }
-        }
-        catch (DistributedSystemDisconnectedException e) {
-          // it doesn't care (bug 37379)
-        }
-      }
-      
-    } // synchronized
-  }
-  
-  private InternalBridgeMembership() {}
-
-  /**
-   * Registers a {@link BridgeMembershipListener} for notification of
-   * connection changes for BridgeServers and bridge clients.
-   * @param listener a BridgeMembershipListener to be registered
-   * @deprecated use newer registerClientMembershipListener instead
-   */
-  public static void registerBridgeMembershipListener(BridgeMembershipListener listener) {
-    startMonitoring();
-    synchronized (membershipLock) {
-      List<BridgeMembershipListener> oldListeners = membershipListeners;
-      if (!oldListeners.contains(listener)) {
-        List<BridgeMembershipListener> newListeners = new ArrayList<BridgeMembershipListener>(oldListeners);
-        newListeners.add(listener);
-        membershipListeners = newListeners;
-      }
-    }
-  }
-  
-  /**
-   * Registers a {@link ClientMembershipListener} for notification of connection
-   * changes for CacheServer and clients.
-   * 
-   * @param listener
-   *          a ClientMembershipListener to be registered
-   */
-  public static void registerClientMembershipListener(ClientMembershipListener listener) {
-    startMonitoring();
-    synchronized (membershipLock) {
-      List<ClientMembershipListener> oldListeners = clientMembershipListeners;
-      if (!oldListeners.contains(listener)) {
-        List<ClientMembershipListener> newListeners = new ArrayList<ClientMembershipListener>(oldListeners);
-        newListeners.add(listener);
-        clientMembershipListeners = newListeners;
-      }
-    }
-  }
-  
-  /**
-   * Removes registration of a previously registered {@link
-   * BridgeMembershipListener}.
-   * @param listener a BridgeMembershipListener to be unregistered
-   * @deprecated
-   */
-  public static void unregisterBridgeMembershipListener(BridgeMembershipListener listener) {
-    startMonitoring();
-    synchronized (membershipLock) {
-      List<BridgeMembershipListener> oldListeners = membershipListeners;
-      if (oldListeners.contains(listener)) {
-        List<BridgeMembershipListener> newListeners = new ArrayList<BridgeMembershipListener>(oldListeners);
-        if (newListeners.remove(listener)) {
-          membershipListeners = newListeners;
-        }
-      }
-    }
-  }
-  
-  /**
-   * Removes registration of a previously registered
-   * {@link ClientMembershipListener}.
-   * 
-   * @param listener
-   *          a ClientMembershipListener to be unregistered
-   */
-  public static void unregisterClientMembershipListener(ClientMembershipListener listener) {
-    startMonitoring();
-    synchronized (membershipLock) {
-      List<ClientMembershipListener> oldListeners = clientMembershipListeners;
-      if (oldListeners.contains(listener)) {
-        List<ClientMembershipListener> newListeners = new ArrayList<ClientMembershipListener>(oldListeners);
-        if (newListeners.remove(listener)) {
-          clientMembershipListeners = newListeners;
-        }
-      }
-    }
-  }
-
-  /**
-   * Returns an array of all the currently registered
-   * <code>BridgeMembershipListener</code>s. Modifications to the returned
-   * array will not effect the registration of these listeners.
-   * @return the registered <code>BridgeMembershipListener</code>s; an empty
-   * array if no listeners
-   * @deprecated
-   */
-  public static BridgeMembershipListener[] getBridgeMembershipListeners() {
-    startMonitoring();
-    // Synchronization is not needed because we never modify this list
-    // in place.
-    
-    List<BridgeMembershipListener> l = membershipListeners; // volatile fetch
-    // convert to an array
-    BridgeMembershipListener[] listeners = (BridgeMembershipListener[]) 
-        l.toArray(new BridgeMembershipListener[l.size()]);
-    return listeners;
-  }
-  
-  /**
-   * Returns an array of all the currently registered
-   * <code>ClientMembershipListener</code>s. Modifications to the returned array
-   * will not effect the registration of these listeners.
-   * 
-   * @return the registered <code>ClientMembershipListener</code>s; an empty
-   *         array if no listeners
-   */
-  public static ClientMembershipListener[] getClientMembershipListeners() {
-    startMonitoring();
-    // Synchronization is not needed because we never modify this list
-    // in place.
-
-    List<ClientMembershipListener> l = clientMembershipListeners; // volatile fetch
-    // convert to an array
-    ClientMembershipListener[] listeners = (ClientMembershipListener[]) l
-        .toArray(new ClientMembershipListener[l.size()]);
-    return listeners;
-  }
-
-  /**
-   * Removes registration of all currently registered
-   * <code>BridgeMembershipListener<code>s. and <code>ClientMembershipListener<code>s.
-   */
-  public static void unregisterAllListeners() {
-    startMonitoring();
-    synchronized (membershipLock) {
-      membershipListeners = new ArrayList<BridgeMembershipListener>();
-      clientMembershipListeners = new ArrayList<ClientMembershipListener>();
-    }
-  }
-  
-  
-  
-  /**
-   * Returns a map of client memberIds to count of connections to that client.
-   * The map entry key is a String representation of the client memberId, and
-   * the map entry value is an Integer count of connections to that client.
-   * Since a single client can have multiple ConnectionProxy objects, this 
-   * map will contain all the Connection objects across the ConnectionProxies
-   * @param onlyClientsNotifiedByThisServer true will return only those clients
-   * that are actively being updated by this server
-   * @return map of client memberIds to count of connections to that client
-   * 
-   * 
-   */
-  public static Map getConnectedClients(boolean onlyClientsNotifiedByThisServer) {
-    ClientHealthMonitor chMon = ClientHealthMonitor.getInstance();
-    Set filterProxyIDs = null;
-    if(onlyClientsNotifiedByThisServer) {
-      // Note it is not necessary to synchronize on the list of bridge servers here, 
-      // since this is only a status (snapshot) of the system.
-      for (Iterator bsii = CacheFactory.getAnyInstance().getBridgeServers().iterator(); bsii.hasNext(); ) {
-        BridgeServerImpl bsi = (BridgeServerImpl) bsii.next();
-        AcceptorImpl ai = bsi.getAcceptor();
-        if (ai != null && ai.getCacheClientNotifier() != null) {
-          if (filterProxyIDs != null) {
-            // notifierClients is a copy set from CacheClientNotifier
-            filterProxyIDs.addAll(ai.getCacheClientNotifier().getActiveClients());
-          }
-          else {
-            // notifierClients is a copy set from CacheClientNotifier
-            filterProxyIDs = ai.getCacheClientNotifier().getActiveClients();
-          }
-        }
-      }
-    }
-
-    Map map = chMon.getConnectedClients(filterProxyIDs);
-   /*if (onlyClientsNotifiedByThisServer) {
-      Map notifyMap = new HashMap();
-      
-      for (Iterator iter = map.keySet().iterator(); iter.hasNext();) {
-        String memberId = (String) iter.next();
-        if (notifierClients.contains(memberId)) {
-          // found memberId that is notified by this server
-          notifyMap.put(memberId, map.get(memberId));
-        }
-      }
-      map = notifyMap;
-    }*/
-    return map;
-  }
-  
-  /**
-   * This method returns the CacheClientStatus for all the clients that are
-   * connected to this server. This method returns all clients irrespective of
-   * whether subscription is enabled or not. 
-   * 
-   * @return Map of ClientProxyMembershipID against CacheClientStatus objects.
-   */
-  public static Map getStatusForAllClientsIgnoreSubscriptionStatus() {
-    Map result = new HashMap();
-    if (ClientHealthMonitor.getInstance() != null)
-      result = ClientHealthMonitor.getInstance().getStatusForAllClients();
-
-    return result;
-  }  
-
-  /**
-   * Caller must synchronize on cache.allBridgeServersLock
-   * @return all the clients
-   */
-  public static Map getConnectedClients() {
-
-    // Get all clients
-    Map allClients = new HashMap();
-    for (Iterator bsii = CacheFactory.getAnyInstance().getBridgeServers().iterator(); bsii.hasNext(); ) {
-      BridgeServerImpl bsi = (BridgeServerImpl) bsii.next();
-      AcceptorImpl ai = bsi.getAcceptor();
-      if (ai != null && ai.getCacheClientNotifier() != null) {
-        allClients.putAll(ai.getCacheClientNotifier().getAllClients());
-      }
-    }
-
-    // Fill in the missing info, if HealthMonitor started
-    if (ClientHealthMonitor.getInstance()!=null)
-        ClientHealthMonitor.getInstance().fillInClientInfo(allClients);
-
-    return allClients;
-  }
-
-  public static Map getClientQueueSizes() {
-    Map clientQueueSizes = new HashMap();
-    GemFireCacheImpl c =  (GemFireCacheImpl)CacheFactory.getAnyInstance();
-    if (c==null) // Add a NULL Check
-      return clientQueueSizes;
-
-    for (Iterator bsii = c.getBridgeServers().iterator(); bsii.hasNext(); ) {
-      BridgeServerImpl bsi = (BridgeServerImpl) bsii.next();
-      AcceptorImpl ai = bsi.getAcceptor();
-      if (ai != null && ai.getCacheClientNotifier() != null) {
-        clientQueueSizes.putAll(ai.getCacheClientNotifier().getClientQueueSizes());
-      }
-    } // for
-    return clientQueueSizes;
-  }
-
-  /**
-   * Returns a map of servers to count of pools connected to that server.
-   * The map entry key is a String representation of the server, 
-   * @return map of servers to count of pools using that server
-   */
-  public static Map getConnectedServers() {
-    final Map map = new HashMap(); // KEY:server (String), VALUE:List of active endpoints
-    // returns an unmodifiable set
-    Map/*<String,Pool>*/ poolMap = PoolManager.getAll();
-    Iterator pools = poolMap.values().iterator();
-    while(pools.hasNext()) {
-      PoolImpl pi = (PoolImpl)pools.next();
-      Map/*<ServerLocation,Endpoint>*/ eps = pi.getEndpointMap();
-      Iterator it = eps.entrySet().iterator();
-      while(it.hasNext()) {
-        Map.Entry entry = (Map.Entry)it.next();
-        ServerLocation loc = (ServerLocation)entry.getKey();
-        com.gemstone.gemfire.cache.client.internal.Endpoint ep = (com.gemstone.gemfire.cache.client.internal.Endpoint)entry.getValue();
-        String server = loc.getHostName()+"["+loc.getPort()+"]";
-        Integer count = (Integer)map.get(server);
-        if(count==null) {
-          map.put(server,Integer.valueOf(1));  
-        } else {
-          map.put(server,Integer.valueOf(count.intValue()+1));
-        }
-      }
-    }
-    return map;
-  }
-
-  public static Map getConnectedIncomingGateways() {
-    Map connectedIncomingGateways = null;
-    ClientHealthMonitor chMon = ClientHealthMonitor.getInstance();
-    if (chMon == null) {
-      connectedIncomingGateways = new HashMap();
-    } else {
-      connectedIncomingGateways = chMon.getConnectedIncomingGateways();
-    }
-    return connectedIncomingGateways;
-  }
-  
-  
-
-  /**
-   * Notifies registered listeners that a bridge member has joined. The new
-   * member may be a bridge client connecting to this process or a bridge
-   * server that this process has just connected to.
-   *
-   * @param member the <code>DistributedMember</code>
-   * @param client true if the member is a bridge client; false if bridge server
-   */
-  public static void notifyJoined(final DistributedMember member, final boolean client) {
-    startMonitoring();
-    ThreadPoolExecutor queuedExecutor = executor;
-    if (queuedExecutor == null) {
-      return;
-    }
-
-    final BridgeMembershipEvent event =
-        new InternalBridgeMembershipEvent(member, client);
-    if (forceSynchronous) {
-      doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_JOINED);
-      doNotifyBridgeMembershipListener(member, client, event,EventType.CLIENT_JOINED);
-    }
-    else {
-      try {
-          queuedExecutor.execute(new Runnable() {
-              public void run() {
-                doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_JOINED);
-                doNotifyBridgeMembershipListener(member, client, event,EventType.CLIENT_JOINED);
-              }
-            });
-      }
-      catch (RejectedExecutionException e) {
-        // executor must have been shutdown
-        }
-    }
-  }
-
-
-
-  /**
-   * Notifies registered listeners that a bridge member has left. The departed
-   * member may be a bridge client previously connected to this process or a
-   * bridge server that this process was connected to.
-   *
-   * @param member the <code>DistributedMember</code>
-   * @param client true if the member is a bridge client; false if bridge server
-   */
-  public static void notifyLeft(final DistributedMember member, final boolean client) {
-    startMonitoring();
-    ThreadPoolExecutor queuedExecutor = executor;
-    if (queuedExecutor == null) {
-      return;
-    }
-
-    
-    final BridgeMembershipEvent event =
-        new InternalBridgeMembershipEvent(member, client);
-    if (forceSynchronous) {
-      doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_LEFT);
-      doNotifyBridgeMembershipListener(member, client, event,EventType.CLIENT_LEFT);
-    }
-    else {
-      try {
-          queuedExecutor.execute(new Runnable() {
-              public void run() {
-                doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_LEFT);
-                doNotifyBridgeMembershipListener(member, client, event,EventType.CLIENT_LEFT);
-              }
-            });
-      }
-      catch (RejectedExecutionException e) {
-        // executor must have been shutdown
-        }
-    }
-  }
-
-
-  /**
-   * Notifies registered listeners that a bridge member has crashed. The
-   * departed member may be a bridge client previously connected to this
-   * process or a bridge server that this process was connected to.
-   *
-   * @param member the <code>DistributedMember</code>
-   * @param client true if the member is a bridge client; false if bridge server
-   */
-  public static void notifyCrashed(final DistributedMember member, final boolean client) {
-    ThreadPoolExecutor queuedExecutor = executor;
-    if (queuedExecutor == null) {
-      return;
-    }
-
-    final BridgeMembershipEvent event =
-        new InternalBridgeMembershipEvent(member, client);
-    if (forceSynchronous) {
-      doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_CRASHED);
-      doNotifyBridgeMembershipListener(member, client, event,EventType.CLIENT_CRASHED);
-    }
-    else {
-
-      try {
-          queuedExecutor.execute(new Runnable() {
-            public void run() {
-              doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_CRASHED);
-              doNotifyBridgeMembershipListener(member, client, event,EventType.CLIENT_CRASHED);
-            }
-          });
-      }
-      catch (RejectedExecutionException e) {
-        // executor must have been shutdown
-        }
-    }
-  }
-
-  private static void doNotifyClientMembershipListener(DistributedMember member, boolean client,
-      ClientMembershipEvent clientMembershipEvent, EventType eventType) {
-
-    for (Iterator<ClientMembershipListener> iter = clientMembershipListeners.iterator(); iter.hasNext();) {
-
-      ClientMembershipListener listener = iter.next();
-      try {
-        if (eventType.equals(EventType.CLIENT_JOINED)) {
-          listener.memberJoined(clientMembershipEvent);
-        } else if (eventType.equals(EventType.CLIENT_LEFT)) {
-          listener.memberLeft(clientMembershipEvent);
-        } else {
-          listener.memberCrashed(clientMembershipEvent);
-        }
-      } catch (CancelException e) {
-        // this can be thrown by a bridge server when the system is shutting
-        // down
-        return;
-      } catch (VirtualMachineError e) {
-        SystemFailure.initiateFailure(e);
-        throw e;
-      } catch (Throwable t) {
-        SystemFailure.checkFailure();
-        logger.warn(LocalizedMessage.create(LocalizedStrings.LocalRegion_UNEXPECTED_EXCEPTION), t);
-      }
-    }
-  }
-  
-  private static void doNotifyBridgeMembershipListener(DistributedMember member, boolean client,
-      BridgeMembershipEvent bridgeMembershipEvent, EventType eventType) {
-
-    for (Iterator<BridgeMembershipListener> iter = membershipListeners.iterator(); iter.hasNext();) {
-
-      BridgeMembershipListener listener = iter.next();
-      try {
-        if (eventType.equals(EventType.CLIENT_JOINED)) {
-          listener.memberJoined(bridgeMembershipEvent);
-        } else if (eventType.equals(EventType.CLIENT_LEFT)) {
-          listener.memberLeft(bridgeMembershipEvent);
-        } else {
-          listener.memberCrashed(bridgeMembershipEvent);
-        }
-      } catch (CancelException e) {
-        // this can be thrown by a bridge server when the system is shutting
-        // down
-        return;
-      } catch (VirtualMachineError e) {
-        SystemFailure.initiateFailure(e);
-        throw e;
-      } catch (Throwable t) {
-        SystemFailure.checkFailure();
-        logger.warn(LocalizedMessage.create(LocalizedStrings.LocalRegion_UNEXPECTED_EXCEPTION), t);
-      }
-    }
-  }
-  
-
-//  /**
-//   * Returns true if there are any registered
-//   * <code>BridgeMembershipListener</code>s.
-//   */
-//  private static boolean hasBridgeMembershipListeners() {
-//    synchronized (membershipLock) {
-//      return !membershipListeners.isEmpty();
-//    }
-//  }
-
-  protected static void addInternalDistributedSystem(InternalDistributedSystem s) {
-    synchronized(systems) {
-      s.addDisconnectListener(
-        new InternalDistributedSystem.DisconnectListener() {
-          @Override
-          public String toString() {
-            return "Disconnect listener for InternalBridgeMembership";
-          }
-          
-          public void onDisconnect(InternalDistributedSystem ss) {
-            removeInternalDistributedSystem(ss);
-          }
-        });
-      systems.add(s);
-      // make sure executor is alive
-      ensureExecutorIsRunning(); // optimized to do nothing if already running
-    }
-  }
-
-  protected static void removeInternalDistributedSystem(InternalDistributedSystem sys) {
-    synchronized(systems) {
-      systems.remove(sys);
-      if (systems.isEmpty()) {
-        // clean up executor
-/*
-Object[] queueElementsBefore = new Object[executorQueue.size()];
-queueElementsBefore = executorQueue.toArray(queueElementsBefore);
-System.out.println("Before shut down, the executor's queue contains the following " + queueElementsBefore.length + " elements");
-for (int i=0; i<queueElementsBefore.length; i++) {
-  System.out.println("\t" + queueElementsBefore[i]);
-}
-*/
-        if (executor != null) {
-          executor.shutdown();
-        }
-/*
-Object[] queueElementsAfter = new Object[executorQueue.size()];
-queueElementsAfter = executorQueue.toArray(queueElementsAfter);
-System.out.println("After shut down, the executor's queue contains the following " + queueElementsAfter.length + " elements");
-for (int i=0; i<queueElementsAfter.length; i++) {
-  System.out.println("\t" + queueElementsAfter[i]);
-}
-*/
-        // deadcoded this clear to fix bug 35675 - clearing removed the shutdown token from the queue!
-        // executorQueue.clear();
-        executor = null;
-      }
-    }
-  }
-
-  /**
-   * @guarded.By {@link #systems}
-   */
-  private static void ensureExecutorIsRunning() {
-    // protected by calling method synchronized on systems
-    if (executor == null) {
-      final ThreadGroup group = threadGroup;
-      ThreadFactory tf = new ThreadFactory() {
-          public Thread newThread(Runnable command) {
-            Thread thread =
-                new Thread(group, command, "BridgeMembership Event Invoker");
-            thread.setDaemon(true);
-            return thread;
-          }
-        };
-      LinkedBlockingQueue q = new LinkedBlockingQueue();
-      executor = new ThreadPoolExecutor(1, 1/*max unused*/,
-                                        15, TimeUnit.SECONDS, q, tf);
-    }
-  }
-
-  /**
-   * Internal implementation of BridgeMembershipEvent.
-   */
-  protected static class InternalBridgeMembershipEvent
-  implements BridgeMembershipEvent,ClientMembershipEvent {
-
-    private final DistributedMember member;
-    private final boolean client;
-
-    /** Constructs new instance of event */
-    protected InternalBridgeMembershipEvent(DistributedMember member, boolean client) {
-      this.member = member;
-      this.client = client;
-    }
-
-    public DistributedMember getMember() {
-      return this.member;
-    }
-
-    public String getMemberId() {
-      return this.member == null ? "unknown" : this.member.getId();
-    }
-
-    public boolean isClient() {
-      return this.client;
-    }
-
-    @Override // GemStoneAddition
-    public String toString() {
-      final StringBuffer sb = new StringBuffer("[BridgeMembershipEvent: ");
-      sb.append("member=").append(this.member);
-      sb.append(", isClient=").append(this.client);
-      sb.append("]");
-      return sb.toString();
-    }
-  }
-  
-  /** If set to true for testing then notification will be synchronous */
-  private static boolean forceSynchronous = false;
-  /** Set to true if synchronous notification is needed for testing */
-  public static void setForceSynchronous(boolean value) {
-    forceSynchronous = value;
-  }
-  
-  private static enum EventType{
-    CLIENT_JOINED,
-    CLIENT_LEFT,
-    CLIENT_CRASHED
-  }
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/InternalClientMembership.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/InternalClientMembership.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/InternalClientMembership.java
new file mode 100755
index 0000000..22fa0e3
--- /dev/null
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/InternalClientMembership.java
@@ -0,0 +1,617 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+package com.gemstone.gemfire.internal.cache.tier;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.RejectedExecutionException;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.logging.log4j.Logger;
+
+import com.gemstone.gemfire.CancelException;
+import com.gemstone.gemfire.SystemFailure;
+import com.gemstone.gemfire.cache.CacheFactory;
+import com.gemstone.gemfire.cache.client.PoolManager;
+import com.gemstone.gemfire.cache.client.internal.PoolImpl;
+import com.gemstone.gemfire.distributed.DistributedMember;
+import com.gemstone.gemfire.distributed.DistributedSystemDisconnectedException;
+import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
+import com.gemstone.gemfire.distributed.internal.ServerLocation;
+import com.gemstone.gemfire.internal.cache.CacheServerImpl;
+import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
+import com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl;
+import com.gemstone.gemfire.internal.cache.tier.sockets.ClientHealthMonitor;
+import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
+import com.gemstone.gemfire.internal.logging.LogService;
+import com.gemstone.gemfire.internal.logging.LoggingThreadGroup;
+import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
+import com.gemstone.gemfire.management.membership.ClientMembershipEvent;
+import com.gemstone.gemfire.management.membership.ClientMembershipListener;
+
+/**
+ * Handles registration and event notification duties for
+ * <code>ClientMembershipListener</code>s. The public counterpart for this
+ * class is {@link com.gemstone.gemfire.management.membership.ClientMembership}.
+ *
+ * @author Kirk Lund
+ * @since 4.2.1
+ */
+public final class InternalClientMembership  {
+
+  private static final Logger logger = LogService.getLogger();
+  
+  /** 
+   * The membership listeners registered on this InternalClientMembership
+   * 
+   * This list is never modified in place, and a new list is installed
+   * only under the control of (@link #membershipLock}.
+   */
+  private static volatile List<ClientMembershipListener> clientMembershipListeners = Collections.emptyList();
+  
+  /**
+   * Must be locked whenever references to the volatile field 
+   * {@link #membershipListeners} is changed.
+   */
+  private static final Object membershipLock = new Object();
+
+  /** 
+   * QueuedExecutor for firing ClientMembershipEvents 
+   *
+   * Access synchronized via {@link #systems}
+   */
+  private static ThreadPoolExecutor executor;
+
+  private static final ThreadGroup threadGroup =
+      LoggingThreadGroup.createThreadGroup(
+          "ClientMembership Event Invoker Group", logger);
+
+  /** List of connected <code>DistributedSystem</code>s */
+  private static final List systems = new ArrayList(1);
+
+  /**
+   * True if class is monitoring systems
+   * 
+   * @guarded.By InternalClientMembership.class
+   */
+  private static boolean isMonitoring = false;
+  
+  /**
+   * This work used to be in a class initializer.  Unfortunately, this allowed
+   * the class to escape before it was fully initialized, so now we just
+   * make sure this work is done before any public static method on it
+   * is invoked.
+   */
+  private static synchronized void startMonitoring() {
+    if (isMonitoring) {
+      return;
+    }
+    
+    synchronized(systems) {
+      // Initialize our own list of distributed systems via a connect listener
+      List existingSystems = InternalDistributedSystem.addConnectListener(
+        new InternalDistributedSystem.ConnectListener() {
+          public void onConnect(InternalDistributedSystem sys) {
+            addInternalDistributedSystem(sys);
+          }
+        });
+      
+      isMonitoring = true;
+      
+      // While still holding the lock on systems, add all currently known
+      // systems to our own list
+      for (Iterator iter = existingSystems.iterator(); iter.hasNext();) {
+        InternalDistributedSystem sys = (InternalDistributedSystem) iter.next();
+        try {
+          if (sys.isConnected()) {
+            addInternalDistributedSystem(sys);
+          }
+        }
+        catch (DistributedSystemDisconnectedException e) {
+          // it doesn't care (bug 37379)
+        }
+      }
+      
+    } // synchronized
+  }
+  
+  private InternalClientMembership() {}
+
+  /**
+   * Registers a {@link ClientMembershipListener} for notification of connection
+   * changes for CacheServer and clients.
+   * 
+   * @param listener
+   *          a ClientMembershipListener to be registered
+   */
+  public static void registerClientMembershipListener(ClientMembershipListener listener) {
+    startMonitoring();
+    synchronized (membershipLock) {
+      List<ClientMembershipListener> oldListeners = clientMembershipListeners;
+      if (!oldListeners.contains(listener)) {
+        List<ClientMembershipListener> newListeners = new ArrayList<ClientMembershipListener>(oldListeners);
+        newListeners.add(listener);
+        clientMembershipListeners = newListeners;
+      }
+    }
+  }
+  
+  /**
+   * Removes registration of a previously registered
+   * {@link ClientMembershipListener}.
+   * 
+   * @param listener
+   *          a ClientMembershipListener to be unregistered
+   */
+  public static void unregisterClientMembershipListener(ClientMembershipListener listener) {
+    startMonitoring();
+    synchronized (membershipLock) {
+      List<ClientMembershipListener> oldListeners = clientMembershipListeners;
+      if (oldListeners.contains(listener)) {
+        List<ClientMembershipListener> newListeners = new ArrayList<ClientMembershipListener>(oldListeners);
+        if (newListeners.remove(listener)) {
+          clientMembershipListeners = newListeners;
+        }
+      }
+    }
+  }
+
+  /**
+   * Returns an array of all the currently registered
+   * <code>ClientMembershipListener</code>s. Modifications to the returned array
+   * will not effect the registration of these listeners.
+   * 
+   * @return the registered <code>ClientMembershipListener</code>s; an empty
+   *         array if no listeners
+   */
+  public static ClientMembershipListener[] getClientMembershipListeners() {
+    startMonitoring();
+    // Synchronization is not needed because we never modify this list
+    // in place.
+
+    List<ClientMembershipListener> l = clientMembershipListeners; // volatile fetch
+    // convert to an array
+    ClientMembershipListener[] listeners = (ClientMembershipListener[]) l
+        .toArray(new ClientMembershipListener[l.size()]);
+    return listeners;
+  }
+
+  /**
+   * Removes registration of all currently registered
+   * <code>ClientMembershipListener<code>s. and <code>ClientMembershipListener<code>s.
+   */
+  public static void unregisterAllListeners() {
+    startMonitoring();
+    synchronized (membershipLock) {
+      clientMembershipListeners = new ArrayList<ClientMembershipListener>();
+    }
+  }
+  
+  
+  
+  /**
+   * Returns a map of client memberIds to count of connections to that client.
+   * The map entry key is a String representation of the client memberId, and
+   * the map entry value is an Integer count of connections to that client.
+   * Since a single client can have multiple ConnectionProxy objects, this 
+   * map will contain all the Connection objects across the ConnectionProxies
+   * @param onlyClientsNotifiedByThisServer true will return only those clients
+   * that are actively being updated by this server
+   * @return map of client memberIds to count of connections to that client
+   * 
+   * 
+   */
+  public static Map getConnectedClients(boolean onlyClientsNotifiedByThisServer) {
+    ClientHealthMonitor chMon = ClientHealthMonitor.getInstance();
+    Set filterProxyIDs = null;
+    if(onlyClientsNotifiedByThisServer) {
+      // Note it is not necessary to synchronize on the list of Client servers here, 
+      // since this is only a status (snapshot) of the system.
+      for (Iterator bsii = CacheFactory.getAnyInstance().getCacheServers().iterator(); bsii.hasNext(); ) {
+        CacheServerImpl bsi = (CacheServerImpl) bsii.next();
+        AcceptorImpl ai = bsi.getAcceptor();
+        if (ai != null && ai.getCacheClientNotifier() != null) {
+          if (filterProxyIDs != null) {
+            // notifierClients is a copy set from CacheClientNotifier
+            filterProxyIDs.addAll(ai.getCacheClientNotifier().getActiveClients());
+          }
+          else {
+            // notifierClients is a copy set from CacheClientNotifier
+            filterProxyIDs = ai.getCacheClientNotifier().getActiveClients();
+          }
+        }
+      }
+    }
+
+    Map map = chMon.getConnectedClients(filterProxyIDs);
+   /*if (onlyClientsNotifiedByThisServer) {
+      Map notifyMap = new HashMap();
+      
+      for (Iterator iter = map.keySet().iterator(); iter.hasNext();) {
+        String memberId = (String) iter.next();
+        if (notifierClients.contains(memberId)) {
+          // found memberId that is notified by this server
+          notifyMap.put(memberId, map.get(memberId));
+        }
+      }
+      map = notifyMap;
+    }*/
+    return map;
+  }
+  
+  /**
+   * This method returns the CacheClientStatus for all the clients that are
+   * connected to this server. This method returns all clients irrespective of
+   * whether subscription is enabled or not. 
+   * 
+   * @return Map of ClientProxyMembershipID against CacheClientStatus objects.
+   */
+  public static Map getStatusForAllClientsIgnoreSubscriptionStatus() {
+    Map result = new HashMap();
+    if (ClientHealthMonitor.getInstance() != null)
+      result = ClientHealthMonitor.getInstance().getStatusForAllClients();
+
+    return result;
+  }  
+
+  /**
+   * Caller must synchronize on cache.allClientServersLock
+   * @return all the clients
+   */
+  public static Map getConnectedClients() {
+
+    // Get all clients
+    Map allClients = new HashMap();
+    for (Iterator bsii = CacheFactory.getAnyInstance().getCacheServers().iterator(); bsii.hasNext(); ) {
+      CacheServerImpl bsi = (CacheServerImpl) bsii.next();
+      AcceptorImpl ai = bsi.getAcceptor();
+      if (ai != null && ai.getCacheClientNotifier() != null) {
+        allClients.putAll(ai.getCacheClientNotifier().getAllClients());
+      }
+    }
+
+    // Fill in the missing info, if HealthMonitor started
+    if (ClientHealthMonitor.getInstance()!=null)
+        ClientHealthMonitor.getInstance().fillInClientInfo(allClients);
+
+    return allClients;
+  }
+
+  public static Map getClientQueueSizes() {
+    Map clientQueueSizes = new HashMap();
+    GemFireCacheImpl c =  (GemFireCacheImpl)CacheFactory.getAnyInstance();
+    if (c==null) // Add a NULL Check
+      return clientQueueSizes;
+
+    for (Iterator bsii = c.getCacheServers().iterator(); bsii.hasNext(); ) {
+      CacheServerImpl bsi = (CacheServerImpl) bsii.next();
+      AcceptorImpl ai = bsi.getAcceptor();
+      if (ai != null && ai.getCacheClientNotifier() != null) {
+        clientQueueSizes.putAll(ai.getCacheClientNotifier().getClientQueueSizes());
+      }
+    } // for
+    return clientQueueSizes;
+  }
+
+  /**
+   * Returns a map of servers to count of pools connected to that server.
+   * The map entry key is a String representation of the server, 
+   * @return map of servers to count of pools using that server
+   */
+  public static Map getConnectedServers() {
+    final Map map = new HashMap(); // KEY:server (String), VALUE:List of active endpoints
+    // returns an unmodifiable set
+    Map/*<String,Pool>*/ poolMap = PoolManager.getAll();
+    Iterator pools = poolMap.values().iterator();
+    while(pools.hasNext()) {
+      PoolImpl pi = (PoolImpl)pools.next();
+      Map/*<ServerLocation,Endpoint>*/ eps = pi.getEndpointMap();
+      Iterator it = eps.entrySet().iterator();
+      while(it.hasNext()) {
+        Map.Entry entry = (Map.Entry)it.next();
+        ServerLocation loc = (ServerLocation)entry.getKey();
+        com.gemstone.gemfire.cache.client.internal.Endpoint ep = (com.gemstone.gemfire.cache.client.internal.Endpoint)entry.getValue();
+        String server = loc.getHostName()+"["+loc.getPort()+"]";
+        Integer count = (Integer)map.get(server);
+        if(count==null) {
+          map.put(server,Integer.valueOf(1));  
+        } else {
+          map.put(server,Integer.valueOf(count.intValue()+1));
+        }
+      }
+    }
+    return map;
+  }
+
+  public static Map getConnectedIncomingGateways() {
+    Map connectedIncomingGateways = null;
+    ClientHealthMonitor chMon = ClientHealthMonitor.getInstance();
+    if (chMon == null) {
+      connectedIncomingGateways = new HashMap();
+    } else {
+      connectedIncomingGateways = chMon.getConnectedIncomingGateways();
+    }
+    return connectedIncomingGateways;
+  }
+  
+  
+
+  /**
+   * 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</code>
+   * @param client true if the member is a client; false if server
+   */
+  public static void notifyJoined(final DistributedMember member, final boolean client) {
+    startMonitoring();
+    ThreadPoolExecutor queuedExecutor = executor;
+    if (queuedExecutor == null) {
+      return;
+    }
+
+    final ClientMembershipEvent event =
+        new InternalClientMembershipEvent(member, client);
+    if (forceSynchronous) {
+      doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_JOINED);
+    }
+    else {
+      try {
+          queuedExecutor.execute(new Runnable() {
+              public void run() {
+                doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_JOINED);
+              }
+            });
+      }
+      catch (RejectedExecutionException e) {
+        // executor must have been shutdown
+        }
+    }
+  }
+
+
+
+  /**
+   * Notifies registered listeners that a member has left. The departed
+   * member may be a client previously connected to this process or a
+   * server that this process was connected to.
+   *
+   * @param member the <code>DistributedMember</code>
+   * @param client true if the member is a client; false if server
+   */
+  public static void notifyLeft(final DistributedMember member, final boolean client) {
+    startMonitoring();
+    ThreadPoolExecutor queuedExecutor = executor;
+    if (queuedExecutor == null) {
+      return;
+    }
+
+    
+    final ClientMembershipEvent event =
+        new InternalClientMembershipEvent(member, client);
+    if (forceSynchronous) {
+      doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_LEFT);
+    }
+    else {
+      try {
+          queuedExecutor.execute(new Runnable() {
+              public void run() {
+                doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_LEFT);
+              }
+            });
+      }
+      catch (RejectedExecutionException e) {
+        // executor must have been shutdown
+        }
+    }
+  }
+
+
+  /**
+   * Notifies registered listeners that a member has crashed. The
+   * departed member may be a client previously connected to this
+   * process or a server that this process was connected to.
+   *
+   * @param member the <code>DistributedMember</code>
+   * @param client true if the member is a client; false if server
+   */
+  public static void notifyCrashed(final DistributedMember member, final boolean client) {
+    ThreadPoolExecutor queuedExecutor = executor;
+    if (queuedExecutor == null) {
+      return;
+    }
+
+    final ClientMembershipEvent event =
+        new InternalClientMembershipEvent(member, client);
+    if (forceSynchronous) {
+      doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_CRASHED);
+    }
+    else {
+
+      try {
+          queuedExecutor.execute(new Runnable() {
+            public void run() {
+              doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_CRASHED);
+            }
+          });
+      }
+      catch (RejectedExecutionException e) {
+        // executor must have been shutdown
+        }
+    }
+  }
+
+  private static void doNotifyClientMembershipListener(DistributedMember member, boolean client,
+      ClientMembershipEvent clientMembershipEvent, EventType eventType) {
+
+    for (Iterator<ClientMembershipListener> iter = clientMembershipListeners.iterator(); iter.hasNext();) {
+
+      ClientMembershipListener listener = iter.next();
+      try {
+        if (eventType.equals(EventType.CLIENT_JOINED)) {
+          listener.memberJoined(clientMembershipEvent);
+        } else if (eventType.equals(EventType.CLIENT_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(LocalizedMessage.create(LocalizedStrings.LocalRegion_UNEXPECTED_EXCEPTION), t);
+      }
+    }
+  }
+  
+//  /**
+//   * Returns true if there are any registered
+//   * <code>ClientMembershipListener</code>s.
+//   */
+//  private static boolean hasClientMembershipListeners() {
+//    synchronized (membershipLock) {
+//      return !membershipListeners.isEmpty();
+//    }
+//  }
+
+  protected static void addInternalDistributedSystem(InternalDistributedSystem s) {
+    synchronized(systems) {
+      s.addDisconnectListener(
+        new InternalDistributedSystem.DisconnectListener() {
+          @Override
+          public String toString() {
+            return "Disconnect listener for InternalClientMembership";
+          }
+          
+          public void onDisconnect(InternalDistributedSystem ss) {
+            removeInternalDistributedSystem(ss);
+          }
+        });
+      systems.add(s);
+      // make sure executor is alive
+      ensureExecutorIsRunning(); // optimized to do nothing if already running
+    }
+  }
+
+  protected static void removeInternalDistributedSystem(InternalDistributedSystem sys) {
+    synchronized(systems) {
+      systems.remove(sys);
+      if (systems.isEmpty()) {
+        // clean up executor
+/*
+Object[] queueElementsBefore = new Object[executorQueue.size()];
+queueElementsBefore = executorQueue.toArray(queueElementsBefore);
+System.out.println("Before shut down, the executor's queue contains the following " + queueElementsBefore.length + " elements");
+for (int i=0; i<queueElementsBefore.length; i++) {
+  System.out.println("\t" + queueElementsBefore[i]);
+}
+*/
+        if (executor != null) {
+          executor.shutdown();
+        }
+/*
+Object[] queueElementsAfter = new Object[executorQueue.size()];
+queueElementsAfter = executorQueue.toArray(queueElementsAfter);
+System.out.println("After shut down, the executor's queue contains the following " + queueElementsAfter.length + " elements");
+for (int i=0; i<queueElementsAfter.length; i++) {
+  System.out.println("\t" + queueElementsAfter[i]);
+}
+*/
+        // deadcoded this clear to fix bug 35675 - clearing removed the shutdown token from the queue!
+        // executorQueue.clear();
+        executor = null;
+      }
+    }
+  }
+
+  /**
+   * @guarded.By {@link #systems}
+   */
+  private static void ensureExecutorIsRunning() {
+    // protected by calling method synchronized on systems
+    if (executor == null) {
+      final ThreadGroup group = threadGroup;
+      ThreadFactory tf = new ThreadFactory() {
+          public Thread newThread(Runnable command) {
+            Thread thread =
+                new Thread(group, command, "ClientMembership Event Invoker");
+            thread.setDaemon(true);
+            return thread;
+          }
+        };
+      LinkedBlockingQueue q = new LinkedBlockingQueue();
+      executor = new ThreadPoolExecutor(1, 1/*max unused*/,
+                                        15, TimeUnit.SECONDS, q, tf);
+    }
+  }
+
+  /**
+   * Internal implementation of ClientMembershipEvent.
+   */
+  protected static class InternalClientMembershipEvent
+  implements ClientMembershipEvent {
+
+    private final DistributedMember member;
+    private final boolean client;
+
+    /** Constructs new instance of event */
+    protected InternalClientMembershipEvent(DistributedMember member, boolean client) {
+      this.member = member;
+      this.client = client;
+    }
+
+    public DistributedMember getMember() {
+      return this.member;
+    }
+
+    public String getMemberId() {
+      return this.member == null ? "unknown" : this.member.getId();
+    }
+
+    public boolean isClient() {
+      return this.client;
+    }
+
+    @Override // GemStoneAddition
+    public String toString() {
+      final StringBuffer sb = new StringBuffer("[ClientMembershipEvent: ");
+      sb.append("member=").append(this.member);
+      sb.append(", isClient=").append(this.client);
+      sb.append("]");
+      return sb.toString();
+    }
+  }
+  
+  /** If set to true for testing then notification will be synchronous */
+  private static boolean forceSynchronous = false;
+  /** Set to true if synchronous notification is needed for testing */
+  public static void setForceSynchronous(boolean value) {
+    forceSynchronous = value;
+  }
+  
+  private static enum EventType{
+    CLIENT_JOINED,
+    CLIENT_LEFT,
+    CLIENT_CRASHED
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/AcceptorImpl.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/AcceptorImpl.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/AcceptorImpl.java
index aac9176..74cdfa9 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/AcceptorImpl.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/AcceptorImpl.java
@@ -58,7 +58,7 @@ import com.gemstone.gemfire.ToDataException;
 import com.gemstone.gemfire.cache.Cache;
 import com.gemstone.gemfire.cache.RegionDestroyedException;
 import com.gemstone.gemfire.cache.client.internal.PoolImpl;
-import com.gemstone.gemfire.cache.util.BridgeServer;
+import com.gemstone.gemfire.cache.server.CacheServer;
 import com.gemstone.gemfire.cache.wan.GatewayTransportFilter;
 import com.gemstone.gemfire.distributed.internal.DM;
 import com.gemstone.gemfire.distributed.internal.DistributionConfig;
@@ -91,8 +91,6 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
  * Implements the acceptor thread on the bridge server. Accepts connections from
  * the edge and starts up threads to process requests from these.
  * 
- * @see com.gemstone.gemfire.cache.util.BridgeServer
- * 
  * @author Sudhir Menon
  * @since 2.0.2
  */
@@ -328,7 +326,7 @@ public class AcceptorImpl extends Acceptor implements Runnable
     }
     {
       int tmp_maxThreads = maxThreads;
-      if (maxThreads == BridgeServer.DEFAULT_MAX_THREADS) {
+      if (maxThreads == CacheServer.DEFAULT_MAX_THREADS) {
         // consult system properties for 5.0.2 backwards compatibility
         if (DEPRECATED_SELECTOR) {
           tmp_maxThreads = DEPRECATED_SELECTOR_POOL_SIZE;
@@ -534,7 +532,7 @@ public class AcceptorImpl extends Acceptor implements Runnable
       this.localPort = port;
       String sockName = this.serverSock.getLocalSocketAddress().toString();
       logger.info(LocalizedMessage.create(
-          LocalizedStrings.AcceptorImpl_BRIDGE_SERVER_CONNECTION_LISTENER_BOUND_TO_ADDRESS_0_WITH_BACKLOG_1,
+          LocalizedStrings.AcceptorImpl_CACHE_SERVER_CONNECTION_LISTENER_BOUND_TO_ADDRESS_0_WITH_BACKLOG_1,
           new Object[] {sockName, Integer.valueOf(backLog)}));
       if(isGatewayReceiver){
         this.stats = GatewayReceiverStats.createGatewayReceiverStats(sockName);
@@ -1357,7 +1355,7 @@ public class AcceptorImpl extends Acceptor implements Runnable
         if (isRunning()) {
           if (!this.loggedAcceptError) {
             this.loggedAcceptError = true;
-            logger.error(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_BRIDGE_SERVER_UNEXPECTED_IOEXCEPTION_FROM_ACCEPT, e));
+            logger.error(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_CACHE_SERVER_UNEXPECTED_IOEXCEPTION_FROM_ACCEPT, e));
           }
           // Why sleep?
           // try {Thread.sleep(3000);} catch (InterruptedException ie) {}
@@ -1370,7 +1368,7 @@ public class AcceptorImpl extends Acceptor implements Runnable
       catch (Exception e) {
         closeSocket(s);
         if (isRunning()) {
-          logger.fatal(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_BRIDGE_SERVER_UNEXPECTED_EXCEPTION, e));
+          logger.fatal(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_CACHE_SERVER_UNEXPECTED_EXCEPTION, e));
         }
       }
     }
@@ -1410,10 +1408,10 @@ public class AcceptorImpl extends Acceptor implements Runnable
                 if (!AcceptorImpl.this.loggedAcceptError) {
                   AcceptorImpl.this.loggedAcceptError = true;
                   if (ex instanceof SocketTimeoutException) {
-                    logger.warn(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_BRIDGE_SERVER_FAILED_ACCEPTING_CLIENT_CONNECTION_DUE_TO_SOCKET_TIMEOUT));
+                    logger.warn(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_CACHE_SERVER_FAILED_ACCEPTING_CLIENT_CONNECTION_DUE_TO_SOCKET_TIMEOUT));
                   }
                   else {
-                    logger.warn(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_BRIDGE_SERVER_FAILED_ACCEPTING_CLIENT_CONNECTION__0, ex), ex);
+                    logger.warn(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_CACHE_SERVER_FAILED_ACCEPTING_CLIENT_CONNECTION__0, ex), ex);
                   }
                 }
               }
@@ -1487,7 +1485,7 @@ public class AcceptorImpl extends Acceptor implements Runnable
         SystemTimer.SystemTimerTask st = new SystemTimer.SystemTimerTask() {
           @Override
           public void run2() {
-            logger.warn(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_BRIDGE_SERVER_TIMED_OUT_WAITING_FOR_HANDSHAKE_FROM__0, s.getRemoteSocketAddress()));
+            logger.warn(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_CACHE_SERVER_TIMED_OUT_WAITING_FOR_HANDSHAKE_FROM__0, s.getRemoteSocketAddress()));
             closeSocket(s);
           }
         };
@@ -1636,7 +1634,7 @@ public class AcceptorImpl extends Acceptor implements Runnable
     try {
       synchronized (syncLock) {
         this.shutdown = true;
-        logger.info(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_BRIDGE_SERVER_ON_PORT_0_IS_SHUTTING_DOWN, this.localPort)); 
+        logger.info(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_CACHE_SERVER_ON_PORT_0_IS_SHUTTING_DOWN, this.localPort)); 
         if (this.thread != null) {
           this.thread.interrupt();
         }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientNotifier.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientNotifier.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientNotifier.java
index deddfd1..b1464b9 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientNotifier.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientNotifier.java
@@ -77,10 +77,10 @@ import com.gemstone.gemfire.internal.SocketCloser;
 import com.gemstone.gemfire.internal.SocketUtils;
 import com.gemstone.gemfire.internal.SystemTimer;
 import com.gemstone.gemfire.internal.Version;
-import com.gemstone.gemfire.internal.cache.BridgeObserver;
-import com.gemstone.gemfire.internal.cache.BridgeObserverHolder;
-import com.gemstone.gemfire.internal.cache.BridgeRegionEventImpl;
-import com.gemstone.gemfire.internal.cache.BridgeServerImpl;
+import com.gemstone.gemfire.internal.cache.ClientServerObserver;
+import com.gemstone.gemfire.internal.cache.ClientServerObserverHolder;
+import com.gemstone.gemfire.internal.cache.ClientRegionEventImpl;
+import com.gemstone.gemfire.internal.cache.CacheServerImpl;
 import com.gemstone.gemfire.internal.cache.CacheClientStatus;
 import com.gemstone.gemfire.internal.cache.CacheDistributionAdvisor;
 import com.gemstone.gemfire.internal.cache.CachedDeserializable;
@@ -1103,7 +1103,7 @@ public class CacheClientNotifier {
           removeClientProxy(proxy);
 
           if (PoolImpl.AFTER_QUEUE_DESTROY_MESSAGE_FLAG) {
-            BridgeObserver bo = BridgeObserverHolder.getInstance();
+            ClientServerObserver bo = ClientServerObserverHolder.getInstance();
             bo.afterQueueDestroyMessage();
           }
 
@@ -1159,8 +1159,8 @@ public class CacheClientNotifier {
       RegionEventImpl regionEvent = (RegionEventImpl)event;
       callbackArgument = regionEvent.getRawCallbackArgument();
       eventIdentifier = regionEvent.getEventId();
-      if (event instanceof BridgeRegionEventImpl) {
-        BridgeRegionEventImpl bridgeEvent = (BridgeRegionEventImpl)event;
+      if (event instanceof ClientRegionEventImpl) {
+        ClientRegionEventImpl bridgeEvent = (ClientRegionEventImpl)event;
         membershipID = bridgeEvent.getContext();
       }
     }
@@ -2138,7 +2138,7 @@ public class CacheClientNotifier {
         && !HARegionQueue.HA_EVICTION_POLICY_NONE.equals(overflowAttributesList
             .get(0))) {
       haContainer = new HAContainerRegion(cache.getRegion(Region.SEPARATOR
-          + BridgeServerImpl.clientMessagesRegion((GemFireCacheImpl)cache,
+          + CacheServerImpl.clientMessagesRegion((GemFireCacheImpl)cache,
               (String)overflowAttributesList.get(0),
               ((Integer)overflowAttributesList.get(1)).intValue(),
               ((Integer)overflowAttributesList.get(2)).intValue(),

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java
index 85c7493..9cfbbbe 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java
@@ -66,8 +66,8 @@ import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
 import com.gemstone.gemfire.internal.SystemTimer;
 import com.gemstone.gemfire.internal.SystemTimer.SystemTimerTask;
 import com.gemstone.gemfire.internal.Version;
-import com.gemstone.gemfire.internal.cache.BridgeObserver;
-import com.gemstone.gemfire.internal.cache.BridgeObserverHolder;
+import com.gemstone.gemfire.internal.cache.ClientServerObserver;
+import com.gemstone.gemfire.internal.cache.ClientServerObserverHolder;
 import com.gemstone.gemfire.internal.cache.CacheDistributionAdvisee;
 import com.gemstone.gemfire.internal.cache.CacheDistributionAdvisor.InitialImageAdvice;
 import com.gemstone.gemfire.internal.cache.Conflatable;
@@ -2796,7 +2796,7 @@ public class CacheClientProxy implements ClientSession {
             latestValue);
         
         if (AFTER_MESSAGE_CREATION_FLAG) {
-          BridgeObserver bo = BridgeObserverHolder.getInstance();
+          ClientServerObserver bo = ClientServerObserverHolder.getInstance();
           bo.afterMessageCreation(message);
         }
      }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientUpdater.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientUpdater.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientUpdater.java
index 64731d1..07dc030 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientUpdater.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientUpdater.java
@@ -65,8 +65,8 @@ import com.gemstone.gemfire.internal.SocketCreator;
 import com.gemstone.gemfire.internal.SocketUtils;
 import com.gemstone.gemfire.internal.StatisticsTypeFactoryImpl;
 import com.gemstone.gemfire.internal.Version;
-import com.gemstone.gemfire.internal.cache.BridgeObserver;
-import com.gemstone.gemfire.internal.cache.BridgeObserverHolder;
+import com.gemstone.gemfire.internal.cache.ClientServerObserver;
+import com.gemstone.gemfire.internal.cache.ClientServerObserverHolder;
 import com.gemstone.gemfire.internal.cache.EntryEventImpl;
 import com.gemstone.gemfire.internal.cache.EventID;
 import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
@@ -1273,7 +1273,7 @@ public class CacheClientUpdater extends Thread implements ClientUpdater,
       
       // // CALLBACK TESTING PURPOSE ONLY ////
       if (PoolImpl.IS_INSTANTIATOR_CALLBACK) {
-        BridgeObserver bo = BridgeObserverHolder.getInstance();
+        ClientServerObserver bo = ClientServerObserverHolder.getInstance();
         bo.afterReceivingFromServer(eventId);
       }
       // /////////////////////////////////////
@@ -1323,7 +1323,7 @@ public class CacheClientUpdater extends Thread implements ClientUpdater,
       
       // // CALLBACK TESTING PURPOSE ONLY ////
       if (PoolImpl.IS_INSTANTIATOR_CALLBACK) {
-        BridgeObserver bo = BridgeObserverHolder.getInstance();
+        ClientServerObserver bo = ClientServerObserverHolder.getInstance();
         bo.afterReceivingFromServer(eventId);
       }
      ///////////////////////////////////////
@@ -1794,7 +1794,7 @@ public class CacheClientUpdater extends Thread implements ClientUpdater,
             if (errMessage == null) {
               errMessage = "";
             }
-            BridgeObserver bo = BridgeObserverHolder.getInstance();
+            ClientServerObserver bo = ClientServerObserverHolder.getInstance();
             bo.beforeFailoverByCacheClientUpdater(this.location);
             eManager.serverCrashed(this.endpoint);
             if (isDebugEnabled) {
@@ -1811,7 +1811,7 @@ public class CacheClientUpdater extends Thread implements ClientUpdater,
         catch (Exception e) {
           if (!quitting()) {
             this.endPointDied = true;
-            BridgeObserver bo = BridgeObserverHolder.getInstance();
+            ClientServerObserver bo = ClientServerObserverHolder.getInstance();
             bo.beforeFailoverByCacheClientUpdater(this.location);
             eManager.serverCrashed(this.endpoint);
             String message = ": Caught the following exception and will exit: ";

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientBlacklistProcessor.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientBlacklistProcessor.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientBlacklistProcessor.java
index 01bcfac..73c3731 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientBlacklistProcessor.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientBlacklistProcessor.java
@@ -17,7 +17,7 @@ import com.gemstone.gemfire.distributed.internal.PooledDistributionMessage;
 import com.gemstone.gemfire.distributed.internal.ReplyException;
 import com.gemstone.gemfire.distributed.internal.ReplyMessage;
 import com.gemstone.gemfire.distributed.internal.ReplyProcessor21;
-import com.gemstone.gemfire.internal.cache.BridgeServerImpl;
+import com.gemstone.gemfire.internal.cache.CacheServerImpl;
 import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
 
 import java.io.DataInput;
@@ -96,7 +96,7 @@ public class ClientBlacklistProcessor extends ReplyProcessor21 {
           if (l != null) {
             Iterator i = l.iterator();
             while (i.hasNext()) {
-              BridgeServerImpl bs = (BridgeServerImpl)i.next();
+              CacheServerImpl bs = (CacheServerImpl)i.next();
               CacheClientNotifier ccn = bs.getAcceptor().getCacheClientNotifier(); 
               //add client to the black list.
               ccn.addToBlacklistedClient(this.proxyId);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/RemoveClientFromBlacklistMessage.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/RemoveClientFromBlacklistMessage.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/RemoveClientFromBlacklistMessage.java
index 3e57a1b..6f0e033 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/RemoveClientFromBlacklistMessage.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/RemoveClientFromBlacklistMessage.java
@@ -21,7 +21,7 @@ import com.gemstone.gemfire.cache.Cache;
 import com.gemstone.gemfire.distributed.DistributedSystem;
 import com.gemstone.gemfire.distributed.internal.DistributionManager;
 import com.gemstone.gemfire.distributed.internal.PooledDistributionMessage;
-import com.gemstone.gemfire.internal.cache.BridgeServerImpl;
+import com.gemstone.gemfire.internal.cache.CacheServerImpl;
 import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
 import com.gemstone.gemfire.internal.logging.LogService;
 /**
@@ -60,7 +60,7 @@ public class RemoveClientFromBlacklistMessage extends PooledDistributionMessage
       if (l != null) {
         Iterator i = l.iterator();
         while (i.hasNext()) {
-          BridgeServerImpl bs = (BridgeServerImpl)i.next();
+          CacheServerImpl bs = (CacheServerImpl)i.next();
           CacheClientNotifier ccn = bs.getAcceptor().getCacheClientNotifier();
           Set s = ccn.getBlacklistedClient();
           if (s != null) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ServerConnection.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ServerConnection.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ServerConnection.java
index b307b95..9fe595b 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ServerConnection.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ServerConnection.java
@@ -47,7 +47,7 @@ import com.gemstone.gemfire.internal.cache.tier.Acceptor;
 import com.gemstone.gemfire.internal.cache.tier.CachedRegionHelper;
 import com.gemstone.gemfire.internal.cache.tier.ClientHandShake;
 import com.gemstone.gemfire.internal.cache.tier.Command;
-import com.gemstone.gemfire.internal.cache.tier.InternalBridgeMembership;
+import com.gemstone.gemfire.internal.cache.tier.InternalClientMembership;
 import com.gemstone.gemfire.internal.cache.tier.MessageType;
 import com.gemstone.gemfire.internal.cache.tier.sockets.command.Default;
 import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
@@ -571,7 +571,7 @@ public class ServerConnection implements Runnable {
       this.crHelper.checkCancelInProgress(null);
       if (clientJoined && isFiringMembershipEvents()) {
         // This is a new client. Notify bridge membership and heartbeat monitor.
-        InternalBridgeMembership.notifyJoined(this.proxyId.getDistributedMember(),
+        InternalClientMembership.notifyJoined(this.proxyId.getDistributedMember(),
             true);
         }
 
@@ -871,9 +871,9 @@ public class ServerConnection implements Runnable {
         // the heartbeat monitor; other wise just remove the connection.
         if (clientDeparted && isFiringMembershipEvents()) {
           if (this.clientDisconnectedCleanly && !forceClientCrashEvent) {
-            InternalBridgeMembership.notifyLeft(proxyId.getDistributedMember(), true);
+            InternalClientMembership.notifyLeft(proxyId.getDistributedMember(), true);
           } else {
-            InternalBridgeMembership.notifyCrashed(this.proxyId.getDistributedMember(), true);
+            InternalClientMembership.notifyCrashed(this.proxyId.getDistributedMember(), true);
           }
           // The client has departed. Remove this last connection and unregister it.
         }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.fig
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.fig b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.fig
index 0d169e9..b334ebb 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.fig
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.fig
@@ -119,10 +119,10 @@ Single
 4 0 0 50 -1 0 12 0.0000 4 180 1245 600 3900 ConnectionProxy\001
 -6
 6 600 2775 1725 3075
-# HREF="../../../../cache/util/BridgeLoader.html" ALT="BridgeLoader"
+# HREF="../../../../cache/client/Pool.html" ALT="ClientPool"
 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
 	 600 2775 1725 2775 1725 3075 600 3075 600 2775
-4 0 0 50 -1 -1 12 0.0000 4 180 975 675 3000 BridgeLoader\001
+4 0 0 50 -1 -1 12 0.0000 4 180 975 675 3000 ClientPool\001
 -6
 2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
 	 6450 375 6450 6750