static njs_vm_ops_t njs_console_ops = {
- NULL,
njs_console_log,
};
static njs_vm_ops_t ngx_http_js_ops = {
- NULL,
ngx_js_logger,
};
static njs_vm_ops_t ngx_stream_js_ops = {
- NULL,
ngx_js_logger,
};
typedef struct {
- njs_module_loader_t module_loader;
njs_logger_t logger;
} njs_vm_ops_t;
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,
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);
}
+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)
{
njs_rbtree_t global_symbols;
uint64_t symbol_generator;
+
+ njs_module_loader_t module_loader;
+ void *module_loader_opaque;
};