}
DNSAction::Action operator()(DNSQuestion* dq, std::string* ruleresult) const override
{
+ std::lock_guard<decltype(d_lock)> guard(d_lock);
if (d_qps.check()) {
return Action::None;
}
return "qps limit to "+std::to_string(d_qps.getRate());
}
private:
+ mutable std::mutex d_lock;
QPSLimiter d_qps;
};
QPSPoolAction(unsigned int limit, const std::string& pool) : d_qps(limit, limit), d_pool(pool) {}
DNSAction::Action operator()(DNSQuestion* dq, std::string* ruleresult) const override
{
+ std::lock_guard<decltype(d_lock)> guard(d_lock);
if (d_qps.check()) {
- *ruleresult=d_pool;
+ *ruleresult = d_pool;
return Action::Pool;
}
else {
}
private:
+ mutable std::mutex d_lock;
QPSLimiter d_qps;
std::string d_pool;
};