[MessagingEmail] Remove all send requests when PostQueue is destroyed.
authorPawel Andruszkiewicz <p.andruszkie@samsung.com>
Thu, 28 May 2015 12:38:09 +0000 (14:38 +0200)
committerPawel Andruszkiewicz <p.andruszkie@samsung.com>
Fri, 29 May 2015 08:18:10 +0000 (17:18 +0900)
[Verification] TCT: 309/307/1/1/0 (99.35%) - email-service fixed.

Change-Id: I539898ec97503b4208a4784cfb44c3bb26152823
Signed-off-by: Pawel Andruszkiewicz <p.andruszkie@samsung.com>
src/messaging/email_manager.cc
src/messaging/email_manager.h
src/messaging/messaging_util.cc

index 8bbb8ee10f14205664d8be749f1410d116a30b0c..edc8bd4588446d7312708a477d1fbf7f861f74ce 100644 (file)
@@ -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");
index e17149fa91805a621f7be2ec9308a703b03c42b6..f38d5be3f56901f7a41c52dec578bcb44cc321a2 100644 (file)
@@ -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);
 
index 84c221d83787589c56589d43c49298cca0cdf91d..e4b2ddcb42a1039619ec8a6dc393d5f6dd74266b 100644 (file)
@@ -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;