in src/util/rds_utils.cc [85:111]
std::string RdsUtils::GetRdsClusterHostUrl(const std::string& host) {
auto f = [ host ](const std::regex& pattern) {
std::smatch m;
if (std::regex_search(host, m, pattern) && m.size() > 1) {
std::string gr1 = m.size() > 1 ? m.str(1) : std::string("");
std::string gr2 = m.size() > 2 ? m.str(2) : std::string("");
std::string gr3 = m.size() > 3 ? m.str(3) : std::string("");
if (!gr1.empty() && !gr3.empty() &&
(strcmp_case_insensitive(gr2.c_str(), "cluster-") == 0 || strcmp_case_insensitive(gr2.c_str(), "cluster-ro-") == 0)) {
std::string result;
result.assign(gr1);
result.append(".cluster-");
result.append(gr3);
return result;
}
}
return std::string();
};
auto result = f(AURORA_CLUSTER_PATTERN);
if (!result.empty()) {
return result;
}
return f(AURORA_CHINA_CLUSTER_PATTERN);
}