Page Speed Optimization Libraries  1.3.25.1
net/instaweb/system/public/system_cache_path.h
Go to the documentation of this file.
00001 // Copyright 2011 Google Inc.
00016 
00017 #ifndef NET_INSTAWEB_SYSTEM_PUBLIC_SYSTEM_CACHE_PATH_H_
00018 #define NET_INSTAWEB_SYSTEM_PUBLIC_SYSTEM_CACHE_PATH_H_
00019 
00020 #include "net/instaweb/util/public/scoped_ptr.h"
00021 #include "net/instaweb/util/public/string.h"
00022 #include "net/instaweb/util/public/string_util.h"
00023 
00024 namespace net_instaweb {
00025 
00026 class AbstractSharedMem;
00027 class CacheInterface;
00028 class FileCache;
00029 class FileSystemLockManager;
00030 class MessageHandler;
00031 class NamedLockManager;
00032 class RewriteDriverFactory;
00033 class SharedMemLockManager;
00034 class SlowWorker;
00035 class SystemRewriteOptions;
00036 
00040 class SystemCachePath {
00041  public:
00043   static const char kFileCache[];
00044   static const char kLruCache[];
00045 
00046   SystemCachePath(const StringPiece& path,
00047                   const SystemRewriteOptions* config,
00048                   RewriteDriverFactory* factory,
00049                   SlowWorker* cache_clean_worker,
00050                   AbstractSharedMem* shm_runtime);
00051   ~SystemCachePath();
00052 
00054   CacheInterface* lru_cache() { return lru_cache_.get(); }
00055 
00057   CacheInterface* file_cache() { return file_cache_.get(); }
00058 
00059   NamedLockManager* lock_manager() { return lock_manager_; }
00060 
00062   void RootInit();
00063   void ChildInit();
00064   void GlobalCleanup(MessageHandler* handler); 
00065 
00066  private:
00067   void FallBackToFileBasedLocking();
00068 
00069   GoogleString path_;
00070 
00071   RewriteDriverFactory* factory_;
00072   SlowWorker* cache_clean_worker_;
00073   AbstractSharedMem* shm_runtime_;
00074   scoped_ptr<SharedMemLockManager> shared_mem_lock_manager_;
00075   scoped_ptr<FileSystemLockManager> file_system_lock_manager_;
00076   NamedLockManager* lock_manager_;
00077   FileCache* file_cache_backend_; 
00078   scoped_ptr<CacheInterface> lru_cache_;
00079   scoped_ptr<CacheInterface> file_cache_;
00080 };
00081 
00085 #define CACHE_STATISTICS 1
00086 
00087 }  
00088 
00089 #endif  ///< NET_INSTAWEB_SYSTEM_PUBLIC_SYSTEM_CACHE_PATH_H_
00090 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines