NJS: Simplified nxt_js_call()
This commit is contained in:
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_vm_t *vm;
|
||||||
njs_int_t ret;
|
njs_int_t ret;
|
||||||
njs_str_t res;
|
njs_str_t res;
|
||||||
|
njs_uint_t i, n;
|
||||||
njs_value_t *value;
|
njs_value_t *value;
|
||||||
njs_function_t *func;
|
njs_function_t *func;
|
||||||
njs_opaque_value_t retval, opaque_value, arguments[6];
|
njs_opaque_value_t retval, opaque_value, arguments[6];
|
||||||
|
|
||||||
static const njs_str_t uri_str = njs_str("uri");
|
static const njs_str_t js_args[] = {
|
||||||
static const njs_str_t host_str = njs_str("host");
|
njs_str("uri"),
|
||||||
static const njs_str_t remote_addr_str = njs_str("remoteAddr");
|
njs_str("host"),
|
||||||
static const njs_str_t args_str = njs_str("args");
|
njs_str("remoteAddr"),
|
||||||
static const njs_str_t headers_str = njs_str("headers");
|
njs_str("args"),
|
||||||
static const njs_str_t cookies_str = njs_str("cookies");
|
njs_str("headers"),
|
||||||
|
njs_str("cookies"),
|
||||||
|
};
|
||||||
|
|
||||||
vm = cache->vm;
|
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;
|
return NXT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
value = njs_vm_object_prop(vm, njs_value_arg(&opaque_value), &uri_str,
|
n = nxt_nitems(js_args);
|
||||||
&arguments[0]);
|
|
||||||
if (nxt_slow_path(value == NULL)) {
|
for (i = 0; i < n; i++) {
|
||||||
return NXT_ERROR;
|
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,
|
ret = njs_vm_invoke(vm, func, njs_value_arg(&arguments), n,
|
||||||
&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,
|
|
||||||
njs_value_arg(&retval));
|
njs_value_arg(&retval));
|
||||||
|
|
||||||
if (ret != NJS_OK) {
|
if (ret != NJS_OK) {
|
||||||
|
|||||||
Reference in New Issue
Block a user