in nlsCppSdk/framework/common/nlsClientImpl.cpp [649:724]
int NlsClientImpl::vipServerListGetUrlImpl(
const std::string &vipServerDomainList, const std::string &targetDomain,
std::string &url) {
#ifdef ENABLE_VIPSERVER
std::string domainPattern = ",";
std::string portPattern = ":";
std::string vipServerBuff, serverIp, serverPort;
int port = VipServerPort;
LOG_DEBUG("vipServerDomainList: %s.", vipServerDomainList.c_str());
size_t domainStart = 0,
domainSeek = vipServerDomainList.find_first_of(domainPattern, 0);
size_t portSeek = 0;
while (domainSeek != vipServerDomainList.npos) {
if (domainStart != domainSeek) {
vipServerBuff =
vipServerDomainList.substr(domainStart, domainSeek - domainStart);
LOG_DEBUG("vipServerBuff: %s", vipServerBuff.c_str());
portSeek = vipServerBuff.find_first_of(portPattern, 0);
if (portSeek != vipServerBuff.npos) {
serverIp = vipServerBuff.substr(0, portSeek);
serverPort = vipServerBuff.substr(portSeek + 1,
vipServerBuff.length() - portSeek);
if (!serverPort.empty()) {
port = atoi(serverPort.c_str());
}
} else {
serverIp = vipServerBuff;
}
// Get ip
if (Success == vipServerGetIp(serverIp, port, targetDomain, url)) {
LOG_DEBUG("vipServerGetIp successed:%s.", url.c_str());
return Success;
} else {
MUTEX_LOCK(_mtx);
_isInitalizeVsClient = false;
VipClientApi::UnInit();
MUTEX_UNLOCK(_mtx);
}
}
domainStart = domainSeek + 1;
domainSeek = vipServerDomainList.find_first_of(domainPattern, domainStart);
}
LOG_DEBUG("Last vipServerBuff: %s", vipServerBuff.c_str());
port = VipServerPort;
if (!vipServerDomainList.substr(domainStart).empty()) {
vipServerBuff = vipServerDomainList.substr(domainStart);
portSeek = vipServerBuff.find_first_of(portPattern, 0);
if (portSeek != vipServerBuff.npos) {
serverIp = vipServerBuff.substr(0, portSeek);
serverPort =
vipServerBuff.substr(portSeek + 1, vipServerBuff.size() - portSeek);
if (!serverPort.empty()) {
port = atoi(serverPort.c_str());
}
} else {
serverIp = vipServerBuff;
}
// Get ip
return vipServerGetIp(serverIp, port, targetDomain, url);
}
#else
LOG_WARN("Donnot enable VipServer.");
#endif // ENABLE_VIPSERVER
return Success;
}