From: Dmitry Volyntsev Date: Thu, 14 Dec 2023 02:38:47 +0000 (-0800) Subject: Introduced njs_vm_set_module_loader(). X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=2208f08f1988d73b2d525158a6dda13d380e76ca;p=njs.git Introduced njs_vm_set_module_loader(). --- diff --git a/external/njs_shell.c b/external/njs_shell.c index f1836df5..8b9b6221 100644 --- a/external/njs_shell.c +++ b/external/njs_shell.c @@ -269,7 +269,6 @@ static njs_external_t njs_ext_262[] = { static njs_vm_ops_t njs_console_ops = { - NULL, njs_console_log, }; diff --git a/nginx/ngx_http_js_module.c b/nginx/ngx_http_js_module.c index 9ffc58c8..56de05a0 100644 --- a/nginx/ngx_http_js_module.c +++ b/nginx/ngx_http_js_module.c @@ -840,7 +840,6 @@ static njs_external_t ngx_http_js_ext_periodic_session[] = { static njs_vm_ops_t ngx_http_js_ops = { - NULL, ngx_js_logger, }; diff --git a/nginx/ngx_stream_js_module.c b/nginx/ngx_stream_js_module.c index b6a51eaa..6f7d0cc0 100644 --- a/nginx/ngx_stream_js_module.c +++ b/nginx/ngx_stream_js_module.c @@ -609,7 +609,6 @@ static njs_external_t ngx_stream_js_ext_session_flags[] = { static njs_vm_ops_t ngx_stream_js_ops = { - NULL, ngx_js_logger, }; diff --git a/src/njs.h b/src/njs.h index ba610a7a..2e7a1214 100644 --- a/src/njs.h +++ b/src/njs.h @@ -214,7 +214,6 @@ typedef void (*njs_logger_t)(njs_vm_t *vm, njs_external_ptr_t external, typedef struct { - njs_module_loader_t module_loader; njs_logger_t logger; } njs_vm_ops_t; @@ -310,6 +309,8 @@ NJS_EXPORT njs_vm_t *njs_vm_create(njs_vm_opt_t *options); NJS_EXPORT void njs_vm_destroy(njs_vm_t *vm); NJS_EXPORT njs_int_t njs_vm_compile(njs_vm_t *vm, u_char **start, u_char *end); +NJS_EXPORT void njs_vm_set_module_loader(njs_vm_t *vm, + njs_module_loader_t module_loader, void *opaque); NJS_EXPORT njs_mod_t *njs_vm_add_module(njs_vm_t *vm, njs_str_t *name, njs_value_t *value); NJS_EXPORT njs_mod_t *njs_vm_compile_module(njs_vm_t *vm, njs_str_t *name, diff --git a/src/njs_module.c b/src/njs_module.c index e146ffa0..37620007 100644 --- a/src/njs_module.c +++ b/src/njs_module.c @@ -48,9 +48,9 @@ njs_parser_module(njs_parser_t *parser, njs_str_t *name) external = parser; loader = njs_default_module_loader; - if (vm->options.ops != NULL && vm->options.ops->module_loader != NULL) { - loader = vm->options.ops->module_loader; - external = vm->external; + if (vm->module_loader != NULL) { + loader = vm->module_loader; + external = vm->module_loader_opaque; } module = loader(vm, external, name); diff --git a/src/njs_vm.c b/src/njs_vm.c index 1d1a4ffe..7979e1a0 100644 --- a/src/njs_vm.c +++ b/src/njs_vm.c @@ -730,6 +730,15 @@ njs_vm_execute_pending_job(njs_vm_t *vm) } +void +njs_vm_set_module_loader(njs_vm_t *vm, njs_module_loader_t module_loader, + void *opaque) +{ + vm->module_loader = module_loader; + vm->module_loader_opaque = opaque; +} + + njs_int_t njs_vm_add_path(njs_vm_t *vm, const njs_str_t *path) { diff --git a/src/njs_vm.h b/src/njs_vm.h index 1717f929..a875ef6f 100644 --- a/src/njs_vm.h +++ b/src/njs_vm.h @@ -182,6 +182,9 @@ struct njs_vm_s { njs_rbtree_t global_symbols; uint64_t symbol_generator; + + njs_module_loader_t module_loader; + void *module_loader_opaque; };