in aios/apps/facility/swift/client/SwiftWriterConfig.cpp [143:276]
bool SwiftWriterConfig::parseFromString(const string &configStr) {
try {
autil::legacy::FromJsonString(*this, configStr);
return true;
} catch (const autil::legacy::ExceptionBase &e) {}
#define PARSE_SWIFT_WRITER_CONFIG(keyName, valueName, valueType, parseFunc) \
else if (key == keyName) { \
valueType value; \
if (!parseFunc(valueStr.c_str(), value)) { \
AUTIL_LOG(ERROR, \
"Invalid swift writer config [%s], needed type[%s], actually[%s].", \
keyName, \
#valueType, \
valueStr.c_str()); \
return false; \
} \
valueName = value; \
}
StringTokenizer st(
configStr, WRITER_CONFIG_SEPERATOR, StringTokenizer::TOKEN_IGNORE_EMPTY | StringTokenizer::TOKEN_TRIM);
for (StringTokenizer::Iterator it = st.begin(); it != st.end(); it++) {
StringTokenizer st2(*it, WRITER_CONFIG_KV_SEPERATOR, StringTokenizer::TOKEN_TRIM | StringTokenizer::TOKEN_TRIM);
if (st2.getNumTokens() != 2) {
AUTIL_LOG(ERROR, "Invalid config item: [%s]", (*it).c_str());
return false;
}
string key = st2[0];
string valueStr = st2[1];
if (key == WRITER_TOPIC_NAME) {
topicName = valueStr;
} else if (key == WRITER_CONFIG_MODE) {
if (!parseMode(valueStr)) {
return false;
}
} else if (key == WRITER_CONFIG_REQUEST_COMPRESS) {
if (valueStr == "true") {
compress = true;
} else {
compress = false;
}
} else if (key == WRITER_CONFIG_MESSAGE_COMPRESS) {
if (valueStr == "true") {
compressMsg = true;
} else {
compressMsg = false;
}
} else if (key == WRITER_CONFIG_MESSAGE_COMPRESS_IN_BROKER) {
if (valueStr == "true") {
compressMsgInBroker = true;
} else {
compressMsgInBroker = false;
}
} else if (key == WRITER_CONFIG_MERGE_MESSAGE) {
if (valueStr == "true") {
mergeMsg = true;
} else {
mergeMsg = false;
}
} else if (key == WRITER_CONFIG_NEED_TIMESTAMP) {
if (valueStr == "true") {
needTimestamp = true;
} else {
needTimestamp = false;
}
} else if (key == WRITER_CONFIG_WRITER_NAME) {
writerName = valueStr;
}
PARSE_SWIFT_WRITER_CONFIG(WRITER_CONFIG_RETRY_TIMES, retryTimes, uint32_t, StringUtil::strToUInt32)
PARSE_SWIFT_WRITER_CONFIG(
WRITER_CONFIG_RETRY_TIME_INTERVAL, retryTimeInterval, uint64_t, StringUtil::strToUInt64)
PARSE_SWIFT_WRITER_CONFIG(
WRITER_CONFIG_REQUEST_SEND_BYTE, oneRequestSendByteCount, uint64_t, StringUtil::strToUInt64)
PARSE_SWIFT_WRITER_CONFIG(WRITER_CONFIG_MAX_BUFFER_BYTE, maxBufferSize, uint64_t, StringUtil::strToUInt64)
PARSE_SWIFT_WRITER_CONFIG(
WRITER_CONFIG_MAX_KEEP_IN_BUFFER_TIME, maxKeepInBufferTime, uint64_t, StringUtil::strToUInt64)
PARSE_SWIFT_WRITER_CONFIG(
WRITER_CONFIG_SEND_REQUEST_LOOP_INTERVAL, sendRequestLoopInterval, uint64_t, StringUtil::strToUInt64)
PARSE_SWIFT_WRITER_CONFIG(WRITER_CONFIG_WAIT_LOOP_INTERVAL, waitLoopInterval, uint64_t, StringUtil::strToUInt64)
PARSE_SWIFT_WRITER_CONFIG(
WRITER_CONFIG_BROKER_BUSY_WAIT_INTERVAL_MIN, brokerBusyWaitIntervalMin, uint64_t, StringUtil::strToUInt64)
PARSE_SWIFT_WRITER_CONFIG(
WRITER_CONFIG_BROKER_BUSY_WAIT_INTERVAL_MAX, brokerBusyWaitIntervalMax, uint64_t, StringUtil::strToUInt64)
PARSE_SWIFT_WRITER_CONFIG(
WRITER_CONFIG_WAIT_FINISHED_WRITER_TIME, waitFinishedWriterTime, uint64_t, StringUtil::strToUInt64)
PARSE_SWIFT_WRITER_CONFIG(
WRITER_CONFIG_COMPRESS_THRESHOLD_IN_BYTES, compressThresholdInBytes, uint64_t, StringUtil::strToUInt64)
PARSE_SWIFT_WRITER_CONFIG(WRITER_CONFIG_BROKER_COMMIT_PROGRESS_DETECTION_INTERVAL,
commitDetectionInterval,
uint64_t,
StringUtil::strToUInt64)
PARSE_SWIFT_WRITER_CONFIG(WRITER_CONFIG_SYNC_SEND_TIMEOUT, syncSendTimeout, uint64_t, StringUtil::strToUInt64)
PARSE_SWIFT_WRITER_CONFIG(WRITER_CONFIG_ASYNC_SEND_TIMEOUT, asyncSendTimeout, uint64_t, StringUtil::strToUInt64)
PARSE_SWIFT_WRITER_CONFIG(WRITER_CONFIG_MESSAGE_FORMAT, messageFormat, uint32_t, StringUtil::strToUInt32)
PARSE_SWIFT_WRITER_CONFIG(
WRITER_CONFIG_MERGE_THRESHOLD_IN_COUNT, mergeThresholdInCount, uint16_t, StringUtil::strToUInt16)
PARSE_SWIFT_WRITER_CONFIG(
WRITER_CONFIG_MERGE_THRESHOLD_IN_SIZE, mergeThresholdInSize, uint64_t, StringUtil::strToUInt64)
PARSE_SWIFT_WRITER_CONFIG(WRITER_CONFIG_SCHEMA_VERSION, schemaVersion, int32_t, StringUtil::strToInt32)
PARSE_SWIFT_WRITER_CONFIG(WRITER_CONFIG_MAJOR_VERSION, majorVersion, uint32_t, StringUtil::strToUInt32)
PARSE_SWIFT_WRITER_CONFIG(WRITER_CONFIG_MINOR_VERSION, minorVersion, uint32_t, StringUtil::strToUInt32)
else if (key == WRITER_CONFIG_FUNCTION_CHAIN) {
functionChain = valueStr;
}
else if (key == WRITER_CONFIG_ZK_PATH) {
zkPath = valueStr;
}
else if (key == WRITER_CONFIG_IDENTITY) {
writerIdentity = valueStr;
}
else if (key == WRITER_CONFIG_ACCESS_ID) {
accessId = valueStr;
}
else if (key == WRITER_CONFIG_ACCESS_KEY) {
accessKey = valueStr;
}
else {
AUTIL_LOG(WARN, "Unknown config key : [%s]", key.c_str());
}
}
#undef PARSE_SWIFT_WRITER_CONFIG
if (compressThresholdInBytes == DEFAULT_COMPRESS_THRESHOLD_IN_BYTES && compressMsg) {
compressThresholdInBytes = 0; // compress all
}
if (mergeThresholdInCount > MAX_MERGE_THRESHOLD_IN_COUNT) {
mergeThresholdInCount = MAX_MERGE_THRESHOLD_IN_COUNT;
}
if (writerIdentity.empty()) {
writerIdentity = StringUtil::toString(TimeUtility::currentTime());
}
return true;
}