]> git.kaiwu.me - njs.git/commitdiff
Introduced njs_vm_set_module_loader().
authorDmitry Volyntsev <xeioex@nginx.com>
Thu, 14 Dec 2023 02:38:47 +0000 (18:38 -0800)
committerDmitry Volyntsev <xeioex@nginx.com>
Thu, 14 Dec 2023 02:38:47 +0000 (18:38 -0800)
external/njs_shell.c
nginx/ngx_http_js_module.c
nginx/ngx_stream_js_module.c
src/njs.h
src/njs_module.c
src/njs_vm.c
src/njs_vm.h

index f1836df51a859e95a1e59120dbf3163fcfaf10ac..8b9b622194342175d60d1b84fab2777e61f4dc9f 100644 (file)
@@ -269,7 +269,6 @@ static njs_external_t  njs_ext_262[] = {
 
 
 static njs_vm_ops_t njs_console_ops = {
-    NULL,
     njs_console_log,
 };
 
index 9ffc58c8c83f4968deb60c6d2cd2ff5a2abc0cb6..56de05a0c309eb50b52ec0d25385ae024ad625f7 100644 (file)
@@ -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,
 };
 
index b6a51eaa65ebf9d484d339c1dce1bedce9164439..6f7d0cc04733fba1a61e5b0a1028b8ed8aedcca3 100644 (file)
@@ -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,
 };
 
index ba610a7a334cf8d21f71bd0aac678704d724fb08..2e7a1214399b7167f9eb8a820898f364b8e70a14 100644 (file)
--- 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,
index e146ffa07a4cbb8d76b625d17e0cfe1f951c164f..37620007229402e6b2bf301221334918b4d2ede3 100644 (file)
@@ -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);
index 1d1a4ffe3475b5733003539fdf5a3bbd6738edaa..7979e1a05991df77bc0a0254a4b6d14b858c7728 100644 (file)
@@ -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)
 {
index 1717f929ec20540f59285002242dbbe5db374540..a875ef6f49af4c7daf241ceef09fc3e947a8a719 100644 (file)
@@ -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;
 };