void GetProcessesWorker::HandleOKCallback()

in src/process_worker.cc [27:57]


void GetProcessesWorker::HandleOKCallback() {
  Nan::HandleScope scope;
  // Transfer results into actual result object
  v8::Local<v8::Array> result = Nan::New<v8::Array>(*process_count);
  for (uint32_t i = 0; i < *process_count; i++) {
    v8::Local<v8::Object> object = Nan::New<v8::Object>();
    Nan::Set(object, Nan::New<v8::String>("name").ToLocalChecked(),
              Nan::New<v8::String>(process_info[i].name).ToLocalChecked());
    Nan::Set(object, Nan::New<v8::String>("pid").ToLocalChecked(),
              Nan::New<v8::Number>(process_info[i].pid));
    Nan::Set(object, Nan::New<v8::String>("ppid").ToLocalChecked(),
              Nan::New<v8::Number>(process_info[i].ppid));

    // Property should be undefined when memory flag isn't set
    if (MEMORY & *process_data_flags) {
      Nan::Set(object, Nan::New<v8::String>("memory").ToLocalChecked(),
              Nan::New<v8::Number>(process_info[i].memory));
    }

    if (COMMANDLINE & *process_data_flags) {
      Nan::Set(object, Nan::New<v8::String>("commandLine").ToLocalChecked(),
        Nan::New<v8::String>(process_info[i].commandLine).ToLocalChecked());
    }

    Nan::Set(result, i, Nan::New<v8::Value>(object));
  }

  v8::Local<v8::Value> argv[] = { result };
  Nan::AsyncResource resource("windows-process-tree:addon.HandleOKCallback");
  callback->Call(1, argv, &resource);
}