Handle<Value> FixedPngStack::PngEncodeAsync(const Arguments &args) { HandleScope scope; if (args.Length() != 1) return VException("One argument required - callback function."); if (!args[0]->IsFunction()) return VException("First argument must be a function."); Local<Function> callback = Local<Function>::Cast(args[0]); FixedPngStack *png = ObjectWrap::Unwrap<FixedPngStack>(args.This()); encode_request *enc_req = (encode_request *)malloc(sizeof(*enc_req)); if (!enc_req) return VException("malloc in FixedPngStack::PngEncodeAsync failed."); enc_req->callback = Persistent<Function>::New(callback); enc_req->png_obj = png; enc_req->png = NULL; enc_req->png_len = 0; enc_req->error = NULL; eio_custom(EIO_PngEncode, EIO_PRI_DEFAULT, EIO_PngEncodeAfter, enc_req); ev_ref(EV_DEFAULT_UC); png->Ref(); return Undefined(); }
Handle<Value> FixedPngStack::PngEncodeAsync(const Arguments &args) { HandleScope scope; if (args.Length() != 1) return VException("One argument required - callback function."); if (!args[0]->IsFunction()) return VException("First argument must be a function."); Local<Function> callback = Local<Function>::Cast(args[0]); FixedPngStack *png = ObjectWrap::Unwrap<FixedPngStack>(args.This()); encode_request *enc_req = (encode_request *)malloc(sizeof(*enc_req)); if (!enc_req) return VException("malloc in FixedPngStack::PngEncodeAsync failed."); enc_req->callback = Persistent<Function>::New(callback); enc_req->png_obj = png; enc_req->png = NULL; enc_req->png_len = 0; enc_req->error = NULL; uv_work_t* req = new uv_work_t; req->data = enc_req; uv_queue_work(uv_default_loop(), req, UV_PngEncode, (uv_after_work_cb)UV_PngEncodeAfter); png->Ref(); return Undefined(); }