From: Pawel Andruszkiewicz
Date: Thu, 28 May 2015 12:38:09 +0000 (+0200)
Subject: [MessagingEmail] Remove all send requests when PostQueue is destroyed.
X-Git-Tag: submit/tizen_mobile/20150612.133019^2~2^2~76
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9f06122f2353d16e45c107a8764c2addca33de0c;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git
[MessagingEmail] Remove all send requests when PostQueue is destroyed.
[Verification] TCT: 309/307/1/1/0 (99.35%) - email-service fixed.
Change-Id: I539898ec97503b4208a4784cfb44c3bb26152823
Signed-off-by: Pawel Andruszkiewicz
---
diff --git a/src/messaging/email_manager.cc b/src/messaging/email_manager.cc
index 8bbb8ee1..edc8bd45 100644
--- a/src/messaging/email_manager.cc
+++ b/src/messaging/email_manager.cc
@@ -854,6 +854,19 @@ void EmailManager::RemoveSyncCallback(long op_id) {
m_proxy_sync->removeCallback(op_id);
}
+void EmailManager::RemoveCallbacksByQueue(const PostQueue& q) {
+ LoggerD("Entered");
+
+ for (auto it = m_sendRequests.begin(); it != m_sendRequests.end();) {
+ if (&it->second->getQueue() == &q) {
+ delete it->second;
+ m_sendRequests.erase(it++);
+ } else {
+ ++it;
+ }
+ }
+}
+
void removeEmailCompleteCB(MessagesCallbackUserData* callback)
{
LoggerD("Entered");
diff --git a/src/messaging/email_manager.h b/src/messaging/email_manager.h
index e17149fa..f38d5be3 100644
--- a/src/messaging/email_manager.h
+++ b/src/messaging/email_manager.h
@@ -83,6 +83,7 @@ public:
void stopSync(long op_id);
void RemoveSyncCallback(long op_id);
+ void RemoveCallbacksByQueue(const PostQueue& q);
// void registerStatusCallback(msg_handle_t msg_handle);
diff --git a/src/messaging/messaging_util.cc b/src/messaging/messaging_util.cc
index 84c221d8..e4b2ddcb 100644
--- a/src/messaging/messaging_util.cc
+++ b/src/messaging/messaging_util.cc
@@ -15,6 +15,7 @@
#include "message_mms.h"
#include "message_conversation.h"
#include "messaging_instance.h"
+#include "messaging/email_manager.h"
#include "tizen/tizen.h"
#include "common/logger.h"
@@ -979,11 +980,13 @@ PlatformResult MessagingUtil::jsonToMessageConversation(const picojson::value& j
PostQueue::PostQueue(MessagingInstance& instance): instance_(instance)
{
- LoggerD("Entered");
+ LoggerD("Entered: [%p]", this);
}
PostQueue::~PostQueue()
{
- LoggerD("Entered");
+ LoggerD("Entered: [%p]", this);
+
+ EmailManager::getInstance().RemoveCallbacksByQueue(*this);
}
void PostQueue::addAndResolve(const long cid, PostPriority priority, const std::string json)
@@ -1014,7 +1017,7 @@ void PostQueue::add(const long cid, PostPriority priority)
void PostQueue::resolve(const long cid, const std::string json)
{
- LoggerD("Entered");
+ LoggerD("Entered: [%p]", this);
tasks_mutex_.lock();
@@ -1038,7 +1041,7 @@ void PostQueue::resolve(const long cid, const std::string json)
void PostQueue::resolve(PostPriority p)
{
- LoggerD("Entered");
+ LoggerD("Entered: [%p]", this);
TasksCollection::iterator i;