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" 
109112  Nan::SetPrototypeMethod (tpl, " setToken" 
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