mirror of https://github.com/nodejs/node.git
src: use env->RequestInterrupt() for inspector io thread start
This cleans up `Agent::RequestIoThreadStart()` significantly. PR-URL: https://github.com/nodejs/node/pull/32523 Reviewed-By: Matheus Marchini <mat@mmarchini.me> Reviewed-By: James M Snell <jasnell@gmail.com>pull/32771/head
parent
583edd9526
commit
32e3a6bb87
|
@ -47,7 +47,6 @@ using v8::Message;
|
|||
using v8::Object;
|
||||
using v8::String;
|
||||
using v8::Task;
|
||||
using v8::TaskRunner;
|
||||
using v8::Value;
|
||||
|
||||
using v8_inspector::StringBuffer;
|
||||
|
@ -63,18 +62,6 @@ static std::atomic_bool start_io_thread_async_initialized { false };
|
|||
// Protects the Agent* stored in start_io_thread_async.data.
|
||||
static Mutex start_io_thread_async_mutex;
|
||||
|
||||
class StartIoTask : public Task {
|
||||
public:
|
||||
explicit StartIoTask(Agent* agent) : agent(agent) {}
|
||||
|
||||
void Run() override {
|
||||
agent->StartIoThread();
|
||||
}
|
||||
|
||||
private:
|
||||
Agent* agent;
|
||||
};
|
||||
|
||||
std::unique_ptr<StringBuffer> ToProtocolString(Isolate* isolate,
|
||||
Local<Value> value) {
|
||||
TwoByteValue buffer(isolate, value);
|
||||
|
@ -86,10 +73,6 @@ void StartIoThreadAsyncCallback(uv_async_t* handle) {
|
|||
static_cast<Agent*>(handle->data)->StartIoThread();
|
||||
}
|
||||
|
||||
void StartIoInterrupt(Isolate* isolate, void* agent) {
|
||||
static_cast<Agent*>(agent)->StartIoThread();
|
||||
}
|
||||
|
||||
|
||||
#ifdef __POSIX__
|
||||
static void StartIoThreadWakeup(int signo, siginfo_t* info, void* ucontext) {
|
||||
|
@ -978,12 +961,10 @@ void Agent::RequestIoThreadStart() {
|
|||
// for IO events)
|
||||
CHECK(start_io_thread_async_initialized);
|
||||
uv_async_send(&start_io_thread_async);
|
||||
Isolate* isolate = parent_env_->isolate();
|
||||
v8::Platform* platform = parent_env_->isolate_data()->platform();
|
||||
std::shared_ptr<TaskRunner> taskrunner =
|
||||
platform->GetForegroundTaskRunner(isolate);
|
||||
taskrunner->PostTask(std::make_unique<StartIoTask>(this));
|
||||
isolate->RequestInterrupt(StartIoInterrupt, this);
|
||||
parent_env_->RequestInterrupt([this](Environment*) {
|
||||
StartIoThread();
|
||||
});
|
||||
|
||||
CHECK(start_io_thread_async_initialized);
|
||||
uv_async_send(&start_io_thread_async);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue