summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/child_process.js10
-rw-r--r--src/handle_wrap.cc14
-rw-r--r--src/handle_wrap.h1
-rw-r--r--src/process_wrap.cc3
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());
}