/* * Copyright (c) 2007, 2011, 2012, 2015 Eike Stepper (Berlin, Germany) and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Eike Stepper - initial API and implementation */ package org.eclipse.net4j.util.cache; import org.eclipse.net4j.util.event.INotifier; /** * @author Eike Stepper */ public interface ICacheMonitor extends INotifier { public ConditionPolicy getConditionPolicy(); public Condition getCondition(); public ICacheProbe registerCache(ICache cache); public void deregisterCache(ICache cache); /** * @author Eike Stepper */ public enum Condition { /** * Condition <b>GREEN</b> indicates that the system is operating normally and enough free memory is available so * that caches are free to cache additional elements. */ GREEN, /** * Condition <b>YELLOW</b> indicates that the system is operating normally but free memory is about to go low so * that caches should stop to cache additional elements. */ YELLOW, /** * Condition <b>RED</b> indicates that the system state is critical and free memory is almost exhausted so that * caches must immediately stop to cache additional elements. Depending of the eviction strategy element eviction is * ordered. */ RED; } /** * @author Eike Stepper */ public interface ConditionPolicy { public Condition getNewCondition(Condition oldCondition); } }