refactor: add a wrapper for wrangling uv handles. (#25662)

This commit is contained in:
trop[bot]
2020-09-27 20:42:28 -07:00
committed by GitHub
parent 4a0f2bede2
commit 37bcb093e7
4 changed files with 78 additions and 28 deletions

View File

@@ -56,14 +56,12 @@ void V8FatalErrorCallback(const char* location, const char* message) {
} // namespace
ElectronBindings::ElectronBindings(uv_loop_t* loop) {
uv_async_init(loop, &call_next_tick_async_, OnCallNextTick);
call_next_tick_async_.data = this;
uv_async_init(loop, call_next_tick_async_.get(), OnCallNextTick);
call_next_tick_async_.get()->data = this;
metrics_ = base::ProcessMetrics::CreateCurrentProcessMetrics();
}
ElectronBindings::~ElectronBindings() {
uv_close(reinterpret_cast<uv_handle_t*>(&call_next_tick_async_), nullptr);
}
ElectronBindings::~ElectronBindings() {}
// static
void ElectronBindings::BindProcess(v8::Isolate* isolate,
@@ -131,7 +129,7 @@ void ElectronBindings::ActivateUVLoop(v8::Isolate* isolate) {
return;
pending_next_ticks_.push_back(env);
uv_async_send(&call_next_tick_async_);
uv_async_send(call_next_tick_async_.get());
}
// static

View File

@@ -14,6 +14,7 @@
#include "base/process/process_metrics.h"
#include "base/strings/string16.h"
#include "shell/common/gin_helper/promise.h"
#include "shell/common/node_bindings.h"
#include "uv.h" // NOLINT(build/include_directory)
namespace gin_helper {
@@ -74,7 +75,7 @@ class ElectronBindings {
bool success,
std::unique_ptr<memory_instrumentation::GlobalMemoryDump> dump);
uv_async_t call_next_tick_async_;
UvHandle<uv_async_t> call_next_tick_async_;
std::list<node::Environment*> pending_next_ticks_;
std::unique_ptr<base::ProcessMetrics> metrics_;