/* * Copyright (c) 2008-2011 EMC Corporation * All Rights Reserved */ package com.emc.storageos.volumecontroller.impl.monitoring; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.emc.storageos.coordinator.client.service.ConnectionStateListener; import com.emc.storageos.db.client.model.StorageSystem; /** * Listener class releases monitoring related local CACHE from the local memory while ZK connection RECONNECT/CONNECT state. */ public class ZkConnectionStateListenerForMonitoring implements ConnectionStateListener { private Map<StorageSystem.Type, IMonitoringStorageSystem> _monitoringImplMap; private final Logger _logger = LoggerFactory.getLogger(ZkConnectionStateListenerForMonitoring.class); /** * Setter method for the monitoringImpl instances based on the StorageSystem.Type * * @param monitoringImplMap */ public void setMonitoringImplMap( Map<StorageSystem.Type, IMonitoringStorageSystem> monitoringImplMap) { this._monitoringImplMap = monitoringImplMap; } @Override public void connectionStateChanged(State newState) { _logger.debug("Entering {}", Thread.currentThread().getStackTrace()[1].getMethodName()); _logger.info("newState :{}", newState); /** * If connection state is LOST or SUSPENDED we should clear internal cache(Monitoring). */ if (newState == ConnectionStateListener.State.DISCONNECTED) { for (Map.Entry<StorageSystem.Type, IMonitoringStorageSystem> entry : _monitoringImplMap.entrySet()) { entry.getValue().clearCache(); } } _logger.debug("Exiting {}", Thread.currentThread().getStackTrace()[1].getMethodName()); } }