Configuration: nxt_conf_map_object() improvements.

This commit is contained in:
Valentin Bartenev
2017-07-10 17:55:51 +03:00
parent c0674de78d
commit eb4c2e4a21
3 changed files with 18 additions and 35 deletions

View File

@@ -349,7 +349,8 @@ nxt_conf_get_object_member(nxt_conf_value_t *value, nxt_str_t *name,
nxt_int_t nxt_int_t
nxt_conf_map_object(nxt_conf_value_t *value, nxt_conf_map_t *map, void *data) nxt_conf_map_object(nxt_conf_value_t *value, nxt_conf_map_t *map, nxt_uint_t n,
void *data)
{ {
nxt_uint_t i; nxt_uint_t i;
nxt_conf_value_t *v; nxt_conf_value_t *v;
@@ -367,7 +368,7 @@ nxt_conf_map_object(nxt_conf_value_t *value, nxt_conf_map_t *map, void *data)
void *v; void *v;
} *ptr; } *ptr;
for (i = 0; map[i].name.length != 0; i++) { for (i = 0; i < n; i++) {
v = nxt_conf_get_object_member(value, &map[i].name, NULL); v = nxt_conf_get_object_member(value, &map[i].name, NULL);
@@ -381,11 +382,9 @@ nxt_conf_map_object(nxt_conf_value_t *value, nxt_conf_map_t *map, void *data)
case NXT_CONF_MAP_INT8: case NXT_CONF_MAP_INT8:
if (v->type != NXT_CONF_VALUE_BOOLEAN) { if (v->type == NXT_CONF_VALUE_BOOLEAN) {
return NXT_ERROR;
}
ptr->ui8 = v->u.boolean; ptr->ui8 = v->u.boolean;
}
break; break;
@@ -397,7 +396,7 @@ nxt_conf_map_object(nxt_conf_value_t *value, nxt_conf_map_t *map, void *data)
case NXT_CONF_MAP_MSEC: case NXT_CONF_MAP_MSEC:
if (v->type != NXT_CONF_VALUE_INTEGER) { if (v->type != NXT_CONF_VALUE_INTEGER) {
return NXT_ERROR; break;
} }
switch (map[i].type) { switch (map[i].type) {
@@ -440,21 +439,17 @@ nxt_conf_map_object(nxt_conf_value_t *value, nxt_conf_map_t *map, void *data)
} else if (v->type == NXT_CONF_VALUE_INTEGER) { } else if (v->type == NXT_CONF_VALUE_INTEGER) {
ptr->dbl = v->u.integer; ptr->dbl = v->u.integer;
} else {
return NXT_ERROR;
} }
break; break;
case NXT_CONF_MAP_STR: case NXT_CONF_MAP_STR:
if (v->type != NXT_CONF_VALUE_SHORT_STRING if (v->type == NXT_CONF_VALUE_SHORT_STRING
&& v->type != NXT_CONF_VALUE_STRING) || v->type == NXT_CONF_VALUE_STRING)
{ {
return NXT_ERROR;
}
nxt_conf_get_string(v, &ptr->str); nxt_conf_get_string(v, &ptr->str);
}
break; break;

View File

@@ -58,7 +58,7 @@ nxt_conf_value_t *nxt_conf_next_object_member(nxt_conf_value_t *value,
nxt_str_t *name, uint32_t *next); nxt_str_t *name, uint32_t *next);
nxt_int_t nxt_conf_map_object(nxt_conf_value_t *value, nxt_conf_map_t *map, nxt_int_t nxt_conf_map_object(nxt_conf_value_t *value, nxt_conf_map_t *map,
void *data); nxt_uint_t n, void *data);
nxt_int_t nxt_conf_op_compile(nxt_mp_t *mp, nxt_conf_op_t **ops, nxt_int_t nxt_conf_op_compile(nxt_mp_t *mp, nxt_conf_op_t **ops,
nxt_conf_value_t *root, nxt_str_t *path, nxt_conf_value_t *value); nxt_conf_value_t *root, nxt_str_t *path, nxt_conf_value_t *value);

View File

@@ -235,10 +235,6 @@ static nxt_conf_map_t nxt_router_conf[] = {
NXT_CONF_MAP_INT32, NXT_CONF_MAP_INT32,
offsetof(nxt_router_conf_t, threads), offsetof(nxt_router_conf_t, threads),
}, },
{
nxt_null_string, 0, 0,
},
}; };
@@ -254,10 +250,6 @@ static nxt_conf_map_t nxt_router_app_conf[] = {
NXT_CONF_MAP_INT32, NXT_CONF_MAP_INT32,
offsetof(nxt_router_app_conf_t, workers), offsetof(nxt_router_app_conf_t, workers),
}, },
{
nxt_null_string, 0, 0,
},
}; };
@@ -267,10 +259,6 @@ static nxt_conf_map_t nxt_router_listener_conf[] = {
NXT_CONF_MAP_STR, NXT_CONF_MAP_STR,
offsetof(nxt_router_listener_conf_t, application), offsetof(nxt_router_listener_conf_t, application),
}, },
{
nxt_null_string, 0, 0,
},
}; };
@@ -292,10 +280,6 @@ static nxt_conf_map_t nxt_router_http_conf[] = {
NXT_CONF_MAP_MSEC, NXT_CONF_MAP_MSEC,
offsetof(nxt_socket_conf_t, header_read_timeout), offsetof(nxt_socket_conf_t, header_read_timeout),
}, },
{
nxt_null_string, 0, 0,
},
}; };
@@ -330,7 +314,8 @@ nxt_router_conf_create(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
return NXT_ERROR; return NXT_ERROR;
} }
ret = nxt_conf_map_object(conf, nxt_router_conf, tmcf->conf); ret = nxt_conf_map_object(conf, nxt_router_conf,
nxt_nitems(nxt_router_conf), tmcf->conf);
if (ret != NXT_OK) { if (ret != NXT_OK) {
nxt_log(task, NXT_LOG_CRIT, "root map error"); nxt_log(task, NXT_LOG_CRIT, "root map error");
return NXT_ERROR; return NXT_ERROR;
@@ -385,7 +370,8 @@ nxt_router_conf_create(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
continue; continue;
} }
ret = nxt_conf_map_object(application, nxt_router_app_conf, &apcf); ret = nxt_conf_map_object(application, nxt_router_app_conf,
nxt_nitems(nxt_router_app_conf), &apcf);
if (ret != NXT_OK) { if (ret != NXT_OK) {
nxt_log(task, NXT_LOG_CRIT, "application map error"); nxt_log(task, NXT_LOG_CRIT, "application map error");
goto app_fail; goto app_fail;
@@ -465,7 +451,8 @@ nxt_router_conf_create(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
goto fail; goto fail;
} }
ret = nxt_conf_map_object(listener, nxt_router_listener_conf, &lscf); ret = nxt_conf_map_object(listener, nxt_router_listener_conf,
nxt_nitems(nxt_router_listener_conf), &lscf);
if (ret != NXT_OK) { if (ret != NXT_OK) {
nxt_log(task, NXT_LOG_CRIT, "listener map error"); nxt_log(task, NXT_LOG_CRIT, "listener map error");
goto fail; goto fail;
@@ -479,7 +466,8 @@ nxt_router_conf_create(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
skcf->header_read_timeout = 5000; skcf->header_read_timeout = 5000;
if (http != NULL) { if (http != NULL) {
ret = nxt_conf_map_object(http, nxt_router_http_conf, skcf); ret = nxt_conf_map_object(http, nxt_router_http_conf,
nxt_nitems(nxt_router_http_conf), skcf);
if (ret != NXT_OK) { if (ret != NXT_OK) {
nxt_log(task, NXT_LOG_CRIT, "http map error"); nxt_log(task, NXT_LOG_CRIT, "http map error");
goto fail; goto fail;