summaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2019-11-05 22:50:24 +0100
committerRich Trott <rtrott@gmail.com>2019-11-07 19:51:11 -0800
commite460e14d57869c37b181f1e4839c70d8fa89ffb3 (patch)
tree9c481c15fbce5e5a5e8413518faf099badb5ae0b /src/api
parent96db5a271c859eabbf81565e4ce82a93fd037fb9 (diff)
downloadandroid-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.cc28
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