diff options
author | Anna Henningsen <anna@addaleax.net> | 2019-11-05 22:50:24 +0100 |
---|---|---|
committer | Rich Trott <rtrott@gmail.com> | 2019-11-07 19:51:11 -0800 |
commit | e460e14d57869c37b181f1e4839c70d8fa89ffb3 (patch) | |
tree | 9c481c15fbce5e5a5e8413518faf099badb5ae0b /src/api | |
parent | 96db5a271c859eabbf81565e4ce82a93fd037fb9 (diff) | |
download | android-node-v8-e460e14d57869c37b181f1e4839c70d8fa89ffb3.tar.gz android-node-v8-e460e14d57869c37b181f1e4839c70d8fa89ffb3.tar.bz2 android-node-v8-e460e14d57869c37b181f1e4839c70d8fa89ffb3.zip |
src: allow adding linked bindings to Environment
This allows manually adding linked bindings to an `Environment`
instance, without having to register modules at program load in
a global namespace.
PR-URL: https://github.com/nodejs/node/pull/30274
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Diffstat (limited to 'src/api')
-rw-r--r-- | src/api/environment.cc | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/api/environment.cc b/src/api/environment.cc index 846e4a873d..4cb2da4b86 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -498,4 +498,32 @@ uv_loop_t* GetCurrentEventLoop(Isolate* isolate) { return env->event_loop(); } +void AddLinkedBinding(Environment* env, const node_module& mod) { + CHECK_NOT_NULL(env); + Mutex::ScopedLock lock(env->extra_linked_bindings_mutex()); + + node_module* prev_head = env->extra_linked_bindings_head(); + env->extra_linked_bindings()->push_back(mod); + if (prev_head != nullptr) + prev_head->nm_link = &env->extra_linked_bindings()->back(); +} + +void AddLinkedBinding(Environment* env, + const char* name, + addon_context_register_func fn, + void* priv) { + node_module mod = { + NODE_MODULE_VERSION, + NM_F_LINKED, + nullptr, // nm_dso_handle + nullptr, // nm_filename + nullptr, // nm_register_func + fn, + name, + priv, + nullptr // nm_link + }; + AddLinkedBinding(env, mod); +} + } // namespace node |