Revert "[CONPRO-1333] Fix for crash in virtual device" 23/195223/1
authorHarish Kumara M <h.marappa@samsung.com>
Tue, 4 Dec 2018 14:08:35 +0000 (19:38 +0530)
committerDoHyun Pyun <dh79.pyun@samsung.com>
Wed, 12 Dec 2018 00:12:03 +0000 (09:12 +0900)
This reverts commit 3f24e6e008ba6de12fe6ef8dd45cf4a096bc528c.

https://github.sec.samsung.net/RS7-IOTIVITY/IoTivity/commit/0633a03bbee706e9d07010f6107f9f3bc648ae68
(cherry picked from commit 0633a03bbee706e9d07010f6107f9f3bc648ae68)

Change-Id: I6e1cc43fe53298d32fc58802914b8f424c759539
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
android/android_api/base/jni/JniListenerManager.h
android/android_api/base/jni/JniOcAccountManager.cpp
android/android_api/base/jni/JniOcAccountManager.h
android/android_api/base/jni/JniOcResource.cpp
android/android_api/base/jni/JniOcResource.h
android/android_api/base/jni/JniOnDeleteListener.h
android/android_api/base/jni/JniOnGetListener.h
android/android_api/base/jni/JniOnObserveListener.h
android/android_api/base/jni/JniOnPostListener.h
android/android_api/base/jni/JniOnPutListener.h

index 5b1a2f6..8965e85 100644 (file)
@@ -35,9 +35,9 @@ template <class T>
 class JniListenerManager
 {
 public:
-    std::shared_ptr<T> addListener(JNIEnv* env, jobject jListener, JniOcResource* owner)
+    T* addListener(JNIEnv* env, jobject jListener, JniOcResource* owner)
     {
-        std::shared_ptr<T> onEventListener = nullptr;
+        T *onEventListener = nullptr;
 
         m_mapMutex.lock();
 
@@ -57,19 +57,19 @@ public:
 
         if (!onEventListener)
         {
-            onEventListener = std::make_shared<T>(env, jListener, owner);
+            onEventListener = new T(env, jListener, owner);
             jobject jgListener = env->NewGlobalRef(jListener);
 
             if (jgListener)
             {
                 m_listenerMap.insert(
                         std::pair<jobject,
-                        std::pair<std::shared_ptr<T>, int>>(jgListener,
-                        std::pair<std::shared_ptr<T>, int>(onEventListener, 1)));
+                        std::pair<T*, int>>(jgListener, std::pair<T*, int>(onEventListener, 1)));
             }
             else
             {
                 LOGD("OnEventListener: Failed to create global listener ref.");
+                delete onEventListener;
                 m_mapMutex.unlock();
                 return nullptr;
             }
@@ -81,9 +81,9 @@ public:
     }
 
 #ifdef WITH_CLOUD
-    std::shared_ptr<T> addListener(JNIEnv* env, jobject jListener, JniOcAccountManager* owner)
+    T* addListener(JNIEnv* env, jobject jListener, JniOcAccountManager* owner)
     {
-        std::shared_ptr<T> onEventListener = nullptr;
+        T *onEventListener = nullptr;
 
         m_mapMutex.lock();
 
@@ -103,19 +103,19 @@ public:
 
         if (!onEventListener)
         {
-            onEventListener = std::make_shared<T>(env, jListener, owner);
+            onEventListener = new T(env, jListener, owner);
             jobject jgListener = env->NewGlobalRef(jListener);
 
             if (jgListener)
             {
                 m_listenerMap.insert(
                         std::pair<jobject,
-                        std::pair<std::shared_ptr<T>, int>>(jgListener,
-                        std::pair<std::shared_ptr<T>, int>(onEventListener, 1)));
+                        std::pair<T*, int>>(jgListener, std::pair<T*, int>(onEventListener, 1)));
             }
             else
             {
                 LOGD("OnEventListener: Failed to create global listener ref.");
+                delete onEventListener;
                 m_mapMutex.unlock();
                 return nullptr;
             }
@@ -145,6 +145,8 @@ public:
                 else
                 {
                     env->DeleteGlobalRef(it->first);
+                    T* listener = refPair.first;
+                    delete listener;
                     m_listenerMap.erase(it);
                     LOGI("OnEventListener is removed");
                 }
@@ -163,6 +165,7 @@ public:
         {
             env->DeleteGlobalRef(pair.first);
             auto refPair = pair.second;
+            delete refPair.first;
         }
         m_listenerMap.clear();
 
@@ -170,7 +173,7 @@ public:
     }
 
 private:
-    std::map<jobject, std::pair<std::shared_ptr<T>, int>> m_listenerMap;
+    std::map<jobject, std::pair<T*, int>> m_listenerMap;
     std::mutex m_mapMutex;
 };
 
index a47278f..2d7e861 100644 (file)
@@ -84,22 +84,22 @@ JniOcAccountManager* JniOcAccountManager::getJniOcAccountManagerPtr(JNIEnv *env,
     return accountManager;
 }
 
-JniOnGetListener::Ptr JniOcAccountManager::addOnGetListener(JNIEnv* env, jobject jListener)
+JniOnGetListener* JniOcAccountManager::addOnGetListener(JNIEnv* env, jobject jListener)
 {
     return this->m_onGetManager.addListener(env, jListener, this);
 }
 
-JniOnPostListener::Ptr JniOcAccountManager::addOnPostListener(JNIEnv* env, jobject jListener)
+JniOnPostListener* JniOcAccountManager::addOnPostListener(JNIEnv* env, jobject jListener)
 {
     return this->m_onPostManager.addListener(env, jListener, this);
 }
 
-JniOnDeleteListener::Ptr JniOcAccountManager::addOnDeleteListener(JNIEnv* env, jobject jListener)
+JniOnDeleteListener* JniOcAccountManager::addOnDeleteListener(JNIEnv* env, jobject jListener)
 {
     return this->m_onDeleteManager.addListener(env, jListener, this);
 }
 
-JniOnObserveListener::Ptr JniOcAccountManager::addOnObserveListener(JNIEnv* env, jobject jListener)
+JniOnObserveListener* JniOcAccountManager::addOnObserveListener(JNIEnv* env, jobject jListener)
 {
     return this->m_onObserveManager.addListener(env, jListener, this);
 }
@@ -127,25 +127,18 @@ void JniOcAccountManager::removeOnObserveListener(JNIEnv* env, jobject jListener
 OCStackResult JniOcAccountManager::signUp(JNIEnv* env, const std::string& authProvider,
                                           const std::string& authCode, jobject jListener)
 {
-    JniOnPostListener::Ptr onPostListener = addOnPostListener(env, jListener);
-
+    JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
     if (nullptr == onPostListener)
     {
         LOGE("onPostListener is null");
         return OC_STACK_ERROR;
     }
 
-    PostCallback postCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPostListener> weak_ref)
+    PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPostCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPostListener);
+        onPostListener->onPostCallback(opts, rep, eCode);
+    };
 
     return m_sharedAccountManager->signUp(authProvider, authCode, postCallback);
 }
@@ -154,25 +147,18 @@ OCStackResult JniOcAccountManager::signUp(JNIEnv* env, const std::string& authPr
                                           const std::string& authCode,
                                           const QueryParamsMap& options, jobject jListener)
 {
-    JniOnPostListener::Ptr onPostListener = addOnPostListener(env, jListener);
-
+    JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
     if (nullptr == onPostListener)
     {
         LOGE("onPostListener is null");
         return OC_STACK_ERROR;
     }
 
-    PostCallback postCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPostListener> weak_ref)
+    PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPostCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPostListener);
+        onPostListener->onPostCallback(opts, rep, eCode);
+    };
 
     return m_sharedAccountManager->signUp(authProvider, authCode, options, postCallback);
 }
@@ -180,25 +166,18 @@ OCStackResult JniOcAccountManager::signUp(JNIEnv* env, const std::string& authPr
 OCStackResult JniOcAccountManager::signIn(JNIEnv* env, const std::string& userUuid,
                                           const std::string& accessToken, jobject jListener)
 {
-    JniOnPostListener::Ptr onPostListener = addOnPostListener(env, jListener);
-
+    JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
     if (nullptr == onPostListener)
     {
         LOGE("onPostListener is null");
         return OC_STACK_ERROR;
     }
 
-    PostCallback postCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPostListener> weak_ref)
+    PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPostCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPostListener);
+        onPostListener->onPostCallback(opts, rep, eCode);
+    };
 
     return m_sharedAccountManager->signIn(userUuid, accessToken, postCallback);
 }
@@ -206,25 +185,18 @@ OCStackResult JniOcAccountManager::signIn(JNIEnv* env, const std::string& userUu
 OCStackResult JniOcAccountManager::signOut(JNIEnv* env, const std::string& accessToken,
                                            jobject jListener)
 {
-    JniOnPostListener::Ptr onPostListener = addOnPostListener(env, jListener);
-
+    JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
     if (nullptr == onPostListener)
     {
         LOGE("onPostListener is null");
         return OC_STACK_ERROR;
     }
 
-    PostCallback postCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPostListener> weak_ref)
+    PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPostCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPostListener);
+        onPostListener->onPostCallback(opts, rep, eCode);
+    };
 
     return m_sharedAccountManager->signOut(accessToken, postCallback);
 }
@@ -233,25 +205,18 @@ OCStackResult JniOcAccountManager::refreshAccessToken(JNIEnv* env, const std::st
                                                       const std::string& refreshToken,
                                                       jobject jListener)
 {
-    JniOnPostListener::Ptr onPostListener = addOnPostListener(env, jListener);
-
+    JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
     if (nullptr == onPostListener)
     {
         LOGE("onPostListener is null");
         return OC_STACK_ERROR;
     }
 
-    PostCallback postCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPostListener> weak_ref)
+    PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPostCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPostListener);
+        onPostListener->onPostCallback(opts, rep, eCode);
+    };
 
     return m_sharedAccountManager->refreshAccessToken(userUuid, refreshToken, postCallback);
 }
@@ -259,25 +224,18 @@ OCStackResult JniOcAccountManager::refreshAccessToken(JNIEnv* env, const std::st
 OCStackResult JniOcAccountManager::searchUser(JNIEnv* env, const QueryParamsMap& queryMap,
                                               jobject jListener)
 {
-    JniOnGetListener::Ptr onGetListener = addOnGetListener(env, jListener);
-
+    JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
     if (nullptr == onGetListener)
     {
         LOGE("onGetListener is null");
         return OC_STACK_ERROR;
     }
 
-    GetCallback getCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnGetListener> weak_ref)
+    GetCallback getCallback = [onGetListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onGetCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onGetListener);
+        onGetListener->onGetCallback(opts, rep, eCode);
+    };
 
     return m_sharedAccountManager->searchUser(queryMap, getCallback);
 }
@@ -285,49 +243,36 @@ OCStackResult JniOcAccountManager::searchUser(JNIEnv* env, const QueryParamsMap&
 OCStackResult JniOcAccountManager::deleteDevice(JNIEnv* env, const std::string& accessToken,
                                                 const std::string& deviceId, jobject jListener)
 {
-    JniOnDeleteListener::Ptr onDeleteListener = addOnDeleteListener(env, jListener);
-
+    JniOnDeleteListener *onDeleteListener = addOnDeleteListener(env, jListener);
     if (nullptr == onDeleteListener)
     {
         LOGE("onDeleteListener is null");
         return OC_STACK_ERROR;
     }
 
-    DeleteCallback deleteCallback = std::bind([](const HeaderOptions& opts,
-        const int eCode,
-        std::weak_ptr<JniOnDeleteListener> weak_ref)
+    DeleteCallback deleteCallback = [onDeleteListener](const HeaderOptions& opts,
+        const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onDeleteCallback(opts, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, onDeleteListener);
+        onDeleteListener->onDeleteCallback(opts, eCode);
+    };
 
     return m_sharedAccountManager->deleteDevice(accessToken, deviceId, deleteCallback);
 }
 
 OCStackResult JniOcAccountManager::createGroup(JNIEnv* env, jobject jListener)
 {
-    JniOnPostListener::Ptr onPostListener = addOnPostListener(env, jListener);
-
+    JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
     if (nullptr == onPostListener)
     {
         LOGE("onPostListener is null");
         return OC_STACK_ERROR;
     }
 
-    PostCallback postCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPostListener> weak_ref)
+    PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPostCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPostListener);
+        onPostListener->onPostCallback(opts, rep, eCode);
+    };
 
     return m_sharedAccountManager->createGroup(postCallback);
 }
@@ -335,25 +280,18 @@ OCStackResult JniOcAccountManager::createGroup(JNIEnv* env, jobject jListener)
 OCStackResult JniOcAccountManager::createGroup(JNIEnv* env, const QueryParamsMap& queryMap,
                                                jobject jListener)
 {
-    JniOnPostListener::Ptr onPostListener = addOnPostListener(env, jListener);
-
+    JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
     if (nullptr == onPostListener)
     {
         LOGE("onPostListener is null");
         return OC_STACK_ERROR;
     }
 
-    PostCallback postCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPostListener> weak_ref)
+    PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPostCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPostListener);
+        onPostListener->onPostCallback(opts, rep, eCode);
+    };
 
     return m_sharedAccountManager->createGroup(queryMap, postCallback);
 }
@@ -361,49 +299,36 @@ OCStackResult JniOcAccountManager::createGroup(JNIEnv* env, const QueryParamsMap
 OCStackResult JniOcAccountManager::deleteGroup(JNIEnv* env, const std::string& groupId,
                                                jobject jListener)
 {
-    JniOnDeleteListener::Ptr onDeleteListener = addOnDeleteListener(env, jListener);
-
+    JniOnDeleteListener *onDeleteListener = addOnDeleteListener(env, jListener);
     if (nullptr == onDeleteListener)
     {
         LOGE("onDeleteListener is null");
         return OC_STACK_ERROR;
     }
 
-    DeleteCallback deleteCallback = std::bind([](const HeaderOptions& opts,
-        const int eCode,
-        std::weak_ptr<JniOnDeleteListener> weak_ref)
+    DeleteCallback deleteCallback = [onDeleteListener](const HeaderOptions& opts,
+        const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onDeleteCallback(opts, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, onDeleteListener);
+        onDeleteListener->onDeleteCallback(opts, eCode);
+    };
 
     return m_sharedAccountManager->deleteGroup(groupId, deleteCallback);
 }
 
 OCStackResult JniOcAccountManager::getGroupInfoAll(JNIEnv* env, jobject jListener)
 {
-    JniOnGetListener::Ptr onGetListener = addOnGetListener(env, jListener);
-
+    JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
     if (nullptr == onGetListener)
     {
         LOGE("onGetListener is null");
         return OC_STACK_ERROR;
     }
 
-    GetCallback getCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnGetListener> weak_ref)
+    GetCallback getCallback = [onGetListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onGetCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onGetListener);
+        onGetListener->onGetCallback(opts, rep, eCode);
+    };
 
     return m_sharedAccountManager->getGroupInfoAll(getCallback);
 }
@@ -411,25 +336,18 @@ OCStackResult JniOcAccountManager::getGroupInfoAll(JNIEnv* env, jobject jListene
 OCStackResult JniOcAccountManager::getGroupInfo(JNIEnv* env, const std::string& groupId,
                                                 jobject jListener)
 {
-    JniOnGetListener::Ptr onGetListener = addOnGetListener(env, jListener);
-
+    JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
     if (nullptr == onGetListener)
     {
         LOGE("onGetListener is null");
         return OC_STACK_ERROR;
     }
 
-    GetCallback getCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnGetListener> weak_ref)
+    GetCallback getCallback = [onGetListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onGetCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onGetListener);
+        onGetListener->onGetCallback(opts, rep, eCode);
+    };
 
     return m_sharedAccountManager->getGroupInfo(groupId, getCallback);
 }
@@ -438,25 +356,18 @@ OCStackResult JniOcAccountManager::addPropertyValueToGroup(JNIEnv* env, const st
                                                            const OCRepresentation& propertyValue,
                                                            jobject jListener)
 {
-    JniOnPostListener::Ptr onPostListener = addOnPostListener(env, jListener);
-
+    JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
     if (nullptr == onPostListener)
     {
         LOGE("onPostListener is null");
         return OC_STACK_ERROR;
     }
 
-    PostCallback postCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPostListener> weak_ref)
+    PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPostCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPostListener);
+        onPostListener->onPostCallback(opts, rep, eCode);
+    };
 
     return m_sharedAccountManager->addPropertyValueToGroup(groupId, propertyValue, postCallback);
 }
@@ -466,25 +377,18 @@ OCStackResult JniOcAccountManager::deletePropertyValueFromGroup(JNIEnv* env,
                                                         const OCRepresentation& propertyValue,
                                                         jobject jListener)
 {
-    JniOnPostListener::Ptr onPostListener = addOnPostListener(env, jListener);
-
+    JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
     if (nullptr == onPostListener)
     {
         LOGE("onPostListener is null");
         return OC_STACK_ERROR;
     }
 
-    PostCallback postCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPostListener> weak_ref)
+    PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPostCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPostListener);
+        onPostListener->onPostCallback(opts, rep, eCode);
+    };
 
     return m_sharedAccountManager->deletePropertyValueFromGroup(groupId, propertyValue,
                                                                 postCallback);
@@ -495,25 +399,18 @@ OCStackResult JniOcAccountManager::updatePropertyValueOnGroup(JNIEnv* env,
                                                         const OCRepresentation& propertyValue,
                                                         jobject jListener)
 {
-    JniOnPostListener::Ptr onPostListener = addOnPostListener(env, jListener);
-
+    JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
     if (nullptr == onPostListener)
     {
         LOGE("onPostListener is null");
         return OC_STACK_ERROR;
     }
 
-    PostCallback postCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPostListener> weak_ref)
+    PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPostCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPostListener);
+        onPostListener->onPostCallback(opts, rep, eCode);
+    };
 
     return m_sharedAccountManager->updatePropertyValueOnGroup(groupId, propertyValue,
                                                               postCallback);
@@ -521,26 +418,18 @@ OCStackResult JniOcAccountManager::updatePropertyValueOnGroup(JNIEnv* env,
 
 OCStackResult JniOcAccountManager::observeGroup(JNIEnv* env, jobject jListener)
 {
-    JniOnObserveListener::Ptr onObserveListener = addOnObserveListener(env, jListener);
-
+    JniOnObserveListener *onObserveListener = addOnObserveListener(env, jListener);
     if (nullptr == onObserveListener)
     {
         LOGE("onObserveListener is null");
         return OC_STACK_ERROR;
     }
 
-    ObserveCallback observeCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int& eCode,
-        const int& sequenceNumber,
-        std::weak_ptr<JniOnObserveListener> weak_ref)
+    ObserveCallback observeCallback = [onObserveListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int& eCode, const int& sequenceNumber)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onObserveCallback(opts, rep, eCode, sequenceNumber);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, onObserveListener);
+        onObserveListener->onObserveCallback(opts, rep, eCode, sequenceNumber);
+    };
 
     return m_sharedAccountManager->observeGroup(observeCallback);
 }
@@ -552,26 +441,18 @@ OCStackResult JniOcAccountManager::cancelObserveGroup()
 
 OCStackResult JniOcAccountManager::observeInvitation(JNIEnv* env, jobject jListener)
 {
-    JniOnObserveListener::Ptr onObserveListener = addOnObserveListener(env, jListener);
-
+    JniOnObserveListener *onObserveListener = addOnObserveListener(env, jListener);
     if (nullptr == onObserveListener)
     {
         LOGE("onObserveListener is null");
         return OC_STACK_ERROR;
     }
 
-    ObserveCallback observeCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int& eCode,
-        const int& sequenceNumber,
-        std::weak_ptr<JniOnObserveListener> weak_ref)
+    ObserveCallback observeCallback = [onObserveListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int& eCode, const int& sequenceNumber)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onObserveCallback(opts, rep, eCode, sequenceNumber);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, onObserveListener);
+        onObserveListener->onObserveCallback(opts, rep, eCode, sequenceNumber);
+    };
 
     return m_sharedAccountManager->observeInvitation(observeCallback);
 }
@@ -584,25 +465,18 @@ OCStackResult JniOcAccountManager::cancelObserveInvitation()
 OCStackResult JniOcAccountManager::sendInvitation(JNIEnv* env, const std::string& groupId,
                                                   const std::string& userUuid, jobject jListener)
 {
-    JniOnPostListener::Ptr onPostListener = addOnPostListener(env, jListener);
-
+    JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
     if (nullptr == onPostListener)
     {
         LOGE("onPostListener is null");
         return OC_STACK_ERROR;
     }
 
-    PostCallback postCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPostListener> weak_ref)
+    PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPostCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPostListener);
+        onPostListener->onPostCallback(opts, rep, eCode);
+    };
 
     return m_sharedAccountManager->sendInvitation(groupId, userUuid, postCallback);
 }
@@ -610,24 +484,18 @@ OCStackResult JniOcAccountManager::sendInvitation(JNIEnv* env, const std::string
 OCStackResult JniOcAccountManager::cancelInvitation(JNIEnv* env, const std::string& groupId,
                                                     const std::string& userUuid, jobject jListener)
 {
-    JniOnDeleteListener::Ptr onDeleteListener = addOnDeleteListener(env, jListener);
-
+    JniOnDeleteListener *onDeleteListener = addOnDeleteListener(env, jListener);
     if (nullptr == onDeleteListener)
     {
         LOGE("onDeleteListener is null");
         return OC_STACK_ERROR;
     }
 
-    DeleteCallback deleteCallback = std::bind([](const HeaderOptions& opts,
-        const int eCode,
-        std::weak_ptr<JniOnDeleteListener> weak_ref)
+    DeleteCallback deleteCallback = [onDeleteListener](const HeaderOptions& opts,
+        const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onDeleteCallback(opts, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, onDeleteListener);
+        onDeleteListener->onDeleteCallback(opts, eCode);
+    };
 
     return m_sharedAccountManager->cancelInvitation(groupId, userUuid, deleteCallback);
 }
@@ -635,24 +503,18 @@ OCStackResult JniOcAccountManager::cancelInvitation(JNIEnv* env, const std::stri
 OCStackResult JniOcAccountManager::replyToInvitation(JNIEnv* env, const std::string& groupId,
                                                      const bool accept, jobject jListener)
 {
-    JniOnDeleteListener::Ptr onDeleteListener = addOnDeleteListener(env, jListener);
-
+    JniOnDeleteListener *onDeleteListener = addOnDeleteListener(env, jListener);
     if (nullptr == onDeleteListener)
     {
         LOGE("onDeleteListener is null");
         return OC_STACK_ERROR;
     }
 
-    DeleteCallback deleteCallback = std::bind([](const HeaderOptions& opts,
-        const int eCode,
-        std::weak_ptr<JniOnDeleteListener> weak_ref)
+    DeleteCallback deleteCallback = [onDeleteListener](const HeaderOptions& opts,
+        const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onDeleteCallback(opts, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, onDeleteListener);
+        onDeleteListener->onDeleteCallback(opts, eCode);
+    };
 
     return m_sharedAccountManager->replyToInvitation(groupId, accept, deleteCallback);
 }
index 34767dc..9eb3fee 100644 (file)
@@ -78,10 +78,10 @@ public:
     OCStackResult replyToInvitation(JNIEnv* env, const std::string& groupId, const bool accept,
                                     jobject jListener);
 
-    JniOnGetListener::Ptr addOnGetListener(JNIEnv* env, jobject jListener);
-    JniOnPostListener::Ptr addOnPostListener(JNIEnv* env, jobject jListener);
-    JniOnDeleteListener::Ptr addOnDeleteListener(JNIEnv* env, jobject jListener);
-    JniOnObserveListener::Ptr addOnObserveListener(JNIEnv* env, jobject jListener);
+    JniOnGetListener* addOnGetListener(JNIEnv* env, jobject jListener);
+    JniOnPostListener* addOnPostListener(JNIEnv* env, jobject jListener);
+    JniOnDeleteListener* addOnDeleteListener(JNIEnv* env, jobject jListener);
+    JniOnObserveListener* addOnObserveListener(JNIEnv* env, jobject jListener);
 
     void removeOnGetListener(JNIEnv* env, jobject jListener);
     void removeOnPostListener(JNIEnv* env, jobject jListener);
index 73fdf1d..9d30ba2 100644 (file)
@@ -60,20 +60,15 @@ JniOcResource::~JniOcResource()
 
 OCStackResult JniOcResource::get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener)
 {
-    JniOnGetListener::Ptr onGetListener = addOnGetListener(env, jListener);
+    JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
 
-    GetCallback getCallback = std::bind([](
+    GetCallback getCallback = [onGetListener](
         const HeaderOptions& opts,
         const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnGetListener> weak_ref)
+        const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onGetCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onGetListener);
+        onGetListener->onGetCallback(opts, rep, eCode);
+    };
 
     return m_sharedResource->get(queryParametersMap, getCallback);
 }
@@ -81,20 +76,13 @@ OCStackResult JniOcResource::get(JNIEnv* env, const QueryParamsMap &queryParamet
 OCStackResult JniOcResource::get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener,
     QualityOfService QoS)
 {
-    JniOnGetListener::Ptr onGetListener = addOnGetListener(env, jListener);
+    JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
 
-    GetCallback getCallback = std::bind([](
-       const HeaderOptions& opts,
-       const OCRepresentation& rep,
-       const int eCode,
-       std::weak_ptr<JniOnGetListener> weak_ref)
+    GetCallback getCallback = [onGetListener](const HeaderOptions& opts, const OCRepresentation& rep,
+        const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onGetCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onGetListener);
+        onGetListener->onGetCallback(opts, rep, eCode);
+    };
 
     return m_sharedResource->get(queryParametersMap, getCallback, QoS);
 }
@@ -106,63 +94,44 @@ OCStackResult JniOcResource::get(
     const QueryParamsMap &queryParametersMap,
     jobject jListener)
 {
-    JniOnGetListener::Ptr onGetListener = addOnGetListener(env, jListener);
+    JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
 
-    GetCallback getCallback = std::bind([](
-        const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnGetListener> weak_ref)
+    GetCallback getCallback = [onGetListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onGetCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onGetListener);
+        onGetListener->onGetCallback(opts, rep, eCode);
+    };
 
-    return m_sharedResource->get(resourceType, resourceInterface, queryParametersMap, getCallback);
+    return m_sharedResource->get(resourceType, resourceInterface, queryParametersMap,
+        getCallback);
 }
 
 OCStackResult JniOcResource::get(JNIEnv* env, const std::string &resourceType,
     const std::string &resourceInterface, const QueryParamsMap &queryParametersMap,
     jobject jListener, QualityOfService QoS)
 {
-    JniOnGetListener::Ptr onGetListener = addOnGetListener(env, jListener);
+    JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
 
-    GetCallback getCallback = std::bind([](
-        const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnGetListener> weak_ref)
+    GetCallback getCallback = [onGetListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onGetCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onGetListener);
+        onGetListener->onGetCallback(opts, rep, eCode);
+    };
 
-    return m_sharedResource->get(resourceType, resourceInterface, queryParametersMap, getCallback, QoS);
+    return m_sharedResource->get(resourceType, resourceInterface, queryParametersMap,
+        getCallback, QoS);
 }
 
 OCStackResult JniOcResource::put(JNIEnv* env, const OCRepresentation &representation,
     const QueryParamsMap &queryParametersMap, jobject jListener)
 {
-    JniOnPutListener::Ptr onPutListener = addOnPutListener(env, jListener);
+    JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
 
-    PutCallback putCallback = std::bind([](
-        const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPutListener> weak_ref)
+    PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPutCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPutListener);
+        onPutListener->onPutCallback(opts, rep, eCode);
+    };
 
     return m_sharedResource->put(representation, queryParametersMap, putCallback);
 }
@@ -170,20 +139,13 @@ OCStackResult JniOcResource::put(JNIEnv* env, const OCRepresentation &representa
 OCStackResult JniOcResource::put(JNIEnv* env, const OCRepresentation &representation,
     const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
 {
-    JniOnPutListener::Ptr onPutListener = addOnPutListener(env, jListener);
+    JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
 
-    PutCallback putCallback = std::bind([](
-        const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPutListener> weak_ref)
+    PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPutCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPutListener);
+        onPutListener->onPutCallback(opts, rep, eCode);
+    };
 
     return m_sharedResource->put(representation, queryParametersMap, putCallback, QoS);
 }
@@ -192,65 +154,44 @@ OCStackResult JniOcResource::put(JNIEnv* env, const std::string &resourceType,
     const std::string &resourceInterface, const OCRepresentation &representation,
     const QueryParamsMap &queryParametersMap, jobject jListener)
 {
-    JniOnPutListener::Ptr onPutListener = addOnPutListener(env, jListener);
+    JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
 
-    PutCallback putCallback = std::bind([](
-        const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPutListener> weak_ref)
+    PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPutCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPutListener);
+        onPutListener->onPutCallback(opts, rep, eCode);
+    };
 
     return m_sharedResource->put(resourceType, resourceInterface, representation,
-                                 queryParametersMap, putCallback);
+        queryParametersMap, putCallback);
 }
 
 OCStackResult JniOcResource::put(JNIEnv* env, const std::string &resourceType,
     const std::string &resourceInterface, const OCRepresentation &representation,
     const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
 {
-    JniOnPutListener::Ptr onPutListener = addOnPutListener(env, jListener);
+    JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
 
-    PutCallback putCallback = std::bind( [](
-        const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPutListener> weak_ref)
+    PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPutCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPutListener);
+        onPutListener->onPutCallback(opts, rep, eCode);
+    };
 
     return m_sharedResource->put(resourceType, resourceInterface, representation,
-                                 queryParametersMap, putCallback, QoS);
+        queryParametersMap, putCallback, QoS);
 }
 
 OCStackResult JniOcResource::post(JNIEnv* env, const OCRepresentation &representation,
     const QueryParamsMap &queryParametersMap, jobject jListener)
 {
-    JniOnPostListener::Ptr onPostListener = addOnPostListener(env, jListener);
+    JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
 
-    PostCallback postCallback = std::bind([](
-        const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPostListener> weak_ref)
+    PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPostCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPostListener);
+        onPostListener->onPostCallback(opts, rep, eCode);
+    };
 
     return m_sharedResource->post(representation, queryParametersMap, postCallback);
 }
@@ -258,20 +199,13 @@ OCStackResult JniOcResource::post(JNIEnv* env, const OCRepresentation &represent
 OCStackResult JniOcResource::post(JNIEnv* env, const OCRepresentation &representation,
     const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
 {
-    JniOnPostListener::Ptr onPostListener = addOnPostListener(env, jListener);
+    JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
 
-    PostCallback postCallback = std::bind([](
-        const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPostListener> weak_ref)
+    PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPostCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPostListener);
+        onPostListener->onPostCallback(opts, rep, eCode);
+    };
 
     return m_sharedResource->post(representation, queryParametersMap, postCallback, QoS);
 }
@@ -280,82 +214,55 @@ OCStackResult JniOcResource::post(JNIEnv* env, const std::string &resourceType,
     const std::string &resourceInterface, const OCRepresentation &representation,
     const QueryParamsMap &queryParametersMap, jobject jListener)
 {
-    JniOnPostListener::Ptr onPostListener = addOnPostListener(env, jListener);
+    JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
 
-    PostCallback postCallback = std::bind([](
-        const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPostListener> weak_ref)
+    PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPostCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPostListener);
+        onPostListener->onPostCallback(opts, rep, eCode);
+    };
 
     return m_sharedResource->post(resourceType, resourceInterface, representation,
-                                  queryParametersMap, postCallback);
+        queryParametersMap, postCallback);
 }
 
 OCStackResult JniOcResource::post(JNIEnv* env, const std::string &resourceType,
     const std::string &resourceInterface, const OCRepresentation &representation,
     const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
 {
-    JniOnPostListener::Ptr onPostListener = addOnPostListener(env, jListener);
+    JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
 
-    PostCallback postCallback = std::bind([](
-        const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPostListener> weak_ref)
+    PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPostCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPostListener);
+        onPostListener->onPostCallback(opts, rep, eCode);
+    };
 
     return m_sharedResource->post(resourceType, resourceInterface, representation,
-                                  queryParametersMap, postCallback, QoS);
+        queryParametersMap, postCallback, QoS);
 }
 
 OCStackResult JniOcResource::deleteResource(JNIEnv* env, jobject jListener)
 {
-    JniOnDeleteListener::Ptr onDeleteListener = addOnDeleteListener(env, jListener);
+    JniOnDeleteListener *onDeleteListener = addOnDeleteListener(env, jListener);
 
-    DeleteCallback deleteCallback = std::bind([](
-        const HeaderOptions& opts,
-        const int eCode,
-        std::weak_ptr<JniOnDeleteListener> weak_ref)
+    DeleteCallback deleteCallback = [onDeleteListener](const HeaderOptions& opts,
+        const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onDeleteCallback(opts, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, onDeleteListener);
+        onDeleteListener->onDeleteCallback(opts, eCode);
+    };
 
     return m_sharedResource->deleteResource(deleteCallback);
 }
 
 OCStackResult JniOcResource::deleteResource(JNIEnv* env, jobject jListener, QualityOfService QoS)
 {
-    JniOnDeleteListener::Ptr onDeleteListener = addOnDeleteListener(env, jListener);
+    JniOnDeleteListener *onDeleteListener = addOnDeleteListener(env, jListener);
 
-    DeleteCallback deleteCallback = std::bind([](
-        const HeaderOptions& opts,
-        const int eCode,
-        std::weak_ptr<JniOnDeleteListener> weak_ref)
+    DeleteCallback deleteCallback = [onDeleteListener](const HeaderOptions& opts, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onDeleteCallback(opts, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, onDeleteListener);
+        onDeleteListener->onDeleteCallback(opts, eCode);
+    };
 
     return m_sharedResource->deleteResource(deleteCallback, QoS);
 }
@@ -363,22 +270,13 @@ OCStackResult JniOcResource::deleteResource(JNIEnv* env, jobject jListener, Qual
 OCStackResult JniOcResource::observe(JNIEnv* env, ObserveType observeType,
     const QueryParamsMap &queryParametersMap, jobject jListener)
 {
-    JniOnObserveListener::Ptr onObserveListener = addOnObserveListener(env, jListener);
+    JniOnObserveListener *onObserveListener = addOnObserveListener(env, jListener);
 
-    ObserveCallback observeCallback = std::bind([](
-        const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int& eCode,
-        const int& sequenceNumber,
-        std::weak_ptr<JniOnObserveListener> weak_ref)
+    ObserveCallback observeCallback = [onObserveListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int& eCode, const int& sequenceNumber)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onObserveCallback(opts, rep, eCode, sequenceNumber);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3,
-          std::placeholders::_4, onObserveListener);
+        onObserveListener->onObserveCallback(opts, rep, eCode, sequenceNumber);
+    };
 
     return m_sharedResource->observe(observeType, queryParametersMap, observeCallback);
 }
@@ -386,22 +284,13 @@ OCStackResult JniOcResource::observe(JNIEnv* env, ObserveType observeType,
 OCStackResult JniOcResource::observe(JNIEnv* env, ObserveType observeType,
     const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
 {
-    JniOnObserveListener::Ptr onObserveListener = addOnObserveListener(env, jListener);
+    JniOnObserveListener *onObserveListener = addOnObserveListener(env, jListener);
 
-    ObserveCallback observeCallback = std::bind([](
-        const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int& eCode,
-        const int& sequenceNumber,
-        std::weak_ptr<JniOnObserveListener> weak_ref)
+    ObserveCallback observeCallback = [onObserveListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int& eCode, const int& sequenceNumber)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onObserveCallback(opts, rep, eCode, sequenceNumber);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3,
-          std::placeholders::_4, onObserveListener);
+        onObserveListener->onObserveCallback(opts, rep, eCode, sequenceNumber);
+    };
 
     return m_sharedResource->observe(observeType, queryParametersMap, observeCallback, QoS);
 }
@@ -472,27 +361,27 @@ std::string JniOcResource::deviceName() const
     return m_sharedResource->deviceName();
 }
 
-JniOnGetListener::Ptr JniOcResource::addOnGetListener(JNIEnv* env, jobject jListener)
+JniOnGetListener* JniOcResource::addOnGetListener(JNIEnv* env, jobject jListener)
 {
     return this->m_onGetManager.addListener(env, jListener, this);
 }
 
-JniOnPutListener::Ptr JniOcResource::addOnPutListener(JNIEnv* env, jobject jListener)
+JniOnPutListener* JniOcResource::addOnPutListener(JNIEnv* env, jobject jListener)
 {
     return this->m_onPutManager.addListener(env, jListener, this);
 }
 
-JniOnPostListener::Ptr JniOcResource::addOnPostListener(JNIEnv* env, jobject jListener)
+JniOnPostListener* JniOcResource::addOnPostListener(JNIEnv* env, jobject jListener)
 {
     return this->m_onPostManager.addListener(env, jListener, this);
 }
 
-JniOnDeleteListener::Ptr JniOcResource::addOnDeleteListener(JNIEnv* env, jobject jListener)
+JniOnDeleteListener* JniOcResource::addOnDeleteListener(JNIEnv* env, jobject jListener)
 {
     return this->m_onDeleteManager.addListener(env, jListener, this);
 }
 
-JniOnObserveListener::Ptr JniOcResource::addOnObserveListener(JNIEnv* env, jobject jListener)
+JniOnObserveListener* JniOcResource::addOnObserveListener(JNIEnv* env, jobject jListener)
 {
     return this->m_onObserveManager.addListener(env, jListener, this);
 }
@@ -523,7 +412,7 @@ void JniOcResource::removeOnObserveListener(JNIEnv* env, jobject jListener)
 }
 
 #ifdef WITH_MQ
-std::shared_ptr<JniOnMQTopicFoundListener> JniOcResource::addOnTopicFoundListener(JNIEnv* env, jobject jListener)
+JniOnMQTopicFoundListener* JniOcResource::addOnTopicFoundListener(JNIEnv* env, jobject jListener)
 {
     return this->m_onFoundTopicResourceManager.addListener(env, jListener, this);
 }
@@ -533,7 +422,7 @@ void JniOcResource::removeOnTopicFoundListener(JNIEnv* env, jobject jListener)
     this->m_onFoundTopicResourceManager.removeListener(env, jListener);
 }
 
-std::shared_ptr<JniOnMQSubscribeListener> JniOcResource::addOnMQTopicSubscribeListener(JNIEnv* env, jobject jListener)
+JniOnMQSubscribeListener* JniOcResource::addOnMQTopicSubscribeListener(JNIEnv* env, jobject jListener)
 {
     return this->m_onSubcribeTopicManager.addListener(env, jListener, this);
 }
@@ -567,19 +456,13 @@ JniOcResource* JniOcResource::getJniOcResourcePtr(JNIEnv *env, jobject thiz)
 OCStackResult JniOcResource::discoveryMQTopics(JNIEnv* env,
     const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
 {
-    std::shared_ptr<JniOnMQTopicFoundListener> onTopicFoundListener = addOnTopicFoundListener(env, jListener);
+    JniOnMQTopicFoundListener *onTopicFoundListener = addOnTopicFoundListener(env, jListener);
 
-    MQTopicCallback findCallback = std::bind([](const int& eCode,
-        const std::string& uri,
-        std::shared_ptr<OCResource> resource
-        std::weak_ptr<JniOnMQTopicFoundListener> weak_ref)
+    MQTopicCallback findCallback = [onTopicFoundListener](const int& eCode,
+            const std::string& uri, std::shared_ptr<OCResource> resource)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->foundTopicCallback(eCode, uri, resource);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onTopicFoundListener);
+        onTopicFoundListener->foundTopicCallback(eCode, uri, resource);
+    };
 
     return m_sharedResource->discoveryMQTopics(queryParametersMap, findCallback, QoS);
 }
@@ -588,19 +471,13 @@ OCStackResult JniOcResource::createMQTopic(JNIEnv* env,
     const OCRepresentation &representation, const std::string &targetUri,
     const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
 {
-    std::shared_ptr<JniOnMQTopicFoundListener> onTopicCreatedListener = addOnTopicFoundListener(env, jListener);
+    JniOnMQTopicFoundListener *onTopicCreatedListener = addOnTopicFoundListener(env, jListener);
 
-    MQTopicCallback createCallback = std::bind([](const int& eCode,
-        const std::string& uri,
-        std::shared_ptr<OCResource> resource,
-        std::weak_ptr<JniOnMQTopicFoundListener> weak_ref)
+    MQTopicCallback createCallback = [onTopicCreatedListener](const int& eCode,
+            const std::string& uri, std::shared_ptr<OCResource> resource)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->createdTopicCallback(eCode, uri, resource);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onTopicCreatedListener);
+        onTopicCreatedListener->createdTopicCallback(eCode, uri, resource);
+    };
 
     return m_sharedResource->createMQTopic(representation, targetUri,
                                            queryParametersMap,
@@ -611,21 +488,13 @@ OCStackResult JniOcResource::createMQTopic(JNIEnv* env,
 OCStackResult JniOcResource::subscribeMQTopic(JNIEnv* env,
     const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
 {
-    std::shared_ptr<JniOnMQSubscribeListener> onSubscribeListener = addOnMQTopicSubscribeListener(env, jListener);
+    JniOnMQSubscribeListener *onSubscribeListener = addOnMQTopicSubscribeListener(env, jListener);
 
-    ObserveCallback subscribeCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int& eCode,
-        const int& sequenceNumber,
-        std::weak_ptr<JniOnMQSubscribeListener> weak_ref)
+    ObserveCallback subscribeCallback = [onSubscribeListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int& eCode, const int& sequenceNumber)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onSubscribeCallback(opts, rep, eCode, sequenceNumber);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3,
-          std::placeholders::_4, onSubscribeListener);
+        onSubscribeListener->onSubscribeCallback(opts, rep, eCode, sequenceNumber);
+    };
 
     return m_sharedResource->subscribeMQTopic(ObserveType::Observe, queryParametersMap,
                                               subscribeCallback, QoS);
@@ -639,19 +508,13 @@ OCStackResult JniOcResource::unsubscribeMQTopic(QualityOfService QoS)
 OCStackResult JniOcResource::requestMQPublish(JNIEnv* env,
     const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
 {
-    JniOnPostListener::Ptr onPostListener = addOnPostListener(env, jListener);
+    JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
 
-    PostCallback postCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPostListener> weak_ref)
+    PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            listener->onPostCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPostListener);
+        onPostListener->onPostCallback(opts, rep, eCode);
+    };
 
     return m_sharedResource->requestMQPublish(queryParametersMap, postCallback, QoS);
 }
@@ -660,19 +523,13 @@ OCStackResult JniOcResource::requestMQPublish(JNIEnv* env,
 OCStackResult JniOcResource::publishMQTopic(JNIEnv* env, const OCRepresentation &representation,
     const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
 {
-    JniOnPostListener::Ptr onPostListener = addOnPostListener(env, jListener);
+    JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
 
-    PostCallback postCallback = std::bind([](const HeaderOptions& opts,
-        const OCRepresentation& rep,
-        const int eCode,
-        std::weak_ptr<JniOnPostListener> weak_ref)
+    PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
+        const OCRepresentation& rep, const int eCode)
     {
-        auto listener = weak_ref.lock();
-        if (listener)
-        {
-            onPostListener->onPostCallback(opts, rep, eCode);
-        }
-    }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, onPostListener);
+        onPostListener->onPostCallback(opts, rep, eCode);
+    };
 
     return m_sharedResource->publishMQTopic(representation, queryParametersMap,
                                             postCallback, QoS);
index c9a69f0..e05da82 100644 (file)
@@ -94,11 +94,11 @@ public:
     std::string sid() const;
     std::string deviceName() const;
 
-    JniOnGetListener::Ptr addOnGetListener(JNIEnv* env, jobject jListener);
-    JniOnPutListener::Ptr addOnPutListener(JNIEnv* env, jobject jListener);
-    JniOnPostListener::Ptr addOnPostListener(JNIEnv* env, jobject jListener);
-    JniOnDeleteListener::Ptr addOnDeleteListener(JNIEnv* env, jobject jListener);
-    JniOnObserveListener::Ptr addOnObserveListener(JNIEnv* env, jobject jListener);
+    JniOnGetListener* addOnGetListener(JNIEnv* env, jobject jListener);
+    JniOnPutListener* addOnPutListener(JNIEnv* env, jobject jListener);
+    JniOnPostListener* addOnPostListener(JNIEnv* env, jobject jListener);
+    JniOnDeleteListener* addOnDeleteListener(JNIEnv* env, jobject jListener);
+    JniOnObserveListener* addOnObserveListener(JNIEnv* env, jobject jListener);
 
     void removeOnGetListener(JNIEnv* env, jobject jListener);
     void removeOnPutListener(JNIEnv* env, jobject jListener);
@@ -111,10 +111,10 @@ public:
     static JniOcResource* getJniOcResourcePtr(JNIEnv *env, jobject thiz);
 
 #ifdef WITH_MQ
-    std::shared_ptr<JniOnMQTopicFoundListener> addOnTopicFoundListener(JNIEnv* env, jobject jListener);
+    JniOnMQTopicFoundListener* addOnTopicFoundListener(JNIEnv* env, jobject jListener);
     void removeOnTopicFoundListener(JNIEnv* env, jobject jListener);
 
-    std::shared_ptr<JniOnMQSubscribeListener> addOnMQTopicSubscribeListener(JNIEnv* env, jobject jListener);
+    JniOnMQSubscribeListener* addOnMQTopicSubscribeListener(JNIEnv* env, jobject jListener);
     void removeOnMQTopicSubscribeListener(JNIEnv* env, jobject jListener);
 
     OCStackResult discoveryMQTopics(JNIEnv* env, const QueryParamsMap &queryParametersMap,
index 753bce1..9354232 100644 (file)
@@ -34,8 +34,6 @@ class JniOcAccountManager;
 class JniOnDeleteListener
 {
 public:
-    typedef std::shared_ptr<JniOnDeleteListener> Ptr;
-
     JniOnDeleteListener(JNIEnv *env, jobject jListener, JniOcResource* owner);
 #ifdef WITH_CLOUD
     JniOnDeleteListener(JNIEnv *env, jobject jListener, JniOcAccountManager* owner);
index 683a33b..abffaa0 100644 (file)
@@ -34,8 +34,6 @@ class JniOcAccountManager;
 class JniOnGetListener
 {
 public:
-    typedef std::shared_ptr<JniOnGetListener> Ptr;
-
     JniOnGetListener(JNIEnv *env, jobject listener, JniOcResource* resource);
 #ifdef WITH_CLOUD
     JniOnGetListener(JNIEnv *env, jobject listener, JniOcAccountManager* resource);
index 0a51e8c..3fc478d 100644 (file)
@@ -34,8 +34,6 @@ class JniOcAccountManager;
 class JniOnObserveListener
 {
 public:
-    typedef std::shared_ptr<JniOnObserveListener> Ptr;
-
     JniOnObserveListener(JNIEnv *env, jobject jListener, JniOcResource* owner);
 #ifdef WITH_CLOUD
     JniOnObserveListener(JNIEnv *env, jobject jListener, JniOcAccountManager* owner);
index 12075f5..bf3387c 100644 (file)
@@ -34,8 +34,6 @@ class JniOcAccountManager;
 class JniOnPostListener
 {
 public:
-    typedef std::shared_ptr<JniOnPostListener> Ptr;
-
     JniOnPostListener(JNIEnv *env, jobject jListener, JniOcResource* owner);
 #ifdef WITH_CLOUD
     JniOnPostListener(JNIEnv *env, jobject jListener, JniOcAccountManager* owner);
index bfee5db..80057e1 100644 (file)
@@ -31,8 +31,6 @@ class JniOcResource;
 class JniOnPutListener
 {
 public:
-    typedef std::shared_ptr<JniOnPutListener> Ptr;
-
     JniOnPutListener(JNIEnv *env, jobject jListener, JniOcResource* resource);
     ~JniOnPutListener();