summaryrefslogtreecommitdiff
path: root/src/handle_wrap.h
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2017-09-04 22:02:55 +0200
committerAnna Henningsen <anna@addaleax.net>2018-05-10 14:15:16 +0200
commit17e289eca8f8398243df5c4006d80f7381fd08bc (patch)
tree781f1398f78aa4b602ae3fca8654c28576e70b52 /src/handle_wrap.h
parent5c6cf30143f3191b043ba0b4e814768efa1069f7 (diff)
downloadandroid-node-v8-17e289eca8f8398243df5c4006d80f7381fd08bc.tar.gz
android-node-v8-17e289eca8f8398243df5c4006d80f7381fd08bc.tar.bz2
android-node-v8-17e289eca8f8398243df5c4006d80f7381fd08bc.zip
src: make CleanupHandles() tear down handles/reqs
Previously, handles would not be closed when the current `Environment` stopped, which is acceptable in a single-`Environment`-per-process situation, but would otherwise create memory and file descriptor leaks. Also, introduce a generic way to close handles via the `Environment::CloseHandle()` function, which automatically keeps track of whether a close callback has been called yet or not. Many thanks for Stephen Belanger for reviewing the original version of this commit in the Ayo.js project. Refs: https://github.com/ayojs/ayo/pull/85 PR-URL: https://github.com/nodejs/node/pull/19377 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'src/handle_wrap.h')
-rw-r--r--src/handle_wrap.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/handle_wrap.h b/src/handle_wrap.h
index e7a335f514..fd2d002dce 100644
--- a/src/handle_wrap.h
+++ b/src/handle_wrap.h
@@ -70,11 +70,17 @@ class HandleWrap : public AsyncWrap {
inline uv_handle_t* GetHandle() const { return handle_; }
+ void Close(v8::Local<v8::Value> close_callback = v8::Local<v8::Value>());
+
protected:
HandleWrap(Environment* env,
v8::Local<v8::Object> object,
uv_handle_t* handle,
AsyncWrap::ProviderType provider);
+ virtual void OnClose() {}
+
+ void MarkAsInitialized();
+ void MarkAsUninitialized();
private:
friend class Environment;