00001
00016
00017 #ifndef NET_INSTAWEB_APACHE_APACHE_RESOURCE_MANAGER_H_
00018 #define NET_INSTAWEB_APACHE_APACHE_RESOURCE_MANAGER_H_
00019
00020 #include "base/scoped_ptr.h"
00021 #include "net/instaweb/rewriter/public/resource_manager.h"
00022
00023 struct apr_pool_t;
00024 struct server_rec;
00025
00026 namespace net_instaweb {
00027
00028 class ApacheConfig;
00029 class ApacheMessageHandler;
00030 class ApacheRewriteDriverFactory;
00031 class HTTPCache;
00032 class RewriteStats;
00033 class SharedMemStatistics;
00034 class Statistics;
00035 class ThreadSystem;
00036 class UrlPollableAsyncFetcher;
00037 class Variable;
00038
00045 class ApacheResourceManager : public ResourceManager {
00046 public:
00047 ApacheResourceManager(ApacheRewriteDriverFactory* factory,
00048 server_rec* server,
00049 const StringPiece& version);
00050 virtual ~ApacheResourceManager();
00051
00052 GoogleString hostname_identifier() { return hostname_identifier_; }
00053 void SetStatistics(SharedMemStatistics* x);
00054 ApacheRewriteDriverFactory* apache_factory() { return apache_factory_; }
00055 ApacheConfig* config();
00056 bool InitFileCachePath();
00057
00059 void ChildInit();
00060
00061 UrlPollableAsyncFetcher* subresource_fetcher() {
00062 return subresource_fetcher_;
00063 }
00064
00065 bool initialized() const { return initialized_; }
00066
00069 bool PoolDestroyed();
00070
00084 void PollFilesystemForCacheFlush();
00085
00086 static void Initialize(Statistics* statistics);
00087
00088 void set_cache_flush_poll_interval_sec(int num_seconds) {
00089 cache_flush_poll_interval_sec_ = num_seconds;
00090 }
00091 void set_cache_flush_filename(const StringPiece& sp) {
00092 sp.CopyToString(&cache_flush_filename_);
00093 }
00094
00095 const server_rec* server() const { return server_rec_; }
00096
00097 private:
00098 ApacheRewriteDriverFactory* apache_factory_;
00099 server_rec* server_rec_;
00100 GoogleString version_;
00101
00105 GoogleString hostname_identifier_;
00106
00107 bool initialized_;
00108
00116 UrlPollableAsyncFetcher* subresource_fetcher_;
00117
00122 scoped_ptr<AbstractMutex> cache_flush_mutex_;
00123 int64 last_cache_flush_check_sec_;
00124 int64 cache_flush_poll_interval_sec_;
00125 GoogleString cache_flush_filename_;
00126
00127 Variable* cache_flush_count_;
00128
00129 DISALLOW_COPY_AND_ASSIGN(ApacheResourceManager);
00130 };
00131
00132 }
00133
00134 #endif ///< NET_INSTAWEB_APACHE_APACHE_RESOURCE_MANAGER_H_