11
11
#include < vector>
12
12
13
13
#include " src/kafka-consumer.h"
14
+ #include " src/per-isolate-data.h"
14
15
#include " src/workers.h"
15
16
16
17
using Nan::FunctionCallbackInfo;
@@ -36,6 +37,10 @@ KafkaConsumer::KafkaConsumer(Conf* gconfig, Conf* tconfig):
36
37
m_consume_loop = nullptr ;
37
38
}
38
39
40
+ void KafkaConsumer::delete_instance (void * arg) {
41
+ delete (static_cast <KafkaConsumer*>(arg));
42
+ }
43
+
39
44
KafkaConsumer::~KafkaConsumer () {
40
45
// We only want to run this if it hasn't been run already
41
46
Disconnect ();
@@ -558,8 +563,6 @@ std::string KafkaConsumer::RebalanceProtocol() {
558
563
return consumer->rebalance_protocol ();
559
564
}
560
565
561
- Nan::Persistent<v8::Function> KafkaConsumer::constructor;
562
-
563
566
void KafkaConsumer::Init (v8::Local<v8::Object> exports) {
564
567
Nan::HandleScope scope;
565
568
@@ -620,7 +623,8 @@ void KafkaConsumer::Init(v8::Local<v8::Object> exports) {
620
623
Nan::SetPrototypeMethod (tpl, " commitSync" , NodeCommitSync);
621
624
Nan::SetPrototypeMethod (tpl, " offsetsStore" , NodeOffsetsStore);
622
625
623
- constructor.Reset ((tpl->GetFunction (Nan::GetCurrentContext ()))
626
+ PerIsolateData::For (v8::Isolate::GetCurrent ())->KafkaConsumerConstructor ()
627
+ .Reset ((tpl->GetFunction (Nan::GetCurrentContext ()))
624
628
.ToLocalChecked ());
625
629
Nan::Set (exports, Nan::New (" KafkaConsumer" ).ToLocalChecked (),
626
630
(tpl->GetFunction (Nan::GetCurrentContext ())).ToLocalChecked ());
@@ -680,7 +684,8 @@ v8::Local<v8::Object> KafkaConsumer::NewInstance(v8::Local<v8::Value> arg) {
680
684
const unsigned argc = 1 ;
681
685
682
686
v8::Local<v8::Value> argv[argc] = { arg };
683
- v8::Local<v8::Function> cons = Nan::New<v8::Function>(constructor);
687
+ v8::Local<v8::Function> cons = Nan::New<v8::Function>(
688
+ PerIsolateData::For (v8::Isolate::GetCurrent ())->KafkaConsumerConstructor ());
684
689
v8::Local<v8::Object> instance =
685
690
Nan::NewInstance (cons, argc, argv).ToLocalChecked ();
686
691
@@ -1395,7 +1400,7 @@ NAN_METHOD(KafkaConsumer::NodeDisconnect) {
1395
1400
// cleanup the async worker
1396
1401
consumeLoop->WorkComplete ();
1397
1402
consumeLoop->Destroy ();
1398
-
1403
+
1399
1404
consumer->m_consume_loop = nullptr ;
1400
1405
}
1401
1406
0 commit comments