refactor: keys global const array

master
Sean McBride 3 years ago
parent 012c67457f
commit 64d67185f6

@ -16,6 +16,30 @@
#define JSON_TOKENS_CAPACITY 16384 #define JSON_TOKENS_CAPACITY 16384
enum
{
module_name,
module_path,
module_port,
module_expected_execution_us,
module_admissions_percentile,
module_relative_deadline_us,
module_http_req_size,
module_http_resp_size,
module_http_resp_content_type,
module_keys_len
};
static const char *module_keys[module_keys_len] = { "name",
"path",
"port",
"expected-execution-us",
"admissions-percentile",
"relative-deadline-us",
"http-req-size",
"http-resp-size",
"http-resp-content-type" };
static inline char * static inline char *
jsmn_type(jsmntype_t type) jsmn_type(jsmntype_t type)
{ {
@ -208,53 +232,53 @@ parse_json(const char *json_buf, ssize_t json_buf_size, struct module_config **m
/* Advance to Value */ /* Advance to Value */
i++; i++;
if (strcmp(key, "name") == 0) { if (strcmp(key, module_keys[module_name]) == 0) {
if (!is_nonempty_string(tokens[i], key)) goto json_parse_err; if (!is_nonempty_string(tokens[i], key)) goto json_parse_err;
(*module_config_vec)[module_idx].name = strndup(json_buf + tokens[i].start, (*module_config_vec)[module_idx].name = strndup(json_buf + tokens[i].start,
tokens[i].end - tokens[i].start); tokens[i].end - tokens[i].start);
} else if (strcmp(key, "path") == 0) { } else if (strcmp(key, module_keys[module_path]) == 0) {
if (!is_nonempty_string(tokens[i], key)) goto json_parse_err; if (!is_nonempty_string(tokens[i], key)) goto json_parse_err;
(*module_config_vec)[module_idx].path = strndup(json_buf + tokens[i].start, (*module_config_vec)[module_idx].path = strndup(json_buf + tokens[i].start,
tokens[i].end - tokens[i].start); tokens[i].end - tokens[i].start);
} else if (strcmp(key, "port") == 0) { } else if (strcmp(key, module_keys[module_port]) == 0) {
if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err; if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err;
int rc = parse_uint16_t(tokens[i], json_buf, "port", int rc = parse_uint16_t(tokens[i], json_buf, module_keys[module_port],
&(*module_config_vec)[module_idx].port); &(*module_config_vec)[module_idx].port);
if (rc < 0) goto json_parse_err; if (rc < 0) goto json_parse_err;
} else if (strcmp(key, "expected-execution-us") == 0) { } else if (strcmp(key, module_keys[module_expected_execution_us]) == 0) {
if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err; if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err;
int rc = parse_uint32_t(tokens[i], json_buf, "expected-execution-us", int rc = parse_uint32_t(tokens[i], json_buf, module_keys[module_expected_execution_us],
&(*module_config_vec)[module_idx].expected_execution_us); &(*module_config_vec)[module_idx].expected_execution_us);
if (rc < 0) goto json_parse_err; if (rc < 0) goto json_parse_err;
} else if (strcmp(key, "admissions-percentile") == 0) { } else if (strcmp(key, module_keys[module_admissions_percentile]) == 0) {
if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err; if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err;
int rc = parse_uint8_t(tokens[i], json_buf, "admissions-percentile", int rc = parse_uint8_t(tokens[i], json_buf, module_keys[module_admissions_percentile],
&(*module_config_vec)[module_idx].admissions_percentile); &(*module_config_vec)[module_idx].admissions_percentile);
if (rc < 0) goto json_parse_err; if (rc < 0) goto json_parse_err;
} else if (strcmp(key, "relative-deadline-us") == 0) { } else if (strcmp(key, module_keys[module_relative_deadline_us]) == 0) {
if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err; if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err;
int rc = parse_uint32_t(tokens[i], json_buf, "relative-deadline-us", int rc = parse_uint32_t(tokens[i], json_buf, module_keys[module_relative_deadline_us],
&(*module_config_vec)[module_idx].relative_deadline_us); &(*module_config_vec)[module_idx].relative_deadline_us);
if (rc < 0) goto json_parse_err; if (rc < 0) goto json_parse_err;
} else if (strcmp(key, "http-req-size") == 0) { } else if (strcmp(key, module_keys[module_http_req_size]) == 0) {
if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err; if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err;
int rc = parse_uint32_t(tokens[i], json_buf, "http-req-size", int rc = parse_uint32_t(tokens[i], json_buf, module_keys[module_http_req_size],
&(*module_config_vec)[module_idx].http_req_size); &(*module_config_vec)[module_idx].http_req_size);
if (rc < 0) goto json_parse_err; if (rc < 0) goto json_parse_err;
} else if (strcmp(key, "http-resp-size") == 0) { } else if (strcmp(key, module_keys[module_http_resp_size]) == 0) {
if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err; if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err;
int rc = parse_uint32_t(tokens[i], json_buf, "http-resp-size", int rc = parse_uint32_t(tokens[i], json_buf, module_keys[module_http_resp_size],
&(*module_config_vec)[module_idx].http_resp_size); &(*module_config_vec)[module_idx].http_resp_size);
if (rc < 0) goto json_parse_err; if (rc < 0) goto json_parse_err;
} else if (strcmp(key, "http-resp-content-type") == 0) { } else if (strcmp(key, module_keys[module_http_resp_content_type]) == 0) {
if (!has_valid_type(tokens[i], key, JSMN_STRING)) goto json_parse_err; if (!has_valid_type(tokens[i], key, JSMN_STRING)) goto json_parse_err;
(*module_config_vec)[module_idx].http_resp_content_type = (*module_config_vec)[module_idx].http_resp_content_type =

Loading…
Cancel
Save