proxygen
proxygen::HTTPSettings Class Reference

#include <HTTPSettings.h>

Public Member Functions

 HTTPSettings ()
 
 HTTPSettings (const std::initializer_list< SettingPair > &initialSettings)
 
void setSetting (SettingsId id, SettingsValue val)
 
void unsetSetting (SettingsId id)
 
const HTTPSettinggetSetting (SettingsId id) const
 
SettingsValue getSetting (SettingsId id, SettingsValue defaultVal) const
 
std::size_t getNumSettings () const
 
const std::vector< HTTPSetting > & getAllSettings ()
 
void clearSettings ()
 

Private Member Functions

std::vector< HTTPSetting >::iterator getSettingIter (SettingsId id)
 
std::vector< HTTPSetting >::const_iterator getSettingConstIter (SettingsId id) const
 

Private Attributes

std::vector< HTTPSettingsettings_
 

Detailed Description

Definition at line 35 of file HTTPSettings.h.

Constructor & Destructor Documentation

proxygen::HTTPSettings::HTTPSettings ( const std::initializer_list< SettingPair > &  initialSettings)
inlineexplicit

Definition at line 43 of file HTTPSettings.h.

References val.

44  {
45  settings_.reserve(initialSettings.size());
46  // TODO: setSetting involves looping over all settings so the below actually
47  // models as O(n^2) which is pretty bad. Can't change it outright without
48  // making sure we handle duplicates (same setting id)
49  for (auto& setting : initialSettings) {
50  setSetting(setting.first, setting.second);
51  }
52  }
std::vector< HTTPSetting > settings_
Definition: HTTPSettings.h:78
void setSetting(SettingsId id, SettingsValue val)

Member Function Documentation

void proxygen::HTTPSettings::clearSettings ( )
inline

Definition at line 64 of file HTTPSettings.h.

64  {
65  settings_.clear();
66  }
std::vector< HTTPSetting > settings_
Definition: HTTPSettings.h:78
const std::vector<HTTPSetting>& proxygen::HTTPSettings::getAllSettings ( )
inline

Definition at line 61 of file HTTPSettings.h.

Referenced by proxygen::SPDYCodec::generateSettings(), and proxygen::HTTP2Codec::generateSettings().

61  {
62  return settings_;
63  }
std::vector< HTTPSetting > settings_
Definition: HTTPSettings.h:78
std::size_t proxygen::HTTPSettings::getNumSettings ( ) const
inline

Definition at line 58 of file HTTPSettings.h.

Referenced by proxygen::SPDYCodec::generateSettings(), and TEST().

58  {
59  return settings_.size();
60  }
std::vector< HTTPSetting > settings_
Definition: HTTPSettings.h:78
SettingsValue proxygen::HTTPSettings::getSetting ( SettingsId  id,
SettingsValue  defaultVal 
) const

Definition at line 42 of file HTTPSettings.cpp.

References getSettingConstIter(), and settings_.

43  {
44  auto iter = getSettingConstIter(id);
45  if (iter != settings_.end()) {
46  return (*iter).value;
47  } else {
48  return defaultValue;
49  }
50 }
std::vector< HTTPSetting >::const_iterator getSettingConstIter(SettingsId id) const
std::vector< HTTPSetting > settings_
Definition: HTTPSettings.h:78
std::vector< HTTPSetting >::const_iterator proxygen::HTTPSettings::getSettingConstIter ( SettingsId  id) const
private

Definition at line 58 of file HTTPSettings.cpp.

References s, and settings_.

Referenced by getSetting().

59  {
60  return std::find_if(settings_.begin(),
61  settings_.end(),
62  [&](HTTPSetting const& s) { return s.id == id; });
63 }
std::vector< HTTPSetting > settings_
Definition: HTTPSettings.h:78
static set< string > s
std::vector< HTTPSetting >::iterator proxygen::HTTPSettings::getSettingIter ( SettingsId  id)
private

Definition at line 52 of file HTTPSettings.cpp.

References s, and settings_.

Referenced by setSetting(), and unsetSetting().

52  {
53  return std::find_if(settings_.begin(),
54  settings_.end(),
55  [&](HTTPSetting const& s) { return s.id == id; });
56 }
std::vector< HTTPSetting > settings_
Definition: HTTPSettings.h:78
static set< string > s
void proxygen::HTTPSettings::setSetting ( SettingsId  id,
SettingsValue  val 
)
void proxygen::HTTPSettings::unsetSetting ( SettingsId  id)

Definition at line 25 of file HTTPSettings.cpp.

References getSettingIter(), and settings_.

Referenced by TEST().

25  {
26  auto iter = getSettingIter(id);
27  if (iter != settings_.end()) {
28  *iter = settings_.back();
29  settings_.pop_back();
30  }
31 }
std::vector< HTTPSetting >::iterator getSettingIter(SettingsId id)
std::vector< HTTPSetting > settings_
Definition: HTTPSettings.h:78

Member Data Documentation

std::vector<HTTPSetting> proxygen::HTTPSettings::settings_
private

The documentation for this class was generated from the following files: