All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fiftyone.mobile.detection.cache.ICache Maven / Gradle / Ivy

The newest version!
/* *********************************************************************
 * This Source Code Form is copyright of 51Degrees Mobile Experts Limited.
 * Copyright © 2017 51Degrees Mobile Experts Limited, 5 Charlotte Close,
 * Caversham, Reading, Berkshire, United Kingdom RG4 7BY
 *
 * This Source Code Form is the subject of the following patents and patent
 * applications, owned by 51Degrees Mobile Experts Limited of 5 Charlotte
 * Close, Caversham, Reading, Berkshire, United Kingdom RG4 7BY:
 * European Patent No. 2871816;
 * European Patent Application No. 17184134.9;
 * United States Patent Nos. 9,332,086 and 9,350,823; and
 * United States Patent Application No. 15/686,066.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0.
 *
 * If a copy of the MPL was not distributed with this file, You can obtain
 * one at http://mozilla.org/MPL/2.0/.
 *
 * This Source Code Form is "Incompatible With Secondary Licenses", as
 * defined by the Mozilla Public License, v. 2.0.
 * ********************************************************************* */
package fiftyone.mobile.detection.cache;

/**
 * Interface for caches as used internally to the system
 * 

* Aside from {@link #get(Object)} methods are optional. *

* Implementations may choose to respond "-1" for * methods that return numbers and proiver a no op * for {@link #resetCache()} */ public interface ICache { /** * The size of the cache as number of entries */ long getCacheSize(); /** * The number of requests that could not be served */ long getCacheMisses(); /** * The number of requests made to the cache */ long getCacheRequests(); /** * a fraction < 1 (not a percentage) misses/requests */ double getPercentageMisses(); /** * * @param key not null key to retrieve value * @return null if value is not present * @throws IllegalStateException if misoperation of underlying mechanisms */ V get(K key); /** * Remove all entries from the cache and reset statistics if possible. */ void resetCache(); abstract class Base implements ICache { @Override public long getCacheSize() { return -1; } @Override public long getCacheMisses() { return -1; } @Override public long getCacheRequests() { return -1; } @Override public double getPercentageMisses() { if (getCacheRequests() == 0) { return -1; } return getCacheMisses()/getCacheRequests(); } @Override public void resetCache() {} } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy