in common/ConfigCommon.cpp [122:333]
ResponseCode ConfigCommon::InitializeCommon(const util::String &config_file_relative_path) {
util::String config_file_absolute_path = GetCurrentPath();
if (0 == config_file_absolute_path.length()) {
return ResponseCode::FILE_OPEN_ERROR;
}
#ifdef WIN32
config_file_absolute_path.append("\\");
#else
config_file_absolute_path.append("/");
#endif
config_file_absolute_path.append(config_file_relative_path);
ResponseCode rc = util::JsonParser::InitializeFromJsonFile(sdk_config_json_, config_file_absolute_path);
if (ResponseCode::SUCCESS != rc) {
AWS_LOG_ERROR(LOG_TAG_SAMPLE_CONFIG_COMMON,
"Error in Parsing. %s\n parse error code : %d, offset : %d",
ResponseHelper::ToString(rc).c_str(),
static_cast<int>(util::JsonParser::GetParseErrorCode(sdk_config_json_)),
static_cast<unsigned int>(util::JsonParser::GetParseErrorOffset(sdk_config_json_)));
return rc;
}
util::String temp_str;
rc = util::JsonParser::GetStringValue(sdk_config_json_, SDK_CONFIG_ENDPOINT_KEY, endpoint_);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_ENDPOINT_KEY);
return rc;
}
rc = util::JsonParser::GetUint16Value(sdk_config_json_, SDK_CONFIG_ENDPOINT_MQTT_PORT_KEY, endpoint_mqtt_port_);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_ENDPOINT_MQTT_PORT_KEY);
return rc;
}
rc = util::JsonParser::GetUint16Value(sdk_config_json_,
SDK_CONFIG_ENDPOINT_HTTPS_PORT_KEY,
endpoint_https_port_);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_ENDPOINT_HTTPS_PORT_KEY);
return rc;
}
rc = util::JsonParser::GetUint16Value(sdk_config_json_, SDK_CONFIG_ENDPOINT_GREENGRASS_DISCOVERY_PORT_KEY,
endpoint_greengrass_discovery_port_);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_ENDPOINT_GREENGRASS_DISCOVERY_PORT_KEY);
return rc;
}
rc = util::JsonParser::GetStringValue(sdk_config_json_, SDK_CONFIG_ROOT_CA_RELATIVE_KEY, temp_str);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_ROOT_CA_RELATIVE_KEY);
return rc;
}
root_ca_path_ = GetCurrentPath();
if (0 == root_ca_path_.length()) {
return ResponseCode::FILE_OPEN_ERROR;
}
root_ca_path_.append("/");
root_ca_path_.append(temp_str);
rc = util::JsonParser::GetStringValue(sdk_config_json_, SDK_CONFIG_DEVICE_CERT_RELATIVE_KEY, temp_str);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_DEVICE_CERT_RELATIVE_KEY);
return rc;
}
client_cert_path_ = GetCurrentPath();
if (0 == client_cert_path_.length()) {
return ResponseCode::FILE_OPEN_ERROR;
}
client_cert_path_.append("/");
client_cert_path_.append(temp_str);
rc = util::JsonParser::GetStringValue(sdk_config_json_, SDK_CONFIG_DEVICE_PRIVATE_KEY_RELATIVE_KEY, temp_str);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_DEVICE_PRIVATE_KEY_RELATIVE_KEY);
return rc;
}
client_key_path_ = GetCurrentPath();
if (0 == client_key_path_.length()) {
return ResponseCode::FILE_OPEN_ERROR;
}
client_key_path_.append("/");
client_key_path_.append(temp_str);
rc = util::JsonParser::GetStringValue(sdk_config_json_, SDK_CONFIG_CLIENT_ID_KEY, base_client_id_);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_CLIENT_ID_KEY);
return rc;
}
rc = util::JsonParser::GetStringValue(sdk_config_json_, SDK_CONFIG_THING_NAME_KEY, thing_name_);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_THING_NAME_KEY);
return rc;
}
rc = util::JsonParser::GetStringValue(sdk_config_json_, SDK_CONFIG_AWS_REGION_KEY, aws_region_);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_AWS_REGION_KEY);
return rc;
}
rc = util::JsonParser::GetStringValue(sdk_config_json_, SDK_CONFIG_AWS_ACCESS_KEY_ID_KEY, aws_access_key_id_);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_AWS_ACCESS_KEY_ID_KEY);
return rc;
}
rc = util::JsonParser::GetStringValue(sdk_config_json_,
SDK_CONFIG_AWS_SECRET_ACCESS_KEY,
aws_secret_access_key_);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_AWS_SECRET_ACCESS_KEY);
return rc;
}
rc = util::JsonParser::GetStringValue(sdk_config_json_, SDK_CONFIG_AWS_SESSION_TOKEN_KEY, aws_session_token_);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_AWS_SESSION_TOKEN_KEY);
return rc;
}
uint32_t temp;
rc = util::JsonParser::GetUint32Value(sdk_config_json_, SDK_CONFIG_MQTT_COMMAND_TIMEOUT_MSECS_KEY, temp);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_MQTT_COMMAND_TIMEOUT_MSECS_KEY);
return rc;
}
mqtt_command_timeout_ = std::chrono::milliseconds(temp);
rc = util::JsonParser::GetUint32Value(sdk_config_json_, SDK_CONFIG_TLS_HANDSHAKE_TIMEOUT_MSECS_KEY, temp);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_TLS_HANDSHAKE_TIMEOUT_MSECS_KEY);
return rc;
}
tls_handshake_timeout_ = std::chrono::milliseconds(temp);
rc = util::JsonParser::GetUint32Value(sdk_config_json_, SDK_CONFIG_TLS_READ_TIMEOUT_MSECS_KEY, temp);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_TLS_READ_TIMEOUT_MSECS_KEY);
return rc;
}
tls_read_timeout_ = std::chrono::milliseconds(temp);
rc = util::JsonParser::GetUint32Value(sdk_config_json_, SDK_CONFIG_TLS_WRITE_TIMEOUT_MSECS_KEY, temp);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_TLS_WRITE_TIMEOUT_MSECS_KEY);
return rc;
}
tls_write_timeout_ = std::chrono::milliseconds(temp);
rc = util::JsonParser::GetUint32Value(sdk_config_json_, SDK_CONFIG_KEEPALIVE_INTERVAL_SECS_KEY, temp);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_KEEPALIVE_INTERVAL_SECS_KEY);
return rc;
}
keep_alive_timeout_secs_ = std::chrono::seconds(temp);
rc = util::JsonParser::GetUint32Value(sdk_config_json_, SDK_CONFIG_MIN_RECONNECT_INTERVAL_SECS_KEY, temp);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_MIN_RECONNECT_INTERVAL_SECS_KEY);
return rc;
}
minimum_reconnect_interval_ = std::chrono::seconds(temp);
rc = util::JsonParser::GetUint32Value(sdk_config_json_, SDK_CONFIG_MAX_RECONNECT_INTERVAL_SECS_KEY, temp);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_MAX_RECONNECT_INTERVAL_SECS_KEY);
return rc;
}
maximum_reconnect_interval_ = std::chrono::seconds(temp);
rc = util::JsonParser::GetSizeTValue(sdk_config_json_, SDK_CONFIG_MAX_TX_ACTION_QUEUE_LENGTH_KEY,
maximum_outgoing_action_queue_length_);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_MAX_TX_ACTION_QUEUE_LENGTH_KEY);
return rc;
}
rc = util::JsonParser::GetSizeTValue(sdk_config_json_, SDK_CONFIG_MAX_ACKS_TO_WAIT_FOR_KEY,
max_pending_acks_);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_MAX_ACKS_TO_WAIT_FOR_KEY);
return rc;
}
rc = util::JsonParser::GetBoolValue(sdk_config_json_, SDK_CONFIG_IS_CLEAN_SESSION_KEY, is_clean_session_);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_IS_CLEAN_SESSION_KEY);
return rc;
}
rc = util::JsonParser::GetUint32Value(sdk_config_json_, SDK_CONFIG_ACTION_PROCESSING_RATE_KEY,
action_processing_rate_hz_);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, SDK_CONFIG_ACTION_PROCESSING_RATE_KEY);
return rc;
}
rc = util::JsonParser::GetUint32Value(sdk_config_json_, DISCOVER_ACTION_TIMEOUT_MSECS_KEY, temp);
if (ResponseCode::SUCCESS != rc) {
LogParseError(rc, sdk_config_json_, DISCOVER_ACTION_TIMEOUT_MSECS_KEY);
return rc;
}
discover_action_timeout_ = std::chrono::milliseconds(temp);
return rc;
}