@@ -83,7 +83,7 @@ class NodeAddon extends CppClass {
83
83
this . withCrtpBase ( "Napi::Addon" ) ;
84
84
85
85
this . members . push ( new CppVar ( "std::deque<std::string>" , "m_string_bufs" ) ) ;
86
- this . members . push ( new CppVar ( "std::shared_ptr<NapiScheduler >" , "m_scheduler" ) ) ;
86
+ this . members . push ( new CppVar ( "std::shared_ptr<util::Scheduler >" , "m_scheduler" ) ) ;
87
87
this . addMethod (
88
88
new CppMethod ( "wrapString" , "const std::string&" , [ new CppVar ( "std::string" , "str" ) ] , {
89
89
attributes : "inline" ,
@@ -105,6 +105,8 @@ class NodeAddon extends CppClass {
105
105
this . classes . forEach ( ( t ) =>
106
106
this . members . push ( new CppVar ( "Napi::FunctionReference" , NodeAddon . memberNameForExtractor ( t ) ) ) ,
107
107
) ;
108
+
109
+ // Injectables
108
110
this . addMethod (
109
111
new CppMethod ( "injectInjectables" , "void" , [ node_callback_info ] , {
110
112
body : `
@@ -123,6 +125,16 @@ class NodeAddon extends CppClass {
123
125
} ) ,
124
126
) ;
125
127
128
+ // Env specific scheduler
129
+ this . addMethod (
130
+ new CppMethod ( "getPlatformScheduler" , "Napi::Value" , [ node_callback_info ] , {
131
+ body : `
132
+ const auto env = info.Env();
133
+ return NODE_FROM_SHARED_Scheduler(env, env.GetInstanceData<RealmAddon>()->m_scheduler);
134
+ ` ,
135
+ } ) ,
136
+ ) ;
137
+
126
138
this . addMethod (
127
139
new CppCtor ( this . name , [ new CppVar ( "Napi::Env" , env ) , new CppVar ( "Napi::Object" , "exports" ) ] , {
128
140
mem_inits : [ new CppMemInit ( "m_scheduler" , `std::make_shared<NapiScheduler>(${ env } )` ) ] ,
@@ -132,6 +144,7 @@ class NodeAddon extends CppClass {
132
144
. map ( ( [ name , val ] ) => `InstanceValue("${ name } ", ${ val } , napi_enumerable),` )
133
145
. join ( "\n" ) }
134
146
InstanceMethod<&${ this . name } ::injectInjectables>("injectInjectables"),
147
+ InstanceMethod<&${ this . name } ::getPlatformScheduler>("getPlatformScheduler"),
135
148
});
136
149
` ,
137
150
} ) ,
0 commit comments