diff options
author | Fedor Indutny <fedor.indutny@gmail.com> | 2012-06-06 21:19:14 +0400 |
---|---|---|
committer | Fedor Indutny <fedor.indutny@gmail.com> | 2012-06-07 23:20:56 +0400 |
commit | 3116522e7c33c579bbb8ac0ee12c27ff3ff9825c (patch) | |
tree | a0dd8d69df6934815c7db0fb158b66a961538f33 | |
parent | c45522df4c1a316d304d2d08d641c5b9da8df148 (diff) | |
download | android-node-v8-3116522e7c33c579bbb8ac0ee12c27ff3ff9825c.tar.gz android-node-v8-3116522e7c33c579bbb8ac0ee12c27ff3ff9825c.tar.bz2 android-node-v8-3116522e7c33c579bbb8ac0ee12c27ff3ff9825c.zip |
child_process: spawn().ref() and spawn().unref()
-rw-r--r-- | lib/child_process.js | 10 | ||||
-rw-r--r-- | src/handle_wrap.cc | 14 | ||||
-rw-r--r-- | src/handle_wrap.h | 1 | ||||
-rw-r--r-- | src/process_wrap.cc | 3 |
4 files changed, 26 insertions, 2 deletions
diff --git a/lib/child_process.js b/lib/child_process.js index f79481dcfe..3f9e69d25d 100644 --- a/lib/child_process.js +++ b/lib/child_process.js @@ -845,3 +845,13 @@ ChildProcess.prototype.kill = function(sig) { } } }; + + +ChildProcess.prototype.ref = function() { + if (this._handle) this._handle.ref(); +}; + + +ChildProcess.prototype.unref = function() { + if (this._handle) this._handle.unref(); +}; diff --git a/src/handle_wrap.cc b/src/handle_wrap.cc index 944631a3be..ead7da1f74 100644 --- a/src/handle_wrap.cc +++ b/src/handle_wrap.cc @@ -50,8 +50,18 @@ void HandleWrap::Initialize(Handle<Object> target) { } -// This function is used only for process.stdout. It's put here instead of -// in TTYWrap because here we have access to the Close binding. +Handle<Value> HandleWrap::Ref(const Arguments& args) { + HandleScope scope; + + UNWRAP(HandleWrap) + + uv_ref(wrap->handle__); + wrap->unref_ = false; + + return v8::Undefined(); +} + + Handle<Value> HandleWrap::Unref(const Arguments& args) { HandleScope scope; diff --git a/src/handle_wrap.h b/src/handle_wrap.h index 35853a0110..a358e812a5 100644 --- a/src/handle_wrap.h +++ b/src/handle_wrap.h @@ -50,6 +50,7 @@ class HandleWrap { public: static void Initialize(v8::Handle<v8::Object> target); static v8::Handle<v8::Value> Close(const v8::Arguments& args); + static v8::Handle<v8::Value> Ref(const v8::Arguments& args); static v8::Handle<v8::Value> Unref(const v8::Arguments& args); protected: diff --git a/src/process_wrap.cc b/src/process_wrap.cc index 101d89b3fd..1dc3ce437e 100644 --- a/src/process_wrap.cc +++ b/src/process_wrap.cc @@ -67,6 +67,9 @@ class ProcessWrap : public HandleWrap { NODE_SET_PROTOTYPE_METHOD(constructor, "spawn", Spawn); NODE_SET_PROTOTYPE_METHOD(constructor, "kill", Kill); + NODE_SET_PROTOTYPE_METHOD(constructor, "ref", HandleWrap::Ref); + NODE_SET_PROTOTYPE_METHOD(constructor, "unref", HandleWrap::Unref); + target->Set(String::NewSymbol("Process"), constructor->GetFunction()); } |