void EIO_AfterClose(uv_work_t* req) { Nan::HandleScope scope; VoidBaton* data = static_cast<VoidBaton*>(req->data); v8::Local<v8::Value> argv[1]; if (data->errorString[0]) { argv[0] = v8::Exception::Error(Nan::New<v8::String>(data->errorString).ToLocalChecked()); } else { argv[0] = Nan::Null(); // We don't have an error, so clean up the write queue for that fd _WriteQueue *q = qForFD(data->fd); if (q) { q->lock(); QueuedWrite &write_queue = q->get(); while (!write_queue.empty()) { QueuedWrite *del_q = write_queue.next; del_q->baton->buffer.Reset(); del_q->remove(); } q->unlock(); deleteQForFD(data->fd); } } data->callback.Call(1, argv); delete data; delete req; }
void EIO_AfterClose(uv_work_t* req) { NanScope(); CloseBaton* data = static_cast<CloseBaton*>(req->data); v8::Handle<v8::Value> argv[1]; if(data->errorString[0]) { argv[0] = v8::Exception::Error(NanNew<v8::String>(data->errorString)); } else { argv[0] = NanUndefined(); // We don't have an error, so clean up the write queue for that fd _WriteQueue *q = qForFD(data->fd); if (q) { q->lock(); QueuedWrite &write_queue = q->get(); while (!write_queue.empty()) { QueuedWrite *del_q = write_queue.next; NanDisposePersistent(del_q->baton->buffer); del_q->remove(); } q->unlock(); deleteQForFD(data->fd); } } data->callback->Call(1, argv); delete data->callback; delete data; delete req; }