Page Speed Optimization Libraries  1.4.26.1
net/instaweb/apache/apache_config.h
Go to the documentation of this file.
00001 // Copyright 2010 Google Inc.
00016 
00017 #ifndef NET_INSTAWEB_APACHE_APACHE_CONFIG_H_
00018 #define NET_INSTAWEB_APACHE_APACHE_CONFIG_H_
00019 
00020 #include "net/instaweb/rewriter/public/rewrite_options.h"
00021 #include "net/instaweb/system/public/system_rewrite_options.h"
00022 #include "net/instaweb/util/public/basictypes.h"
00023 #include "net/instaweb/util/public/string.h"
00024 #include "net/instaweb/util/public/string_util.h"
00025 
00026 namespace net_instaweb {
00027 
00028 class Hasher;
00029 
00032 class ApacheConfig : public SystemRewriteOptions {
00033  public:
00034   static void Initialize();
00035   static void Terminate();
00036 
00037   explicit ApacheConfig(const StringPiece& dir);
00038   ApacheConfig();
00039   ~ApacheConfig() {}
00040 
00044   StringPiece description() const { return description_; }
00045   void set_description(const StringPiece& x) { x.CopyToString(&description_); }
00046 
00047   int64 slurp_flush_limit() const {
00048     return slurp_flush_limit_.value();
00049   }
00050   void set_slurp_flush_limit(int64 x) {
00051     set_option(x, &slurp_flush_limit_);
00052   }
00053   bool slurp_read_only() const {
00054     return slurp_read_only_.value();
00055   }
00056   void set_slurp_read_only(bool x) {
00057     set_option(x, &slurp_read_only_);
00058   }
00059   bool rate_limit_background_fetches() const {
00060     return rate_limit_background_fetches_.value();
00061   }
00062   const GoogleString& slurp_directory() const {
00063     return slurp_directory_.value();
00064   }
00065   void set_slurp_directory(GoogleString x) {
00066     set_option(x, &slurp_directory_);
00067   }
00068 
00072   bool test_proxy() const {
00073     return test_proxy_.value();
00074   }
00075   void set_test_proxy(bool x) {
00076     set_option(x, &test_proxy_);
00077   }
00078 
00086   GoogleString test_proxy_slurp() const {
00087     return test_proxy_slurp_.value();
00088   }
00089 
00091   bool slurping_enabled() const {
00092     return !slurp_directory().empty();
00093   }
00094 
00095   bool slurping_enabled_read_only() const {
00096     return slurping_enabled() && slurp_read_only();
00097   }
00098 
00099   bool experimental_fetch_from_mod_spdy() const {
00100     return experimental_fetch_from_mod_spdy_.value();
00101   }
00102 
00104   virtual ApacheConfig* Clone() const;
00105 
00108   static const ApacheConfig* DynamicCast(const RewriteOptions* instance);
00109   static ApacheConfig* DynamicCast(RewriteOptions* instance);
00110 
00111  private:
00114   static Properties* apache_properties_;
00115 
00117   template<class RewriteOptionsSubclass, class OptionClass>
00118   static void AddApacheProperty(typename OptionClass::ValueType default_value,
00119                                 OptionClass RewriteOptionsSubclass::*offset,
00120                                 const char* id,
00121                                 OptionEnum option_enum,
00122                                 const char* help) {
00123     AddProperty(default_value, offset, id, option_enum,
00124                 RewriteOptions::kServerScope, help,
00125                 apache_properties_);
00126   }
00127 
00128   void InitializeSignaturesAndDefaults();
00129   static void AddProperties();
00130   void Init();
00131 
00132   GoogleString description_;
00133 
00134   Option<GoogleString> slurp_directory_;
00135   Option<GoogleString> test_proxy_slurp_;
00136 
00137   Option<bool> slurp_read_only_;
00138   Option<bool> test_proxy_;
00139   Option<bool> rate_limit_background_fetches_;
00140   Option<bool> experimental_fetch_from_mod_spdy_;
00141 
00142   Option<int64> slurp_flush_limit_;
00143 
00144   DISALLOW_COPY_AND_ASSIGN(ApacheConfig);
00145 };
00146 
00147 }  
00148 
00149 #endif  ///< NET_INSTAWEB_APACHE_APACHE_CONFIG_H_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines