node: make _getActiveHandles() return user objects

Before this commit, process._getActiveHandles() returned a list of internal
handles. Now, it returns the user objects that handles are attached to.

For example, a tcp_wrap handle will now return its parent net.Socket object.

It works for all handle types except timers because timer handles are shared
across multiple user objects.
This commit is contained in:
Ben Noordhuis 2012-05-15 17:24:06 +02:00
Родитель 88d7a10128
Коммит e813e3491e
1 изменённых файлов: 5 добавлений и 1 удалений

Просмотреть файл

@ -1362,10 +1362,14 @@ Handle<Value> GetActiveHandles(const Arguments& args) {
ngx_queue_t* q = NULL;
int i = 0;
Local<String> owner_sym = String::New("owner");
ngx_queue_foreach(q, &handle_wrap_queue) {
HandleWrap* w = container_of(q, HandleWrap, handle_wrap_queue_);
if (w->object_.IsEmpty() || w->unref) continue;
ary->Set(i++, w->object_);
Local<Value> obj = w->object_->Get(owner_sym);
if (obj->IsUndefined()) obj = *w->object_;
ary->Set(i++, obj);
}
return scope.Close(ary);