NJS: Simplified nxt_js_call()
This commit is contained in:
parent
465540157f
commit
63ad4deb8a
1 changed files with 18 additions and 41 deletions
59
src/nxt_js.c
59
src/nxt_js.c
|
@ -388,16 +388,19 @@ nxt_js_call(nxt_task_t *task, nxt_js_conf_t *jcf, nxt_js_cache_t *cache,
|
|||
njs_vm_t *vm;
|
||||
njs_int_t ret;
|
||||
njs_str_t res;
|
||||
njs_uint_t i, n;
|
||||
njs_value_t *value;
|
||||
njs_function_t *func;
|
||||
njs_opaque_value_t retval, opaque_value, arguments[6];
|
||||
|
||||
static const njs_str_t uri_str = njs_str("uri");
|
||||
static const njs_str_t host_str = njs_str("host");
|
||||
static const njs_str_t remote_addr_str = njs_str("remoteAddr");
|
||||
static const njs_str_t args_str = njs_str("args");
|
||||
static const njs_str_t headers_str = njs_str("headers");
|
||||
static const njs_str_t cookies_str = njs_str("cookies");
|
||||
static const njs_str_t js_args[] = {
|
||||
njs_str("uri"),
|
||||
njs_str("host"),
|
||||
njs_str("remoteAddr"),
|
||||
njs_str("args"),
|
||||
njs_str("headers"),
|
||||
njs_str("cookies"),
|
||||
};
|
||||
|
||||
vm = cache->vm;
|
||||
|
||||
|
@ -424,43 +427,17 @@ nxt_js_call(nxt_task_t *task, nxt_js_conf_t *jcf, nxt_js_cache_t *cache,
|
|||
return NXT_ERROR;
|
||||
}
|
||||
|
||||
value = njs_vm_object_prop(vm, njs_value_arg(&opaque_value), &uri_str,
|
||||
&arguments[0]);
|
||||
if (nxt_slow_path(value == NULL)) {
|
||||
return NXT_ERROR;
|
||||
n = nxt_nitems(js_args);
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
value = njs_vm_object_prop(vm, njs_value_arg(&opaque_value),
|
||||
&js_args[i], &arguments[i]);
|
||||
if (nxt_slow_path(value == NULL)) {
|
||||
return NXT_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
value = njs_vm_object_prop(vm, njs_value_arg(&opaque_value), &host_str,
|
||||
&arguments[1]);
|
||||
if (nxt_slow_path(value == NULL)) {
|
||||
return NXT_ERROR;
|
||||
}
|
||||
|
||||
value = njs_vm_object_prop(vm, njs_value_arg(&opaque_value),
|
||||
&remote_addr_str, &arguments[2]);
|
||||
if (nxt_slow_path(value == NULL)) {
|
||||
return NXT_ERROR;
|
||||
}
|
||||
|
||||
value = njs_vm_object_prop(vm, njs_value_arg(&opaque_value), &args_str,
|
||||
&arguments[3]);
|
||||
if (nxt_slow_path(value == NULL)) {
|
||||
return NXT_ERROR;
|
||||
}
|
||||
|
||||
value = njs_vm_object_prop(vm, njs_value_arg(&opaque_value), &headers_str,
|
||||
&arguments[4]);
|
||||
if (nxt_slow_path(value == NULL)) {
|
||||
return NXT_ERROR;
|
||||
}
|
||||
|
||||
value = njs_vm_object_prop(vm, njs_value_arg(&opaque_value), &cookies_str,
|
||||
&arguments[5]);
|
||||
if (nxt_slow_path(value == NULL)) {
|
||||
return NXT_ERROR;
|
||||
}
|
||||
|
||||
ret = njs_vm_invoke(vm, func, njs_value_arg(&arguments), 6,
|
||||
ret = njs_vm_invoke(vm, func, njs_value_arg(&arguments), n,
|
||||
njs_value_arg(&retval));
|
||||
|
||||
if (ret != NJS_OK) {
|
||||
|
|
Loading…
Reference in a new issue