This is an automated email from the ASF dual-hosted git repository.

massakam pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar-client-node.git


The following commit(s) were added to refs/heads/master by this push:
     new ba575e9  fix cleanup (#106)
ba575e9 is described below

commit ba575e900fce19dbc1d6917c94eec2cfa5ec9874
Author: k2la <[email protected]>
AuthorDate: Tue Jul 21 18:54:32 2020 +0900

    fix cleanup (#106)
    
    Co-authored-by: yfuruta <[email protected]>
---
 src/Consumer.cc | 13 +++++++++----
 src/Consumer.h  |  1 +
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/Consumer.cc b/src/Consumer.cc
index 225ed3e..5bcaa87 100644
--- a/src/Consumer.cc
+++ b/src/Consumer.cc
@@ -289,11 +289,17 @@ class ConsumerCloseWorker : public Napi::AsyncWorker {
 
 void Consumer::Cleanup() {
   if (this->listener) {
-    this->Unref();
-    this->listener = nullptr;
+    this->CleanupListener();
   }
 }
 
+void Consumer::CleanupListener() {
+  pulsar_consumer_pause_message_listener(this->wrapper->cConsumer);
+  this->Unref();
+  this->listener->callback.Release();
+  this->listener = nullptr;
+}
+
 Napi::Value Consumer::Close(const Napi::CallbackInfo &info) {
   Napi::Promise::Deferred deferred = Napi::Promise::Deferred::New(info.Env());
   ConsumerCloseWorker *wk = new ConsumerCloseWorker(deferred, 
this->wrapper->cConsumer, this);
@@ -303,7 +309,6 @@ Napi::Value Consumer::Close(const Napi::CallbackInfo &info) 
{
 
 Consumer::~Consumer() {
   if (this->listener) {
-    pulsar_consumer_pause_message_listener(this->wrapper->cConsumer);
-    this->listener->callback.Release();
+    this->CleanupListener();
   }
 }
diff --git a/src/Consumer.h b/src/Consumer.h
index 2c5f856..e6e3609 100644
--- a/src/Consumer.h
+++ b/src/Consumer.h
@@ -35,6 +35,7 @@ class Consumer : public Napi::ObjectWrap<Consumer> {
   void SetCConsumer(std::shared_ptr<CConsumerWrapper> cConsumer);
   void SetListenerCallback(ListenerCallback *listener);
   void Cleanup();
+  void CleanupListener();
 
  private:
   std::shared_ptr<CConsumerWrapper> wrapper;

Reply via email to