refactor: move tok advance and add assumption

master
Sean McBride 3 years ago
parent 68bf915c02
commit a07533bd2c

@ -170,6 +170,8 @@ parse_json(const char *json_buf, ssize_t json_buf_size, struct module_config **m
char key[32] = { 0 };
char val[256] = { 0 };
/* Assumption: Objects are never used within a module_config. This likely will not be true in the
* future due to routes or multiple entrypoints */
if (tokens[i].type == JSMN_OBJECT) {
assert(module_fields_remaining == 0);
module_fields_remaining = tokens[i].size;
@ -185,20 +187,20 @@ parse_json(const char *json_buf, ssize_t json_buf_size, struct module_config **m
/* Validate that key has a value */
if (!has_valid_size(tokens[i], key, 1)) goto json_parse_err;
/* Advance to Value */
i++;
if (strcmp(key, "name") == 0) {
i++;
if (!is_nonempty_string(tokens[i], key)) goto json_parse_err;
sprintf(val, "%.*s", tokens[i].end - tokens[i].start, json_buf + tokens[i].start);
(*module_config_vec)[module_idx].name = strndup(val, tokens[i].end - tokens[i].start);
} else if (strcmp(key, "path") == 0) {
i++;
if (!is_nonempty_string(tokens[i], key)) goto json_parse_err;
sprintf(val, "%.*s", tokens[i].end - tokens[i].start, json_buf + tokens[i].start);
(*module_config_vec)[module_idx].path = strndup(val, tokens[i].end - tokens[i].start);
} else if (strcmp(key, "port") == 0) {
i++;
if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err;
sprintf(val, "%.*s", tokens[i].end - tokens[i].start, json_buf + tokens[i].start);
@ -207,7 +209,6 @@ parse_json(const char *json_buf, ssize_t json_buf_size, struct module_config **m
panic("Expected port between 0 and 65535, saw %d\n", buffer);
(*module_config_vec)[module_idx].port = buffer;
} else if (strcmp(key, "expected-execution-us") == 0) {
i++;
if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err;
sprintf(val, "%.*s", tokens[i].end - tokens[i].start, json_buf + tokens[i].start);
@ -217,7 +218,6 @@ parse_json(const char *json_buf, ssize_t json_buf_size, struct module_config **m
(int64_t)RUNTIME_EXPECTED_EXECUTION_US_MAX, buffer);
(*module_config_vec)[module_idx].expected_execution_us = (uint32_t)buffer;
} else if (strcmp(key, "admissions-percentile") == 0) {
i++;
if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err;
sprintf(val, "%.*s", tokens[i].end - tokens[i].start, json_buf + tokens[i].start);
@ -226,7 +226,6 @@ parse_json(const char *json_buf, ssize_t json_buf_size, struct module_config **m
panic("admissions-percentile must be > 50 and <= 99 but was %d\n", buffer);
(*module_config_vec)[module_idx].admissions_percentile = buffer;
} else if (strcmp(key, "relative-deadline-us") == 0) {
i++;
if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err;
sprintf(val, "%.*s", tokens[i].end - tokens[i].start, json_buf + tokens[i].start);
@ -236,7 +235,6 @@ parse_json(const char *json_buf, ssize_t json_buf_size, struct module_config **m
(int64_t)RUNTIME_RELATIVE_DEADLINE_US_MAX, buffer);
(*module_config_vec)[module_idx].relative_deadline_us = (uint32_t)buffer;
} else if (strcmp(key, "http-req-size") == 0) {
i++;
if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err;
sprintf(val, "%.*s", tokens[i].end - tokens[i].start, json_buf + tokens[i].start);
@ -246,7 +244,6 @@ parse_json(const char *json_buf, ssize_t json_buf_size, struct module_config **m
(int64_t)RUNTIME_HTTP_REQUEST_SIZE_MAX, buffer);
(*module_config_vec)[module_idx].http_req_size = (int32_t)buffer;
} else if (strcmp(key, "http-resp-size") == 0) {
i++;
if (!has_valid_type(tokens[i], key, JSMN_PRIMITIVE)) goto json_parse_err;
sprintf(val, "%.*s", tokens[i].end - tokens[i].start, json_buf + tokens[i].start);
@ -256,7 +253,6 @@ parse_json(const char *json_buf, ssize_t json_buf_size, struct module_config **m
(int64_t)RUNTIME_HTTP_RESPONSE_SIZE_MAX, buffer);
(*module_config_vec)[module_idx].http_resp_size = (int32_t)buffer;
} else if (strcmp(key, "http-resp-content-type") == 0) {
i++;
if (!has_valid_type(tokens[i], key, JSMN_STRING)) goto json_parse_err;
sprintf(val, "%.*s", tokens[i].end - tokens[i].start, json_buf + tokens[i].start);

Loading…
Cancel
Save