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;