package com.atlassian.bitbucket.scm.cache.internal;

class CacheConstants {

    /**
     * Prefix for any plugin settings that can be configured through stash-config.properties.
     */
    public static final String PLUGIN_PROP_PREFIX = "plugin.bitbucket-scm-cache.";
    /**
     * Property that controls how frequently expired cache entries are invalidated and removed from the cache.
     * Configured value is in SECONDS.
     */
    public static final String PROP_CACHE_EXPIRY_CHECK_INTERVAL = PLUGIN_PROP_PREFIX + "expiry.check.interval";
    /**
     * When eviction is triggered the amount of disk space requested for eviction is calculated as
     * (eviction.hysteresis + eviction.trigger.free.space - free space on file system)
     */
    public static final String PROP_HYSTERESIS = PLUGIN_PROP_PREFIX + "eviction.hysteresis";
    /**
     * When free space on the cache disk falls below this threshold eviction is triggered.
     */
    public static final String PROP_EVICTION_FREE_SPACE = PLUGIN_PROP_PREFIX + "eviction.trigger.free.space";
    /**
     * Property that controls when caching is disabled because there is not enough space available on the file system
     */
    public static final String PROP_MIN_FREE_SPACE = PLUGIN_PROP_PREFIX + "minimum.free.space";
    /**
     * Property that controls the minimum number of threads in the scm-cache thread pool.
     */
    public static final String PROP_MIN_THREADS = PLUGIN_PROP_PREFIX + "min.threads";
    /**
     * Property that controls which protocols caching is enabled on
     */
    public static final String PROP_PROTOCOLS = PLUGIN_PROP_PREFIX + "protocols";
    /**
     * Property that controls whether refs caching is enabled.
     */
    public static final String PROP_REFS_ENABLED = PLUGIN_PROP_PREFIX + "refs.enabled";
    /**
     * Property that controls the TTL for ref advertisement caches. Configured value is in SECONDS.
     */
    public static final String PROP_REFS_TTL = PLUGIN_PROP_PREFIX + "refs.ttl";
    /**
     * Property that controls the keep alive time for an idle thread before being removed from the thread pool.
     * Configured value is in SECONDS.
     */
    public static final String PROP_THREAD_KEEP_ALIVE = PLUGIN_PROP_PREFIX + "thread.keepAlive";
    /**
     * Property that controls the TTL for uploadPack caches. Configured value is in SECONDS.
     */
    public static final String PROP_UPLOADPACK_TTL = PLUGIN_PROP_PREFIX + "upload-pack.ttl";

    private CacheConstants() {
        throw new UnsupportedOperationException();
    }
}
