From 5ed03999d94ac129fe3ecd2cd87ada088288b401 Mon Sep 17 00:00:00 2001 From: hyj1991 Date: Thu, 27 Oct 2022 20:36:26 +0800 Subject: [PATCH] refactor jsapi - command listener --- src/commands/listener.cc | 29 +++++++--------------- src/commands/listener.h | 11 +++----- src/jsapi/export_thread_listener.cc | 21 ++++++++++++++++ src/jsapi/include/export_thread_listener.h | 10 ++++++++ src/xprofiler.cc | 2 +- 5 files changed, 44 insertions(+), 29 deletions(-) create mode 100644 src/jsapi/export_thread_listener.cc create mode 100644 src/jsapi/include/export_thread_listener.h diff --git a/src/commands/listener.cc b/src/commands/listener.cc index 842abae..7699840 100644 --- a/src/commands/listener.cc +++ b/src/commands/listener.cc @@ -2,17 +2,11 @@ #include "commands/parser.h" #include "environment_data.h" #include "logger.h" -#include "nan.h" #include "platform/platform.h" #include "uv.h" #include "xpf_mutex-inl.h" namespace xprofiler { -using Nan::False; -using Nan::FunctionCallbackInfo; -using Nan::ThrowTypeError; -using Nan::True; -using v8::Value; namespace per_process { Mutex command_listener_mutex; @@ -24,25 +18,20 @@ static void CreateCommandsListenerThread(void* unused) { CreateIpcServer(ParseCmd); } -void RunCommandsListener(const FunctionCallbackInfo& info) { +int StartCommandsListener(EnvironmentData* env_data) { Mutex::ScopedLock lock(per_process::command_listener_mutex); if (per_process::command_listener_thread_created) { - info.GetReturnValue().Set(True()); - return; + return 0; } - int rc = 0; + // init commands listener thread - rc = uv_thread_create(&per_process::uv_commands_listener_thread, - CreateCommandsListenerThread, nullptr); - if (rc != 0) { - ThrowTypeError("xprofiler: create uv commands listener thread failed!"); - info.GetReturnValue().Set(False()); - return; + int rc = uv_thread_create(&per_process::uv_commands_listener_thread, + CreateCommandsListenerThread, nullptr); + if (rc == 0) { + InfoT("init", env_data->thread_id(), + "commands listener: listener thread created."); } - EnvironmentData* env_data = EnvironmentData::GetCurrent(info); - InfoT("init", env_data->thread_id(), - "commands listener: listener thread created."); - info.GetReturnValue().Set(True()); + return rc; } } // namespace xprofiler diff --git a/src/commands/listener.h b/src/commands/listener.h index 1b9f1aa..31db894 100644 --- a/src/commands/listener.h +++ b/src/commands/listener.h @@ -1,14 +1,9 @@ #ifndef XPROFILER_SRC_COMMANDS_LISTENER_H #define XPROFILER_SRC_COMMANDS_LISTENER_H - -#include "nan.h" +#include "environment_data.h" namespace xprofiler { -using Nan::FunctionCallbackInfo; -using v8::Value; - -// javascript-accessible -void RunCommandsListener(const FunctionCallbackInfo& info); -} // namespace xprofiler +int StartCommandsListener(EnvironmentData* env_data); +} #endif /* XPROFILER_SRC_COMMANDS_LISTENER_H */ diff --git a/src/jsapi/export_thread_listener.cc b/src/jsapi/export_thread_listener.cc new file mode 100644 index 0000000..a5894e1 --- /dev/null +++ b/src/jsapi/export_thread_listener.cc @@ -0,0 +1,21 @@ +#include "include/export_thread_listener.h" + +#include "commands/listener.h" +#include "environment_data.h" + +namespace xprofiler { +using Nan::False; +using Nan::FunctionCallbackInfo; +using Nan::ThrowTypeError; +using Nan::True; +using v8::Value; + +void RunCommandsListener(const FunctionCallbackInfo& info) { + EnvironmentData* env_data = EnvironmentData::GetCurrent(info); + int rc = StartCommandsListener(env_data); + if (rc != 0) { + ThrowTypeError("xprofiler: create uv commands listener thread failed!"); + } + info.GetReturnValue().Set(rc == 0 ? True() : False()); +} +} // namespace xprofiler diff --git a/src/jsapi/include/export_thread_listener.h b/src/jsapi/include/export_thread_listener.h new file mode 100644 index 0000000..9530b70 --- /dev/null +++ b/src/jsapi/include/export_thread_listener.h @@ -0,0 +1,10 @@ +#ifndef XPROFILER_SRC_JSAPI_THREAD_LISTENER_H +#define XPROFILER_SRC_JSAPI_THREAD_LISTENER_H + +#include "nan.h" + +namespace xprofiler { +void RunCommandsListener(const Nan::FunctionCallbackInfo& info); +} + +#endif /* XPROFILER_SRC_JSAPI_THREAD_LISTENER_H */ diff --git a/src/xprofiler.cc b/src/xprofiler.cc index ec195b8..7c7fcb9 100644 --- a/src/xprofiler.cc +++ b/src/xprofiler.cc @@ -1,9 +1,9 @@ -#include "commands/listener.h" #include "jsapi/include/export_configure.h" #include "jsapi/include/export_environment.h" #include "jsapi/include/export_hooks.h" #include "jsapi/include/export_http.h" #include "jsapi/include/export_logger.h" +#include "jsapi/include/export_thread_listener.h" #include "jsapi/include/export_thread_logbypass.h" #include "library/common.h" #include "nan.h"