in canary/producer-c/canary/KvsProducerSampleCloudwatch.cpp [66:151]
STATUS parseConfigFile(PCanaryConfig pCanaryConfig, PCHAR filePath)
{
STATUS retStatus = STATUS_SUCCESS;
UINT64 size;
jsmn_parser parser;
CHAR final_attr_str[256];
int r;
BYTE params[1024];
CHK(pCanaryConfig != NULL, STATUS_NULL_ARG);
CHK_STATUS(readFile(filePath, TRUE, NULL, &size));
CHK_ERR(size < 1024, STATUS_INVALID_ARG_LEN, "File size too big. Max allowed is 1024 bytes");
CHK_STATUS(readFile(filePath, TRUE, params, &size));
jsmn_init(&parser);
jsmntok_t tokens[256];
r = jsmn_parse(&parser, (PCHAR) params, size, tokens, 256);
for (UINT32 i = 1; i < (UINT32) r; i++) {
if (compareJsonString((PCHAR) params, &tokens[i], JSMN_STRING, CANARY_STREAM_NAME_ENV_VAR)) {
getJsonValue(params, tokens[i + 1], pCanaryConfig->streamNamePrefix);
i++;
} else if (compareJsonString((PCHAR) params, &tokens[i], JSMN_STRING, CANARY_TYPE_ENV_VAR)) {
getJsonValue(params, tokens[i + 1], pCanaryConfig->canaryTypeStr);
i++;
} else if (compareJsonString((PCHAR) params, &tokens[i], JSMN_STRING, FRAGMENT_SIZE_ENV_VAR)) {
getJsonValue(params, tokens[i + 1], final_attr_str);
STRTOUI64(final_attr_str, NULL, 10, &pCanaryConfig->fragmentSizeInBytes);
i++;
} else if (compareJsonString((PCHAR) params, &tokens[i], JSMN_STRING, CANARY_DURATION_ENV_VAR)) {
getJsonValue(params, tokens[i + 1], final_attr_str);
STRTOUI64(final_attr_str, NULL, 10, &pCanaryConfig->canaryDuration);
i++;
} else if (compareJsonString((PCHAR) params, &tokens[i], JSMN_STRING, CANARY_BUFFER_DURATION_ENV_VAR)) {
getJsonValue(params, tokens[i + 1], final_attr_str);
STRTOUI64(final_attr_str, NULL, 10, &pCanaryConfig->bufferDuration);
pCanaryConfig->bufferDuration = pCanaryConfig->bufferDuration * HUNDREDS_OF_NANOS_IN_A_SECOND;
i++;
} else if (compareJsonString((PCHAR) params, &tokens[i], JSMN_STRING, CANARY_STORAGE_SIZE_ENV_VAR)) {
getJsonValue(params, tokens[i + 1], final_attr_str);
STRTOUI64(final_attr_str, NULL, 10, &pCanaryConfig->storageSizeInBytes);
i++;
} else if (compareJsonString((PCHAR) params, &tokens[i], JSMN_STRING, CANARY_LABEL_ENV_VAR)) {
getJsonValue(params, tokens[i + 1], pCanaryConfig->canaryLabel);
i++;
} else if (compareJsonString((PCHAR) params, &tokens[i], JSMN_STRING, CANARY_SCENARIO_ENV_VAR)) {
getJsonValue(params, tokens[i + 1], pCanaryConfig->canaryScenario);
i++;
} else if (compareJsonString((PCHAR) params, &tokens[i], JSMN_STRING, CANARY_TRACK_TYPE_ENV_VAR)) {
getJsonValue(params, tokens[i + 1], pCanaryConfig->canaryTrackType);
i++;
} else if (compareJsonString((PCHAR) params, &tokens[i], JSMN_STRING, CANARY_CP_API_ENV_VAR)) {
getJsonValue(params, tokens[i + 1], pCanaryConfig->canaryCpUrl);
i++;
}
// IoT related items
else if (compareJsonString((PCHAR) params, &tokens[i], JSMN_STRING, (PCHAR) CANARY_USE_IOT_CREDENTIALS_ENV_VAR)) {
getJsonBoolValue(params, tokens[++i], &pCanaryConfig->useIotCredentialProvider);
i++;
} else if (compareJsonString((PCHAR) params, &tokens[i], JSMN_STRING, (PCHAR) IOT_CORE_CREDENTIAL_ENDPOINT_ENV_VAR)) {
getJsonValue(params, tokens[i + 1], pCanaryConfig->iotCoreCredentialEndPointFile);
CHK_STATUS(readFile(pCanaryConfig->iotCoreCredentialEndPointFile, TRUE, NULL, &size));
CHK_ERR(size != 0, STATUS_PRODUCER_EMPTY_IOT_CRED_FILE, "Empty credential file");
CHK_STATUS(readFile(pCanaryConfig->iotCoreCredentialEndPointFile, TRUE,pCanaryConfig->iotEndpoint, &size));
pCanaryConfig->iotEndpoint[size - 1] = '\0';
i++;
} else if (compareJsonString((PCHAR) params, &tokens[i], JSMN_STRING, (PCHAR) IOT_CORE_CERT_ENV_VAR)) {
getJsonValue(params, tokens[i + 1], pCanaryConfig->iotCoreCert);
i++;
} else if (compareJsonString((PCHAR) params, &tokens[i], JSMN_STRING, (PCHAR) IOT_CORE_PRIVATE_KEY_ENV_VAR)) {
getJsonValue(params, tokens[i + 1], pCanaryConfig->iotCorePrivateKey);
i++;
} else if (compareJsonString((PCHAR) params, &tokens[i], JSMN_STRING, (PCHAR) IOT_CORE_ROLE_ALIAS_ENV_VAR)) {
getJsonValue(params, tokens[i + 1], pCanaryConfig->iotCoreRoleAlias);
i++;
} else if (compareJsonString((PCHAR) params, &tokens[i], JSMN_STRING, (PCHAR) IOT_CORE_THING_NAME_ENV_VAR)) {
getJsonValue(params, tokens[i + 1], pCanaryConfig->iotThingName);
i++;
}
}
CleanUp:
return retStatus;
}