in aios/apps/facility/swift/client/SwiftClientConfig.cpp [76:179]
bool SwiftClientConfig::parseFromString(const std::string &configStr) {
try {
autil::legacy::FromJsonString(*this, configStr);
return !zkPath.empty();
} catch (const autil::legacy::ExceptionBase &e) {}
StringTokenizer st(
configStr, CLIENT_CONFIG_SEPERATOR, StringTokenizer::TOKEN_IGNORE_EMPTY | StringTokenizer::TOKEN_TRIM);
for (StringTokenizer::Iterator it = st.begin(); it != st.end(); it++) {
size_t pos = it->find(CLIENT_CONFIG_KV_SEPERATOR);
if (pos == string::npos) {
AUTIL_LOG(ERROR, "Invalid config item: [%s]", (*it).c_str());
return false;
}
string key = it->substr(0, pos);
string valueStr = it->substr(pos + 1);
if (key == CLIENT_CONFIG_RETRY_TIME) {
if (!StringUtil::strToUInt32(valueStr.c_str(), retryTimes)) {
return false;
}
} else if (key == CLIENT_CONFIG_RETRY_TIME_INTERVAL) {
if (!StringUtil::strToInt64(valueStr.c_str(), retryTimeInterval)) {
return false;
}
} else if (key == CLIENT_CONFIG_MAX_WRITE_BUFFER_SIZE_MB) {
if (!StringUtil::strToInt64(valueStr.c_str(), maxWriteBufferSizeMb)) {
return false;
}
} else if (key == CLIENT_CONFIG_TEMP_WRITE_BUFFER_PERCENT) {
if (!StringUtil::strToDouble(valueStr.c_str(), tempWriteBufferPercent)) {
return false;
}
} else if (key == CLIENT_CONFIG_BUFFER_BLOCK_SIZE_KB) {
if (!StringUtil::strToInt64(valueStr.c_str(), bufferBlockSizeKb)) {
return false;
}
} else if (key == CLIENT_CONFIG_LATELY_ERROR_TIME_MIN_INTERVAL_US) {
if (!StringUtil::strToInt64(valueStr.c_str(), latelyErrorTimeMinIntervalUs)) {
return false;
}
} else if (key == CLIENT_CONFIG_LATELY_ERROR_TIME_MAX_INTERVAL_US) {
if (!StringUtil::strToInt64(valueStr.c_str(), latelyErrorTimeMaxIntervalUs)) {
return false;
}
} else if (key == CLIENT_CONFIG_FB_BUFFER_RECYCLE_SIZE_KB) {
if (!StringUtil::strToInt64(valueStr.c_str(), fbWriterRecycleSizeKb)) {
return false;
}
} else if (key == CLIENT_CONFIG_MERGE_MESSAGE_THREAD_NUM) {
if (!StringUtil::strToUInt32(valueStr.c_str(), mergeMessageThreadNum)) {
return false;
}
} else if (key == CLIENT_CONFIG_IO_THREAD_NUM) {
if (!StringUtil::strToUInt32(valueStr.c_str(), ioThreadNum)) {
return false;
}
} else if (key == CLIENT_CONFIG_RPC_SEND_QUEUE_SIZE) {
if (!StringUtil::strToUInt32(valueStr.c_str(), rpcSendQueueSize)) {
return false;
}
} else if (key == CLIENT_CONFIG_RPC_TIMEOUT) {
if (!StringUtil::strToUInt32(valueStr.c_str(), rpcTimeout)) {
return false;
}
} else if (key == CLIENT_CONFIG_ZK_PATH) {
zkPath = valueStr;
} else if (key == CLIENT_CONFIG_LOG_CONFIG_FILE) {
logConfigFile = valueStr;
} else if (key == CLIENT_CONFIG_USE_FOLLOWER_ADMIN) {
bool ret = true;
if (StringUtil::parseTrueFalse(valueStr, ret)) {
useFollowerAdmin = ret;
}
} else if (key == CLIENT_CONFIG_TRACING_MSG_LEVEL) {
if (!StringUtil::strToUInt32(valueStr.c_str(), tracingMsgLevel)) {
return false;
}
} else if (key == CLIENT_CONFIG_CLIENT_IDENTITY) {
clientIdentity = valueStr;
} else if (key == CLIENT_CONFIG_ADMIN_TIMEOUT) {
if (!StringUtil::strToInt64(valueStr.c_str(), adminTimeout)) {
return false;
}
} else if (key == CLIENT_CONFIG_ADMIN_REFRESH_TIME) {
if (!StringUtil::strToInt64(valueStr.c_str(), refreshTime)) {
return false;
}
} else if (key == CLIENT_CONFIG_AUTHENTICATION_USERNAME) {
username = valueStr;
} else if (key == CLIENT_CONFIG_AUTHENTICATION_PASSWD) {
passwd = valueStr;
} else {
AUTIL_LOG(ERROR, "Unknown config key : [%s]", key.c_str());
return false;
}
}
if (latelyErrorTimeMaxIntervalUs < latelyErrorTimeMinIntervalUs) {
AUTIL_LOG(ERROR,
"error max [%ld] interval small than min [%ld]",
latelyErrorTimeMaxIntervalUs,
latelyErrorTimeMinIntervalUs);
return false;
}
return !zkPath.empty();
}