@@ -59,56 +59,24 @@ namespace rclnodejs {
5959static v8::Local<v8::Object> wrapParameters (
6060 rcl_params_t * params); // NOLINT(whitespace/line_length)
6161
62- Napi::Value Init (const Napi::CallbackInfo& info) {
63- Napi::Env env = info.Env ();
62+ napi_value Init (napi_env env, napi_value exports) {
6463 rcl_allocator_t allocator = rcl_get_default_allocator ();
6564 rcl_init_options_t init_options = rcl_get_zero_initialized_init_options ();
6665 THROW_ERROR_IF_NOT_EQUAL (RCL_RET_OK,
6766 rcl_init_options_init (&init_options, allocator),
6867 rcl_get_error_string ().str );
6968
70- // preprocess Context
71- RclHandle* context_handle = RclHandle::Unwrap<RclHandle>(info[0 ].As <Napi::Object>());
72- rcl_context_t * context =
73- reinterpret_cast <rcl_context_t *>(context_handle->ptr ());
74-
75- // preprocess argc & argv
76- Napi::Array jsArgv = info[1 ].As <Napi::Array>();
77- int argc = jsArgv.Length ();
78- char ** argv = nullptr ;
79- if (argc > 0 ) {
80- argv = reinterpret_cast <char **>(malloc (argc * sizeof (char *)));
81- for (int i = 0 ; i < argc; i++) {
82- Napi::Value jsElement = jsArgv[i];
83- std::string utf8_arg = jsElement.As <Napi::String>().Utf8Value ();
84- int len = utf8_arg.length () + 1 ;
85- argv[i] = reinterpret_cast <char *>(malloc (len * sizeof (char *)));
86- snprintf (argv[i], len, " %s" , utf8_arg.c_str ());
87- }
88- }
89-
90- THROW_ERROR_IF_NOT_EQUAL (
91- RCL_RET_OK,
92- rcl_init (argc, argc > 0 ? argv : nullptr , &init_options, context),
93- rcl_get_error_string ().str );
94-
95- THROW_ERROR_IF_NOT_EQUAL (
96- RCL_RET_OK, rcl_logging_configure (&context->global_arguments , &allocator),
97- rcl_get_error_string ().str );
98-
99- for (int i = 0 ; i < argc; i++) {
100- free (argv[i]);
101- }
102- free (argv);
103-
104- return env.Undefined ();
69+ return exports;
10570}
10671
107- Napi::Value CreateNode (const Napi::CallbackInfo& info) {
108- Napi::Env env = info.Env ();
109- std::string node_name = info[0 ].As <Napi::String>().Utf8Value ();
110- std::string name_space = info[1 ].As <Napi::String>().Utf8Value ();
111- RclHandle* context_handle = RclHandle::Unwrap<RclHandle>(info[2 ].As <Napi::Object>());
72+ napi_value CreateNode (napi_env env, napi_callback_info info) {
73+ size_t argc = 3 ;
74+ napi_value args[3 ];
75+ napi_get_cb_info (env, info, &argc, args, nullptr , nullptr );
76+
77+ std::string node_name = GetStringFromValue (env, args[0 ]);
78+ std::string name_space = GetStringFromValue (env, args[1 ]);
79+ RclHandle* context_handle = RclHandle::Unwrap<RclHandle>(args[2 ]);
11280 rcl_context_t * context =
11381 reinterpret_cast <rcl_context_t *>(context_handle->ptr ());
11482
0 commit comments