@Override public synchronized void close() { for (Iterator<ConnectionStats> itr = statMap.values().iterator(); itr.hasNext();) { ConnectionStats stats = itr.next(); stats.close(); } statMap.clear(); endpointMap = Collections.emptyMap(); listener.clear(); }
@Override public Endpoint referenceEndpoint(ServerLocation server, DistributedMember memberId) { Endpoint endpoint = endpointMap.get(server); boolean addedEndpoint = false; if (endpoint == null || endpoint.isClosed()) { synchronized (this) { endpoint = endpointMap.get(server); if (endpoint == null || endpoint.isClosed()) { ConnectionStats stats = getStats(server); Map<ServerLocation, Endpoint> endpointMapTemp = new HashMap<ServerLocation, Endpoint>(endpointMap); endpoint = new Endpoint(this, ds, server, stats, memberId); listener.clearPdxRegistry(endpoint); endpointMapTemp.put(server, endpoint); endpointMap = Collections.unmodifiableMap(endpointMapTemp); addedEndpoint = true; poolStats.setServerCount(endpointMap.size()); } } } endpoint.addReference(); if (addedEndpoint) { listener.endpointNowInUse(endpoint); } return endpoint; }
listener.endpointCrashed(endpoint); } else { listener.endpointNoLongerInUse(endpoint);
@Override public void addListener(EndpointManager.EndpointListener listener) { this.listener.addListener(listener); }
@Override public void removeListener(EndpointManager.EndpointListener listener) { this.listener.removeListener(listener); }
public EndpointManagerImpl(String poolName, DistributedSystem ds, CancelCriterion cancelCriterion, PoolStats poolStats) { this.ds = ds; this.poolName = poolName; this.cancelCriterion = cancelCriterion; this.poolStats = poolStats; listener.addListener(new EndpointListenerForBridgeMembership()); }