/* SVCB start */
bool SVCBBaseRecordContent::autoHint(const SvcParam::SvcParamKey &key) const {
- auto p = std::find_if(d_params.begin(), d_params.end(),
- [&key](const SvcParam ¶m) {
- return param.getKey() == key;
- });
+ auto p = getParamIt(key);
if (p == d_params.end()) {
return false;
}
}
void SVCBBaseRecordContent::setHints(const SvcParam::SvcParamKey &key, const std::vector<ComboAddress> &addresses) {
- auto p = std::find_if(d_params.begin(), d_params.end(),
- [&key](const SvcParam ¶m) {
- return param.getKey() == key;
- });
+ auto p = getParamIt(key);
if (p == d_params.end()) {
return;
}
}
void SVCBBaseRecordContent::removeParam(const SvcParam::SvcParamKey &key) {
- auto p = std::find_if(d_params.begin(), d_params.end(),
- [&key](const SvcParam ¶m) {
- return param.getKey() == key;
- });
+ auto p = getParamIt(key);
if (p == d_params.end()) {
return;
}
}
bool SVCBBaseRecordContent::hasParam(const SvcParam::SvcParamKey &key) const {
- auto p = std::find_if(d_params.begin(), d_params.end(),
- [&key](const SvcParam ¶m) {
- return param.getKey() == key;
- });
- return p != d_params.end();
+ return getParamIt(key) != d_params.end();
}
SvcParam SVCBBaseRecordContent::getParam(const SvcParam::SvcParamKey &key) const {
- auto p = std::find_if(d_params.begin(), d_params.end(),
- [&key](const SvcParam ¶m) {
- return param.getKey() == key;
- });
+ auto p = getParamIt(key);
if (p == d_params.end()) {
throw std::out_of_range("No param with key " + SvcParam::keyToString(key));
}
return *p;
}
+set<SvcParam>::const_iterator SVCBBaseRecordContent::getParamIt(const SvcParam::SvcParamKey &key) const {
+ auto p = std::find_if(d_params.begin(), d_params.end(),
+ [&key](const SvcParam ¶m) {
+ return param.getKey() == key;
+ });
+ return p;
+}
+
/* SVCB end */
boilerplate_conv(TKEY,
void setHints(const SvcParam::SvcParamKey &key, const std::vector<ComboAddress> &addresses);
// Removes the parameter for |key| from d_params
void removeParam(const SvcParam::SvcParamKey &key);
- // Whether or not there are any param
+ // Whether or not there are any parameter
bool hasParams() const;
// Whether or not the param of |key| exists
bool hasParam(const SvcParam::SvcParamKey &key) const;
uint16_t d_priority;
DNSName d_target;
set<SvcParam> d_params;
+
+ // Get the iterator to parameter with |key|, return value can be d_params::end
+ set<SvcParam>::const_iterator getParamIt(const SvcParam::SvcParamKey &key) const;
};
class SVCBRecordContent : public SVCBBaseRecordContent