Page Speed Optimization Libraries  1.9.32.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
system_rewrite_options.h
Go to the documentation of this file.
1 // Copyright 2013 Google Inc.
16 
17 #ifndef NET_INSTAWEB_SYSTEM_PUBLIC_SYSTEM_REWRITE_OPTIONS_H_
18 #define NET_INSTAWEB_SYSTEM_PUBLIC_SYSTEM_REWRITE_OPTIONS_H_
19 
24 
25 namespace net_instaweb {
26 
27 class ThreadSystem;
28 
32  public:
33  static void Initialize();
34  static void Terminate();
35 
36  SystemRewriteOptions(const StringPiece& description,
37  ThreadSystem* thread_system);
38  explicit SystemRewriteOptions(ThreadSystem* thread_system);
39  virtual ~SystemRewriteOptions();
40 
41  int64 file_cache_clean_interval_ms() const {
42  return file_cache_clean_interval_ms_.value();
43  }
44  bool has_file_cache_clean_interval_ms() const {
45  return file_cache_clean_interval_ms_.was_set();
46  }
47  void set_file_cache_clean_interval_ms(int64 x) {
48  set_option(x, &file_cache_clean_interval_ms_);
49  }
50  int64 file_cache_clean_size_kb() const {
51  return file_cache_clean_size_kb_.value();
52  }
53  bool has_file_cache_clean_size_kb() const {
54  return file_cache_clean_size_kb_.was_set();
55  }
56  void set_file_cache_clean_size_kb(int64 x) {
57  set_option(x, &file_cache_clean_size_kb_);
58  }
59  int64 file_cache_clean_inode_limit() const {
60  return file_cache_clean_inode_limit_.value();
61  }
62  bool has_file_cache_clean_inode_limit() const {
63  return file_cache_clean_inode_limit_.was_set();
64  }
65  void set_file_cache_clean_inode_limit(int64 x) {
66  set_option(x, &file_cache_clean_inode_limit_);
67  }
68  int64 lru_cache_byte_limit() const {
69  return lru_cache_byte_limit_.value();
70  }
71  void set_lru_cache_byte_limit(int64 x) {
72  set_option(x, &lru_cache_byte_limit_);
73  }
74  int64 lru_cache_kb_per_process() const {
75  return lru_cache_kb_per_process_.value();
76  }
77  void set_lru_cache_kb_per_process(int64 x) {
78  set_option(x, &lru_cache_kb_per_process_);
79  }
80  bool use_shared_mem_locking() const {
81  return use_shared_mem_locking_.value();
82  }
83  void set_use_shared_mem_locking(bool x) {
84  set_option(x, &use_shared_mem_locking_);
85  }
86  bool compress_metadata_cache() const {
87  return compress_metadata_cache_.value();
88  }
89  void set_compress_metadata_cache(bool x) {
90  set_option(x, &compress_metadata_cache_);
91  }
92  bool statistics_enabled() const {
93  return statistics_enabled_.value();
94  }
95  void set_statistics_enabled(bool x) {
96  set_option(x, &statistics_enabled_);
97  }
98  bool statistics_logging_enabled() const {
99  return statistics_logging_enabled_.value();
100  }
101  void set_statistics_logging_enabled(bool x) {
102  set_option(x, &statistics_logging_enabled_);
103  }
104  int64 statistics_logging_max_file_size_kb() const {
105  return statistics_logging_max_file_size_kb_.value();
106  }
107  const GoogleString& statistics_logging_charts_css() const {
108  return statistics_logging_charts_css_.value();
109  }
110  const GoogleString& statistics_logging_charts_js() const {
111  return statistics_logging_charts_js_.value();
112  }
113  int64 statistics_logging_interval_ms() const {
114  return statistics_logging_interval_ms_.value();
115  }
116  void set_statistics_logging_interval_ms(int64 x) {
117  set_option(x, &statistics_logging_interval_ms_);
118  }
119  const GoogleString& file_cache_path() const {
120  return file_cache_path_.value();
121  }
122  void set_file_cache_path(const GoogleString& x) {
123  set_option(x, &file_cache_path_);
124  }
125  const GoogleString& log_dir() const { return log_dir_.value(); }
126  void set_log_dir(const GoogleString& x) { set_option(x, &log_dir_); }
127  const GoogleString& memcached_servers() const {
128  return memcached_servers_.value();
129  }
130  void set_memcached_servers(const GoogleString& x) {
131  set_option(x, &memcached_servers_);
132  }
133  int memcached_threads() const {
134  return memcached_threads_.value();
135  }
136  void set_memcached_threads(int x) {
137  set_option(x, &memcached_threads_);
138  }
139  int memcached_timeout_us() const {
140  return memcached_timeout_us_.value();
141  }
142  bool has_memcached_timeout_us() const {
143  return memcached_timeout_us_.was_set();
144  }
145  void set_memcached_timeout_us(int x) {
146  set_option(x, &memcached_timeout_us_);
147  }
148  const GoogleString& fetcher_proxy() const {
149  return fetcher_proxy_.value();
150  }
151  void set_fetcher_proxy(const GoogleString& x) {
152  set_option(x, &fetcher_proxy_);
153  }
154 
156  void set_cache_flush_poll_interval_sec(int64 num_seconds) {
157  set_option(num_seconds, &cache_flush_poll_interval_sec_);
158  }
159  int64 cache_flush_poll_interval_sec() const {
160  return cache_flush_poll_interval_sec_.value();
161  }
162  void set_cache_flush_filename(const StringPiece& sp) {
163  set_option(sp.as_string(), &cache_flush_filename_);
164  }
165  const GoogleString& cache_flush_filename() const {
166  return cache_flush_filename_.value();
167  }
168 
169  const GoogleString& https_options() const {
170  return https_options_.value();
171  }
172  const GoogleString& ssl_cert_directory() const {
173  return ssl_cert_directory_.value();
174  }
175  const GoogleString& ssl_cert_file() const {
176  return ssl_cert_file_.value();
177  }
178 
179  int64 slurp_flush_limit() const {
180  return slurp_flush_limit_.value();
181  }
182  void set_slurp_flush_limit(int64 x) {
183  set_option(x, &slurp_flush_limit_);
184  }
185  bool slurp_read_only() const {
186  return slurp_read_only_.value();
187  }
188  void set_slurp_read_only(bool x) {
189  set_option(x, &slurp_read_only_);
190  }
191  bool rate_limit_background_fetches() const {
192  return rate_limit_background_fetches_.value();
193  }
194  const GoogleString& slurp_directory() const {
195  return slurp_directory_.value();
196  }
197  void set_slurp_directory(GoogleString x) {
198  set_option(x, &slurp_directory_);
199  }
200  bool disable_loopback_routing() const {
201  return disable_loopback_routing_.value();
202  }
203  bool fetch_with_gzip() const {
204  return fetch_with_gzip_.value();
205  }
206  int64 ipro_max_response_bytes() const {
207  return ipro_max_response_bytes_.value();
208  }
209  int64 ipro_max_concurrent_recordings() const {
210  return ipro_max_concurrent_recordings_.value();
211  }
212  int64 default_shared_memory_cache_kb() const {
213  return default_shared_memory_cache_kb_.value();
214  }
215  void set_default_shared_memory_cache_kb(int64 x) {
216  set_option(x, &default_shared_memory_cache_kb_);
217  }
218  void set_purge_method(const GoogleString& x) {
219  set_option(x, &purge_method_);
220  }
221  const GoogleString& purge_method() const { return purge_method_.value(); }
222 
226  bool test_proxy() const {
227  return test_proxy_.value();
228  }
229  void set_test_proxy(bool x) {
230  set_option(x, &test_proxy_);
231  }
232 
239  GoogleString test_proxy_slurp() const {
240  return test_proxy_slurp_.value();
241  }
242 
244  bool slurping_enabled() const {
245  return !slurp_directory().empty();
246  }
247 
248  bool slurping_enabled_read_only() const {
249  return slurping_enabled() && slurp_read_only();
250  }
251 
252  virtual SystemRewriteOptions* Clone() const;
253  virtual SystemRewriteOptions* NewOptions() const;
254 
257  static const SystemRewriteOptions* DynamicCast(
258  const RewriteOptions* instance);
259  static SystemRewriteOptions* DynamicCast(RewriteOptions* instance);
260 
264  StringPiece description() const { return description_; }
265  void set_description(const StringPiece& x) { x.CopyToString(&description_); }
266 
267  private:
270  class HttpsOptions : public Option<GoogleString> {
271  public:
272  virtual bool SetFromString(StringPiece value_string,
273  GoogleString* error_detail);
274  };
275 
278  static Properties* system_properties_;
279 
282  template<class OptionClass>
283  static void AddSystemProperty(typename OptionClass::ValueType default_value,
284  OptionClass SystemRewriteOptions::*offset,
285  const char* id,
286  StringPiece option_name,
287  const char* help,
288  bool safe_to_print) {
289  AddProperty(default_value, offset, id, option_name, kServerScope, help,
290  safe_to_print, system_properties_);
291  }
292 
293  template<class OptionClass>
294  static void AddSystemProperty(typename OptionClass::ValueType default_value,
295  OptionClass SystemRewriteOptions::*offset,
296  const char* id,
297  StringPiece option_name,
298  OptionScope scope,
299  const char* help,
300  bool safe_to_print) {
301  AddProperty(default_value, offset, id, option_name, scope, help,
302  safe_to_print, system_properties_);
303  }
304 
305  static void AddProperties();
306 
308  GoogleString description_;
309 
310  Option<GoogleString> fetcher_proxy_;
311  Option<GoogleString> file_cache_path_;
312  Option<GoogleString> log_dir_;
313 
316  Option<GoogleString> memcached_servers_;
317  Option<GoogleString> statistics_logging_charts_css_;
318  Option<GoogleString> statistics_logging_charts_js_;
319  Option<GoogleString> cache_flush_filename_;
320  Option<GoogleString> ssl_cert_directory_;
321  Option<GoogleString> ssl_cert_file_;
322  HttpsOptions https_options_;
323 
324  Option<GoogleString> slurp_directory_;
325  Option<GoogleString> test_proxy_slurp_;
326 
327  Option<bool> statistics_enabled_;
328  Option<bool> statistics_logging_enabled_;
329  Option<bool> use_shared_mem_locking_;
330  Option<bool> compress_metadata_cache_;
331 
332  Option<bool> slurp_read_only_;
333  Option<bool> test_proxy_;
334  Option<bool> rate_limit_background_fetches_;
335 
338  Option<bool> disable_loopback_routing_;
339 
343  Option<bool> fetch_with_gzip_;
344 
345  Option<int> memcached_threads_;
346  Option<int> memcached_timeout_us_;
347 
348  Option<int64> file_cache_clean_inode_limit_;
349  Option<int64> file_cache_clean_interval_ms_;
350  Option<int64> file_cache_clean_size_kb_;
351  Option<int64> lru_cache_byte_limit_;
352  Option<int64> lru_cache_kb_per_process_;
353  Option<int64> statistics_logging_interval_ms_;
356  Option<int64> cache_flush_poll_interval_sec_;
357  Option<int64> statistics_logging_max_file_size_kb_;
358  Option<int64> slurp_flush_limit_;
359  Option<int64> ipro_max_response_bytes_;
360  Option<int64> ipro_max_concurrent_recordings_;
361  Option<int64> default_shared_memory_cache_kb_;
362  Option<GoogleString> purge_method_;
363 
364  DISALLOW_COPY_AND_ASSIGN(SystemRewriteOptions);
365 };
366 
367 }
368 
369 #endif
static const SystemRewriteOptions * DynamicCast(const RewriteOptions *instance)
static void AddProperty(typename OptionClass::ValueType default_value, OptionClass RewriteOptionsSubclass::*offset, const char *id, StringPiece option_name, OptionScope scope, const char *help_text, bool safe_to_print, Properties *properties)
Adds a new Property to 'properties' (the last argument).
Definition: rewrite_options.h:2829
void set_cache_flush_poll_interval_sec(int64 num_seconds)
Cache flushing configuration.
Definition: system_rewrite_options.h:156
GoogleString test_proxy_slurp() const
Definition: system_rewrite_options.h:239
StringPiece description() const
Definition: system_rewrite_options.h:264
bool slurping_enabled() const
Helper functions.
Definition: system_rewrite_options.h:244
Definition: system_rewrite_options.h:31
OptionScope
Definition: rewrite_options.h:476
void set_option(const T &new_value, OptionTemplateBase< T > *option)
Definition: rewrite_options.h:2875
virtual SystemRewriteOptions * NewOptions() const
Make an empty options object of the same type as this.
customized at server level (e.g. VirtualHost)
Definition: rewrite_options.h:480
virtual SystemRewriteOptions * Clone() const
Definition: rewrite_options.h:81
bool test_proxy() const
Definition: system_rewrite_options.h:226