diff options
Diffstat (limited to 'netwerk/cache2/CacheObserver.h')
-rw-r--r-- | netwerk/cache2/CacheObserver.h | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/netwerk/cache2/CacheObserver.h b/netwerk/cache2/CacheObserver.h new file mode 100644 index 000000000..62e5bbc6e --- /dev/null +++ b/netwerk/cache2/CacheObserver.h @@ -0,0 +1,121 @@ +/* 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/. */ + +#ifndef CacheObserver__h__ +#define CacheObserver__h__ + +#include "nsIObserver.h" +#include "nsIFile.h" +#include "nsCOMPtr.h" +#include "nsWeakReference.h" +#include <algorithm> + +namespace mozilla { +namespace net { + +class CacheObserver : public nsIObserver + , public nsSupportsWeakReference +{ + virtual ~CacheObserver() {} + + NS_DECL_THREADSAFE_ISUPPORTS + NS_DECL_NSIOBSERVER + + static nsresult Init(); + static nsresult Shutdown(); + static CacheObserver* Self() { return sSelf; } + + // Access to preferences + static bool UseNewCache(); + static bool UseDiskCache() + { return sUseDiskCache; } + static bool UseMemoryCache() + { return sUseMemoryCache; } + static uint32_t MetadataMemoryLimit() // result in bytes. + { return sMetadataMemoryLimit << 10; } + static uint32_t MemoryCacheCapacity(); // result in bytes. + static uint32_t DiskCacheCapacity() // result in bytes. + { return sDiskCacheCapacity << 10; } + static void SetDiskCacheCapacity(uint32_t); // parameter in bytes. + static uint32_t DiskFreeSpaceSoftLimit() // result in bytes. + { return sDiskFreeSpaceSoftLimit << 10; } + static uint32_t DiskFreeSpaceHardLimit() // result in bytes. + { return sDiskFreeSpaceHardLimit << 10; } + static bool SmartCacheSizeEnabled() + { return sSmartCacheSizeEnabled; } + static uint32_t PreloadChunkCount() + { return sPreloadChunkCount; } + static uint32_t MaxMemoryEntrySize() // result in bytes. + { return sMaxMemoryEntrySize << 10; } + static uint32_t MaxDiskEntrySize() // result in bytes. + { return sMaxDiskEntrySize << 10; } + static uint32_t MaxDiskChunksMemoryUsage(bool aPriority) // result in bytes. + { return aPriority ? sMaxDiskPriorityChunksMemoryUsage << 10 + : sMaxDiskChunksMemoryUsage << 10; } + static uint32_t CompressionLevel() + { return sCompressionLevel; } + static uint32_t HalfLifeSeconds() + { return sHalfLifeHours * 60.0F * 60.0F; } + static int32_t HalfLifeExperiment() + { return sHalfLifeExperiment; } + static bool ClearCacheOnShutdown() + { return sSanitizeOnShutdown && sClearCacheOnShutdown; } + static bool CacheFSReported() + { return sCacheFSReported; } + static void SetCacheFSReported(); + static bool HashStatsReported() + { return sHashStatsReported; } + static void SetHashStatsReported(); + static void ParentDirOverride(nsIFile ** aDir); + + static bool EntryIsTooBig(int64_t aSize, bool aUsingDisk); + + static uint32_t MaxShutdownIOLag() + { return sMaxShutdownIOLag; } + static bool IsPastShutdownIOLag(); + + static bool ShuttingDown() + { return sShutdownDemandedTime != PR_INTERVAL_NO_TIMEOUT; } + +private: + static CacheObserver* sSelf; + + void StoreDiskCacheCapacity(); + void StoreCacheFSReported(); + void StoreHashStatsReported(); + void AttachToPreferences(); + + static uint32_t sUseNewCache; + static bool sUseMemoryCache; + static bool sUseDiskCache; + static uint32_t sMetadataMemoryLimit; + static int32_t sMemoryCacheCapacity; + static int32_t sAutoMemoryCacheCapacity; + static Atomic<uint32_t, Relaxed> sDiskCacheCapacity; + static uint32_t sDiskFreeSpaceSoftLimit; + static uint32_t sDiskFreeSpaceHardLimit; + static bool sSmartCacheSizeEnabled; + static uint32_t sPreloadChunkCount; + static int32_t sMaxMemoryEntrySize; + static int32_t sMaxDiskEntrySize; + static uint32_t sMaxDiskChunksMemoryUsage; + static uint32_t sMaxDiskPriorityChunksMemoryUsage; + static uint32_t sCompressionLevel; + static float sHalfLifeHours; + static int32_t sHalfLifeExperiment; + static bool sSanitizeOnShutdown; + static bool sClearCacheOnShutdown; + static bool sCacheFSReported; + static bool sHashStatsReported; + static Atomic<uint32_t, Relaxed> sMaxShutdownIOLag; + static Atomic<PRIntervalTime> sShutdownDemandedTime; + + // Non static properties, accessible via sSelf + nsCOMPtr<nsIFile> mCacheParentDirectoryOverride; +}; + +} // namespace net +} // namespace mozilla + +#endif |