1111#include < vector>
1212#include < math.h>
1313
14+ #include " src/per-isolate-data.h"
1415#include " src/workers.h"
1516#include " src/admin.h"
1617
@@ -33,6 +34,10 @@ AdminClient::AdminClient(Conf* gconfig):
3334 rkqu = NULL ;
3435}
3536
37+ void AdminClient::delete_instance (void * arg) {
38+ delete (static_cast <AdminClient*>(arg));
39+ }
40+
3641AdminClient::~AdminClient () {
3742 Disconnect ();
3843}
@@ -90,8 +95,6 @@ Baton AdminClient::Disconnect() {
9095 return Baton (RdKafka::ERR_NO_ERROR);
9196}
9297
93- Nan::Persistent<v8::Function> AdminClient::constructor;
94-
9598void AdminClient::Init (v8::Local<v8::Object> exports) {
9699 Nan::HandleScope scope;
97100
@@ -108,7 +111,7 @@ void AdminClient::Init(v8::Local<v8::Object> exports) {
108111 Nan::SetPrototypeMethod (tpl, " disconnect" , NodeDisconnect);
109112 Nan::SetPrototypeMethod (tpl, " setToken" , NodeSetToken);
110113
111- constructor .Reset (
114+ PerIsolateData::For ( v8::Isolate::GetCurrent ())-> AdminClientConstructor () .Reset (
112115 (tpl->GetFunction (Nan::GetCurrentContext ())).ToLocalChecked ());
113116 Nan::Set (exports, Nan::New (" AdminClient" ).ToLocalChecked (),
114117 tpl->GetFunction (Nan::GetCurrentContext ()).ToLocalChecked ());
@@ -155,7 +158,8 @@ v8::Local<v8::Object> AdminClient::NewInstance(v8::Local<v8::Value> arg) {
155158 const unsigned argc = 1 ;
156159
157160 v8::Local<v8::Value> argv[argc] = { arg };
158- v8::Local<v8::Function> cons = Nan::New<v8::Function>(constructor);
161+ v8::Local<v8::Function> cons = Nan::New<v8::Function>(
162+ PerIsolateData::For (v8::Isolate::GetCurrent ())->AdminClientConstructor ());
159163 v8::Local<v8::Object> instance =
160164 Nan::NewInstance (cons, argc, argv).ToLocalChecked ();
161165
0 commit comments