summaryrefslogtreecommitdiffstats
path: root/netwerk/cache2/CacheObserver.h
diff options
context:
space:
mode:
Diffstat (limited to 'netwerk/cache2/CacheObserver.h')
-rw-r--r--netwerk/cache2/CacheObserver.h121
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