From e03b59a89b4477f7239a5a49764e4d5ea1ad0ea2 Mon Sep 17 00:00:00 2001 From: Harish Kumara M Date: Tue, 4 Dec 2018 19:38:35 +0530 Subject: [PATCH] Revert "[CONPRO-1333] Fix for crash in virtual device" 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 --- android/android_api/base/jni/JniListenerManager.h | 25 +- .../android_api/base/jni/JniOcAccountManager.cpp | 346 ++++++------------- android/android_api/base/jni/JniOcAccountManager.h | 8 +- android/android_api/base/jni/JniOcResource.cpp | 381 +++++++-------------- android/android_api/base/jni/JniOcResource.h | 14 +- android/android_api/base/jni/JniOnDeleteListener.h | 2 - android/android_api/base/jni/JniOnGetListener.h | 2 - .../android_api/base/jni/JniOnObserveListener.h | 2 - android/android_api/base/jni/JniOnPostListener.h | 2 - android/android_api/base/jni/JniOnPutListener.h | 2 - 10 files changed, 248 insertions(+), 536 deletions(-) diff --git a/android/android_api/base/jni/JniListenerManager.h b/android/android_api/base/jni/JniListenerManager.h index 5b1a2f6..8965e85 100644 --- a/android/android_api/base/jni/JniListenerManager.h +++ b/android/android_api/base/jni/JniListenerManager.h @@ -35,9 +35,9 @@ template class JniListenerManager { public: - std::shared_ptr addListener(JNIEnv* env, jobject jListener, JniOcResource* owner) + T* addListener(JNIEnv* env, jobject jListener, JniOcResource* owner) { - std::shared_ptr onEventListener = nullptr; + T *onEventListener = nullptr; m_mapMutex.lock(); @@ -57,19 +57,19 @@ public: if (!onEventListener) { - onEventListener = std::make_shared(env, jListener, owner); + onEventListener = new T(env, jListener, owner); jobject jgListener = env->NewGlobalRef(jListener); if (jgListener) { m_listenerMap.insert( std::pair, int>>(jgListener, - std::pair, int>(onEventListener, 1))); + std::pair>(jgListener, std::pair(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 addListener(JNIEnv* env, jobject jListener, JniOcAccountManager* owner) + T* addListener(JNIEnv* env, jobject jListener, JniOcAccountManager* owner) { - std::shared_ptr onEventListener = nullptr; + T *onEventListener = nullptr; m_mapMutex.lock(); @@ -103,19 +103,19 @@ public: if (!onEventListener) { - onEventListener = std::make_shared(env, jListener, owner); + onEventListener = new T(env, jListener, owner); jobject jgListener = env->NewGlobalRef(jListener); if (jgListener) { m_listenerMap.insert( std::pair, int>>(jgListener, - std::pair, int>(onEventListener, 1))); + std::pair>(jgListener, std::pair(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, int>> m_listenerMap; + std::map> m_listenerMap; std::mutex m_mapMutex; }; diff --git a/android/android_api/base/jni/JniOcAccountManager.cpp b/android/android_api/base/jni/JniOcAccountManager.cpp index a47278f..2d7e861 100644 --- a/android/android_api/base/jni/JniOcAccountManager.cpp +++ b/android/android_api/base/jni/JniOcAccountManager.cpp @@ -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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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); } diff --git a/android/android_api/base/jni/JniOcAccountManager.h b/android/android_api/base/jni/JniOcAccountManager.h index 34767dc..9eb3fee 100644 --- a/android/android_api/base/jni/JniOcAccountManager.h +++ b/android/android_api/base/jni/JniOcAccountManager.h @@ -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); diff --git a/android/android_api/base/jni/JniOcResource.cpp b/android/android_api/base/jni/JniOcResource.cpp index 73fdf1d..9d30ba2 100644 --- a/android/android_api/base/jni/JniOcResource.cpp +++ b/android/android_api/base/jni/JniOcResource.cpp @@ -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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 onTopicFoundListener = addOnTopicFoundListener(env, jListener); + JniOnMQTopicFoundListener *onTopicFoundListener = addOnTopicFoundListener(env, jListener); - MQTopicCallback findCallback = std::bind([](const int& eCode, - const std::string& uri, - std::shared_ptr resource - std::weak_ptr weak_ref) + MQTopicCallback findCallback = [onTopicFoundListener](const int& eCode, + const std::string& uri, std::shared_ptr 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 onTopicCreatedListener = addOnTopicFoundListener(env, jListener); + JniOnMQTopicFoundListener *onTopicCreatedListener = addOnTopicFoundListener(env, jListener); - MQTopicCallback createCallback = std::bind([](const int& eCode, - const std::string& uri, - std::shared_ptr resource, - std::weak_ptr weak_ref) + MQTopicCallback createCallback = [onTopicCreatedListener](const int& eCode, + const std::string& uri, std::shared_ptr 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 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 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 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 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); diff --git a/android/android_api/base/jni/JniOcResource.h b/android/android_api/base/jni/JniOcResource.h index c9a69f0..e05da82 100644 --- a/android/android_api/base/jni/JniOcResource.h +++ b/android/android_api/base/jni/JniOcResource.h @@ -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 addOnTopicFoundListener(JNIEnv* env, jobject jListener); + JniOnMQTopicFoundListener* addOnTopicFoundListener(JNIEnv* env, jobject jListener); void removeOnTopicFoundListener(JNIEnv* env, jobject jListener); - std::shared_ptr addOnMQTopicSubscribeListener(JNIEnv* env, jobject jListener); + JniOnMQSubscribeListener* addOnMQTopicSubscribeListener(JNIEnv* env, jobject jListener); void removeOnMQTopicSubscribeListener(JNIEnv* env, jobject jListener); OCStackResult discoveryMQTopics(JNIEnv* env, const QueryParamsMap &queryParametersMap, diff --git a/android/android_api/base/jni/JniOnDeleteListener.h b/android/android_api/base/jni/JniOnDeleteListener.h index 753bce1..9354232 100644 --- a/android/android_api/base/jni/JniOnDeleteListener.h +++ b/android/android_api/base/jni/JniOnDeleteListener.h @@ -34,8 +34,6 @@ class JniOcAccountManager; class JniOnDeleteListener { public: - typedef std::shared_ptr Ptr; - JniOnDeleteListener(JNIEnv *env, jobject jListener, JniOcResource* owner); #ifdef WITH_CLOUD JniOnDeleteListener(JNIEnv *env, jobject jListener, JniOcAccountManager* owner); diff --git a/android/android_api/base/jni/JniOnGetListener.h b/android/android_api/base/jni/JniOnGetListener.h index 683a33b..abffaa0 100644 --- a/android/android_api/base/jni/JniOnGetListener.h +++ b/android/android_api/base/jni/JniOnGetListener.h @@ -34,8 +34,6 @@ class JniOcAccountManager; class JniOnGetListener { public: - typedef std::shared_ptr Ptr; - JniOnGetListener(JNIEnv *env, jobject listener, JniOcResource* resource); #ifdef WITH_CLOUD JniOnGetListener(JNIEnv *env, jobject listener, JniOcAccountManager* resource); diff --git a/android/android_api/base/jni/JniOnObserveListener.h b/android/android_api/base/jni/JniOnObserveListener.h index 0a51e8c..3fc478d 100644 --- a/android/android_api/base/jni/JniOnObserveListener.h +++ b/android/android_api/base/jni/JniOnObserveListener.h @@ -34,8 +34,6 @@ class JniOcAccountManager; class JniOnObserveListener { public: - typedef std::shared_ptr Ptr; - JniOnObserveListener(JNIEnv *env, jobject jListener, JniOcResource* owner); #ifdef WITH_CLOUD JniOnObserveListener(JNIEnv *env, jobject jListener, JniOcAccountManager* owner); diff --git a/android/android_api/base/jni/JniOnPostListener.h b/android/android_api/base/jni/JniOnPostListener.h index 12075f5..bf3387c 100644 --- a/android/android_api/base/jni/JniOnPostListener.h +++ b/android/android_api/base/jni/JniOnPostListener.h @@ -34,8 +34,6 @@ class JniOcAccountManager; class JniOnPostListener { public: - typedef std::shared_ptr Ptr; - JniOnPostListener(JNIEnv *env, jobject jListener, JniOcResource* owner); #ifdef WITH_CLOUD JniOnPostListener(JNIEnv *env, jobject jListener, JniOcAccountManager* owner); diff --git a/android/android_api/base/jni/JniOnPutListener.h b/android/android_api/base/jni/JniOnPutListener.h index bfee5db..80057e1 100644 --- a/android/android_api/base/jni/JniOnPutListener.h +++ b/android/android_api/base/jni/JniOnPutListener.h @@ -31,8 +31,6 @@ class JniOcResource; class JniOnPutListener { public: - typedef std::shared_ptr Ptr; - JniOnPutListener(JNIEnv *env, jobject jListener, JniOcResource* resource); ~JniOnPutListener(); -- 2.7.4