methods.cc 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. ** © 2014 by Philipp Dunkel <pip@pipobscure.com>
  3. ** Licensed under MIT License.
  4. */
  5. void FSEvents::emitEvent(const char *path, UInt32 flags, UInt64 id) {
  6. Nan::HandleScope handle_scope;
  7. v8::Local<v8::Object> object = handle();
  8. v8::Local<v8::Value> key = Nan::New<v8::String>("handler").ToLocalChecked();
  9. Nan::Callback handler(Nan::To<v8::Function>(Nan::Get(object, key).ToLocalChecked()).ToLocalChecked());
  10. v8::Local<v8::Value> argv[] = {
  11. Nan::New<v8::String>(path).ToLocalChecked(),
  12. Nan::New<v8::Number>(flags),
  13. Nan::New<v8::Number>(id)
  14. };
  15. handler.Call(3, argv, &async_resource);
  16. }
  17. NAN_METHOD(FSEvents::New) {
  18. Nan::Utf8String path(info[0]);
  19. FSEvents *fse = new FSEvents(*path);
  20. fse->Wrap(info.This());
  21. Nan::Set(info.This(), Nan::New<v8::String>("handler").ToLocalChecked(), info[1]);
  22. info.GetReturnValue().Set(info.This());
  23. }
  24. NAN_METHOD(FSEvents::Stop) {
  25. FSEvents* fse = Nan::ObjectWrap::Unwrap<FSEvents>(info.This());
  26. fse->threadStop();
  27. fse->asyncStop();
  28. info.GetReturnValue().Set(info.This());
  29. }
  30. NAN_METHOD(FSEvents::Start) {
  31. FSEvents* fse = Nan::ObjectWrap::Unwrap<FSEvents>(info.This());
  32. fse->asyncStart();
  33. fse->threadStart();
  34. info.GetReturnValue().Set(info.This());
  35. }