[Messaging] Allow to create multiple instances of MessagingInstance class.
authorLukasz Bardeli <l.bardeli@samsung.com>
Tue, 14 Apr 2015 07:08:59 +0000 (09:08 +0200)
committerPawel Andruszkiewicz <p.andruszkie@samsung.com>
Tue, 14 Apr 2015 08:45:10 +0000 (17:45 +0900)
Change-Id: I64862e45301f295d45bebe81741dcd9efae2e1cf
Signed-off-by: Lukasz Bardeli <l.bardeli@samsung.com>
34 files changed:
src/messaging/DBus/LoadAttachmentProxy.cpp
src/messaging/DBus/LoadBodyProxy.cpp
src/messaging/DBus/SyncProxy.cpp
src/messaging/conversation_callback_data.cc
src/messaging/conversation_callback_data.h
src/messaging/conversations_change_callback.cc
src/messaging/conversations_change_callback.h
src/messaging/email_manager.cc
src/messaging/find_msg_callback_user_data.cc
src/messaging/find_msg_callback_user_data.h
src/messaging/folders_callback_data.cc
src/messaging/folders_callback_data.h
src/messaging/folders_change_callback.cc
src/messaging/folders_change_callback.h
src/messaging/message_callback_user_data.cc
src/messaging/message_callback_user_data.h
src/messaging/message_service.cc
src/messaging/message_service.h
src/messaging/message_service_email.cc
src/messaging/message_service_short_msg.cc
src/messaging/message_storage_email.cc
src/messaging/message_storage_short_msg.cc
src/messaging/messages_callback_user_data.cc
src/messaging/messages_callback_user_data.h
src/messaging/messages_change_callback.cc
src/messaging/messages_change_callback.h
src/messaging/messaging_extension.cc
src/messaging/messaging_instance.cc
src/messaging/messaging_instance.h
src/messaging/messaging_manager.cc
src/messaging/messaging_manager.h
src/messaging/messaging_util.cc
src/messaging/messaging_util.h
src/messaging/short_message_manager.cc

index 316247979528d6ffbd30c45565faeac0b8f3621c..df4105ba7b77f0bbc0fb399aa2825bcac49bdfd9 100644 (file)
@@ -215,7 +215,7 @@ void LoadAttachmentProxy::handleEmailSignal(const int status,
                     callback->getMessageAttachment());
             obj[JSON_DATA] = picojson::value(args);
 
-            PostQueue::getInstance().resolve(
+            callback->getQueue().resolve(
                     obj.at(JSON_CALLBACK_ID).get<double>(),
                     json->serialize()
             );
@@ -227,7 +227,7 @@ void LoadAttachmentProxy::handleEmailSignal(const int status,
     if (ret.IsError()) {
         LoggerE("Exception in signal callback");
         callback->setError(ret);
-        PostQueue::getInstance().resolve(
+        callback->getQueue().resolve(
                 callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
                 callback->getJson()->serialize()
         );
index 5c0d8cb982db1fc39a343157e2d48c49fda6efdf..e6dfeaaaae3d697784c6e81e0aad471cf8c9f9ee 100644 (file)
@@ -196,7 +196,7 @@ void LoadBodyProxy::handleEmailSignal(const int status,
                         callback->getMessage()->getBody());
                 obj[JSON_DATA] = picojson::value(args);
 
-                PostQueue::getInstance().resolve(
+                callback->getQueue().resolve(
                         obj.at(JSON_CALLBACK_ID).get<double>(),
                         json->serialize()
                 );
@@ -208,7 +208,7 @@ void LoadBodyProxy::handleEmailSignal(const int status,
 
         if (ret.IsError()) {
             callback->setError(ret);
-            PostQueue::getInstance().resolve(
+            callback->getQueue().resolve(
                     callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
                     callback->getJson()->serialize()
             );
index 63d989007b78da079b039bff27b4a30db826b88a..070e16f90f7a47b15e0df6e1ace71de9e2f708dd 100644 (file)
@@ -108,7 +108,7 @@ void SyncProxy::handleEmailSignal(const int status,
         return;
     }
 
-    common::CallbackUserData* callback = NULL;
+    SyncCallbackData* callback = NULL;
     CallbackMap::iterator callback_it;
 
     PlatformResult ret = findSyncCallbackByOpHandle(op_handle, &callback_it);
@@ -117,7 +117,7 @@ void SyncProxy::handleEmailSignal(const int status,
         return;
     }
 
-    callback = callback_it->second;
+    callback = dynamic_cast<SyncCallbackData*>(callback_it->second);
     if (!callback) {
         LoggerE("Callback is null");
         return;
@@ -129,7 +129,7 @@ void SyncProxy::handleEmailSignal(const int status,
         case NOTI_DOWNLOAD_FINISH:
             LoggerD("Sync finished!");
             obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
-            PostQueue::getInstance().resolve(
+            callback->getQueue().resolve(
                     obj.at(JSON_CALLBACK_ID).get<double>(),
                     response->serialize()
             );
@@ -140,7 +140,7 @@ void SyncProxy::handleEmailSignal(const int status,
             LoggerD("Sync failed!");
             common::UnknownException err("Sync failed!");
             callback->setError(err.name(), err.message());
-            PostQueue::getInstance().resolve(
+            callback->getQueue().resolve(
                     obj.at(JSON_CALLBACK_ID).get<double>(),
                     response->serialize()
             );
index e23eb66ec002016fff20930c0ff28e7ea66d2717..5e9ff716ff47dc6e74362c61f18919cd0b2b97cc 100644 (file)
@@ -8,25 +8,27 @@
 namespace extension {
 namespace messaging {
 
-ConversationCallbackData::ConversationCallbackData():
+ConversationCallbackData::ConversationCallbackData(PostQueue& queue):
         m_filter(),
         m_sort(),
         m_limit(0),
         m_offset(0),
         m_is_error(false),
         m_account_id(0),
-        m_service_type(UNDEFINED)
+        m_service_type(UNDEFINED),
+        queue_(queue)
 {
 }
 
-ConversationCallbackData::ConversationCallbackData(long cid, bool keep):
+ConversationCallbackData::ConversationCallbackData(long cid, PostQueue& queue, bool keep):
         m_filter(),
         m_sort(),
         m_limit(0),
         m_offset(0),
         m_is_error(false),
         m_account_id(0),
-        m_service_type(UNDEFINED)
+        m_service_type(UNDEFINED),
+        queue_(queue)
 {
     auto json = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
     picojson::object& o = json->get<picojson::object>();
index 235306dbb6f7de395eabdbebffc6f9b1b43a0a3d..e8d6964144f9693870ad269a76aad9510af3262c 100644 (file)
@@ -23,8 +23,8 @@ class MessageConversation;
 
 class ConversationCallbackData: public common::CallbackUserData {
 public:
-    ConversationCallbackData();
-    ConversationCallbackData(long cid, bool keep = false);
+    ConversationCallbackData(PostQueue& queue);
+    ConversationCallbackData(long cid, PostQueue& queue, bool keep = false);
     virtual ~ConversationCallbackData();
 
     void setFilter(AbstractFilterPtr filter);
@@ -52,6 +52,7 @@ public:
     long getLimit() const;
     long getOffset() const;
 
+    PostQueue& getQueue() { return queue_;};
 private:
     AbstractFilterPtr m_filter;
     SortModePtr m_sort;
@@ -63,6 +64,7 @@ private:
     std::vector<std::shared_ptr<MessageConversation>> m_conversations;
     int m_account_id;
     MessageType m_service_type;
+    PostQueue& queue_;
 };
 
 }//messaging
index 1d3048c5b5ffdcccac4da1f570236d72f619309b..a47a58da5898634c52aa06c5ace6fffd1154dbc1 100644 (file)
@@ -30,8 +30,9 @@ const char* CONVERSATIONSREMOVED = "conversationsremoved";
 ConversationsChangeCallback::ConversationsChangeCallback(
         long cid,
         int service_id,
-        MessageType service_type) :
-        m_callback_data(cid, true),
+        MessageType service_type,
+        PostQueue& queue) :
+        m_callback_data(cid, queue, true),
         m_id(service_id),
         m_msg_type(service_type),
         m_is_act(true)
@@ -99,7 +100,7 @@ void ConversationsChangeCallback::added(
     obj[JSON_ACTION] = picojson::value(CONVERSATIONSADDED);
     obj[JSON_DATA] = picojson::value(array);
 
-    PostQueue::getInstance().addAndResolve(obj.at(
+    m_callback_data.getQueue().addAndResolve(obj.at(
                 JSON_CALLBACK_ID).get<double>(), PostPriority::MEDIUM, json->serialize());
 }
 
@@ -127,7 +128,7 @@ void ConversationsChangeCallback::updated(
     obj[JSON_ACTION] = picojson::value(CONVERSATIONSUPDATED);
     obj[JSON_DATA] = picojson::value(array);
 
-    PostQueue::getInstance().addAndResolve(obj.at(
+    m_callback_data.getQueue().addAndResolve(obj.at(
                 JSON_CALLBACK_ID).get<double>(), PostPriority::LOW, json->serialize());
 }
 
@@ -155,7 +156,7 @@ void ConversationsChangeCallback::removed(
     obj[JSON_ACTION] = picojson::value(CONVERSATIONSREMOVED);
     obj[JSON_DATA] = picojson::value(array);
 
-    PostQueue::getInstance().addAndResolve(obj.at(
+    m_callback_data.getQueue().addAndResolve(obj.at(
                 JSON_CALLBACK_ID).get<double>(), PostPriority::LAST, json->serialize());
 }
 
index 2894e8f2021d48d32452803e5dcba30414381ed0..b13ca5e8f3abf4515c1287e16d01522a4cfd2b8c 100644 (file)
@@ -22,7 +22,8 @@ public:
     ConversationsChangeCallback(
             long cid,
             int service_id,
-            MessageType service_type);
+            MessageType service_type,
+            PostQueue& queue);
     virtual ~ConversationsChangeCallback();
 
     void added(const ConversationPtrVector& conversations);
index 62aef82f2e6b992d9ea4d2b9a8252b132696eb0b..7f43002102c75750ceb690ff0d0b5f3250132586 100644 (file)
@@ -312,7 +312,7 @@ static gboolean addDraftMessageCompleteCB(void *data)
     if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
         if (callback->isError()) {
             LoggerD("Calling error callback");
-            PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+            callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
                                              json->serialize()
             );
             callback->getMessage()->setMessageStatus(MessageStatus::STATUS_FAILED);
@@ -324,7 +324,7 @@ static gboolean addDraftMessageCompleteCB(void *data)
             args[JSON_DATA_MESSAGE] = MessagingUtil::messageToJson(callback->getMessage());
             obj[JSON_DATA] = picojson::value(args);
 
-            PostQueue::getInstance().resolve(
+            callback->getQueue().resolve(
                     obj.at(JSON_CALLBACK_ID).get<double>(),
                     json->serialize()
             );
@@ -381,7 +381,7 @@ static gboolean sendEmailCompleteCB(void* data)
     picojson::object& obj = json->get<picojson::object>();
     if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
         if (callback->isError()) {
-            PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+            callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
                                              json->serialize()
             );
             callback->getMessage()->setMessageStatus(MessageStatus::STATUS_FAILED);
@@ -408,7 +408,7 @@ static gboolean sendEmailCompleteCB(void* data)
             data[JSON_DATA_MESSAGE] = MessagingUtil::messageToJson(callback->getMessage());
             obj[JSON_DATA] = picojson::value(data);
 
-            PostQueue::getInstance().resolve(
+            callback->getQueue().resolve(
                     obj.at(JSON_CALLBACK_ID).get<double>(),
                     json->serialize()
             );
@@ -532,6 +532,7 @@ void EmailManager::sendStatusCallback(int mail_id,
                     LoggerE("Unknown error %d", error_code);
                     common::UnknownException ex("Failed to send message");
                     callback->setError(ex.name(),ex.message());
+                    break;
             }
         } else if (NOTI_SEND_FINISH == status) {
             LoggerD("Message sent successfully");
@@ -832,7 +833,7 @@ void EmailManager::stopSync(long op_id)
   if (response->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
     callback->setError(PlatformResult(ErrorCode::ABORT_ERR, "Sync aborted by user"));
 
-    PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+    callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
                                      response->serialize());
     m_proxy_sync->removeCallback(op_id);
   } else {
@@ -855,14 +856,14 @@ void removeEmailCompleteCB(MessagesCallbackUserData* callback)
   if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
     if (callback->isError()) {
       LoggerD("Calling error callback");
-      PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+      callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
                                        json->serialize()
       );
     } else {
       LoggerD("Calling success callback");
 
       obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
-      PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+      callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
                                        json->serialize()
       );
     }
@@ -1063,7 +1064,7 @@ void EmailManager::updateMessages(MessagesCallbackUserData* callback)
     if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
       if (callback->isError()) {
         LoggerD("Calling error callback");
-        PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+        callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
                                          json->serialize());
       } else {
         LoggerD("Calling success callback");
@@ -1076,7 +1077,7 @@ void EmailManager::updateMessages(MessagesCallbackUserData* callback)
         }
         obj[JSON_DATA] = picojson::value(array);
 
-        PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+        callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
                                          json->serialize()
         );
       }
@@ -1144,7 +1145,7 @@ void EmailManager::findMessages(FindMsgCallbackUserData* callback)
   if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
     if (callback->isError()) {
       LoggerD("Calling error callback");
-      PostQueue::getInstance().resolve( obj.at(JSON_CALLBACK_ID).get<double>(),
+      callback->getQueue().resolve( obj.at(JSON_CALLBACK_ID).get<double>(),
                                         json->serialize());
     } else {
       LoggerD("Calling success callback");
@@ -1156,7 +1157,7 @@ void EmailManager::findMessages(FindMsgCallbackUserData* callback)
       obj[JSON_DATA] = picojson::value(response);
       obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
 
-      PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+      callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
                                        json->serialize());
     }
   } else {
@@ -1216,7 +1217,7 @@ void EmailManager::findConversations(ConversationCallbackData* callback)
     if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
       if (callback->isError()) {
         LoggerD("Calling error callback");
-        PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+        callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
                                          json->serialize());
       } else {
         LoggerD("Calling success callback");
@@ -1231,7 +1232,7 @@ void EmailManager::findConversations(ConversationCallbackData* callback)
         obj[JSON_DATA] = picojson::value(response);
         obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
 
-        PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+        callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
                                          json->serialize()
         );
       }
@@ -1355,7 +1356,7 @@ void EmailManager::findFolders(FoldersCallbackData* callback)
     if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
       if (callback->isError()) {
         LoggerD("Calling error callback");
-        PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+        callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
                                          json->serialize());
       } else {
         LoggerD("Calling success callback");
@@ -1370,7 +1371,7 @@ void EmailManager::findFolders(FoldersCallbackData* callback)
         obj[JSON_DATA] = picojson::value(response);
         obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
 
-        PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+        callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
                                          json->serialize());
       }
     } else {
@@ -1445,13 +1446,13 @@ void EmailManager::removeConversations(ConversationCallbackData* callback)
     if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
       if (callback->isError()) {
         LoggerD("Calling error callback");
-        PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+        callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
                                          json->serialize());
       } else {
         LoggerD("Calling success callback");
         obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
 
-        PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+        callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
                                          json->serialize());
       }
     } else {
index b23f5bf27ecacf63c7010061594eab7969912d98..6aa8174b5cdbc6159c3dfec9c9a6e5e3684633df 100644 (file)
 namespace extension {
 namespace messaging {
 
-FindMsgCallbackUserData::FindMsgCallbackUserData():
+FindMsgCallbackUserData::FindMsgCallbackUserData(PostQueue& queue):
         CallbackUserData(),
         m_limit(0),
         m_offset(0),
         m_is_error(false),
         m_account_id(0),
-        m_service_type(UNDEFINED)
+        m_service_type(UNDEFINED),
+        queue_(queue)
 {
 }
 
index 262aaa576300f6509404ba7035a9b91fc9ee7572..58d80d1a48faebfc23960aaac67ac904a0240fb4 100644 (file)
@@ -40,7 +40,7 @@ class Message;
 
 class FindMsgCallbackUserData: public common::CallbackUserData {
 public:
-    FindMsgCallbackUserData();
+    FindMsgCallbackUserData(PostQueue& queue);
     virtual ~FindMsgCallbackUserData();
 
     void setFilter(AbstractFilterPtr filter);
@@ -67,6 +67,7 @@ public:
     long getLimit() const;
     long getOffset() const;
 
+    PostQueue& getQueue() { return queue_;};
 private:
     AbstractFilterPtr m_filter;
     SortModePtr m_sort;
@@ -78,6 +79,7 @@ private:
     std::vector<std::shared_ptr<Message>> m_messages;
     int m_account_id;
     MessageType m_service_type;
+    PostQueue& queue_;
 };
 
 }//Messaging
index fa787ef4576fa62e2029924f396c0df5e661dc81..e63557d08832f34c74165d0e20d142aa392ad665 100644 (file)
 //
 
 #include "folders_callback_data.h"
-#include "messaging_util.h"
 
 namespace extension {
 namespace messaging {
 
 
-FoldersCallbackData::FoldersCallbackData():
+FoldersCallbackData::FoldersCallbackData(PostQueue& queue):
         m_filter(),
-        m_is_error(false)
+        m_is_error(false),
+        queue_(queue)
 {
 }
 
-FoldersCallbackData::FoldersCallbackData(long cid, bool keep):
+FoldersCallbackData::FoldersCallbackData(long cid, PostQueue& queue, bool keep):
         m_filter(),
-        m_is_error(false)
+        m_is_error(false),
+        queue_(queue)
 {
     auto json = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
     picojson::object& o = json->get<picojson::object>();
index b453192b890f4b2ccb2cd546dc07469ef9bedaed..4a3ed8bbc4ccac313ca0f03d07c08fe42cb6aa78 100644 (file)
@@ -28,6 +28,7 @@
 #include "MsgCommon/AbstractFilter.h"
 
 #include "message_folder.h"
+#include "messaging_util.h"
 
 namespace extension {
 namespace messaging {
@@ -36,8 +37,8 @@ class MessageFolder;
 
 class FoldersCallbackData: public common::CallbackUserData {
 public:
-    FoldersCallbackData();
-    FoldersCallbackData(long cid, bool keep = false);
+    FoldersCallbackData(PostQueue& queue);
+    FoldersCallbackData(long cid, PostQueue& queue, bool keep = false);
     virtual ~FoldersCallbackData();
 
     void addFolder(std::shared_ptr<MessageFolder> folder);
@@ -53,12 +54,14 @@ public:
     std::string getErrorName() const;
     std::string getErrorMessage() const;
 
+    PostQueue& getQueue() { return queue_;};
 private:
     std::vector<std::shared_ptr<MessageFolder>> m_folders;
     tizen::AbstractFilterPtr m_filter;
     bool m_is_error;
     std::string m_err_name;
     std::string m_err_message;
+    PostQueue& queue_;
 
 };
 
index bc526c9e9af58150c361ddbe9375f56c1e588c03..2291665351f4ddb80789fab6278e1980b84d714a 100644 (file)
@@ -29,8 +29,9 @@ const char* FOLDERSREMOVED = "foldersremoved";
 FoldersChangeCallback::FoldersChangeCallback(
         long cid,
         int service_id,
-        MessageType service_type):
-    m_callback_data(cid, true),
+        MessageType service_type,
+        PostQueue& queue):
+    m_callback_data(cid, queue, true),
     m_id(service_id),
     m_msg_type(service_type),
     m_is_act(true)
@@ -95,7 +96,7 @@ void FoldersChangeCallback::added(const FolderPtrVector& folders)
     obj[JSON_DATA] = picojson::value(array);
 
     if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
-      PostQueue::getInstance().addAndResolve(obj.at(
+      m_callback_data.getQueue().addAndResolve(obj.at(
           JSON_CALLBACK_ID).get<double>(), PostPriority::MEDIUM, json->serialize());
     } else {
       LoggerE("Callback id is missing");
@@ -126,7 +127,7 @@ void FoldersChangeCallback::updated(const FolderPtrVector& folders)
     obj[JSON_DATA] = picojson::value(array);
 
     if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
-      PostQueue::getInstance().addAndResolve(obj.at(
+      m_callback_data.getQueue().addAndResolve(obj.at(
           JSON_CALLBACK_ID).get<double>(), PostPriority::LOW, json->serialize());
     } else {
       LoggerE("Callback id is missing");
@@ -157,7 +158,7 @@ void FoldersChangeCallback::removed(const FolderPtrVector& folders)
     obj[JSON_DATA] = picojson::value(array);
 
     if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
-      PostQueue::getInstance().addAndResolve(obj.at(
+      m_callback_data.getQueue().addAndResolve(obj.at(
           JSON_CALLBACK_ID).get<double>(), PostPriority::LAST, json->serialize());
     } else {
       LoggerE("Callback id is missing");
index f2eb4663f5459895c4f17b323197ee2ac53590e5..37d728466fc4863c340c83150dc2832f7e746670 100644 (file)
@@ -28,7 +28,8 @@ public:
     FoldersChangeCallback(
             long cid,
             int service_id,
-            MessageType service_type);
+            MessageType service_type,
+            PostQueue& queue);
     virtual ~FoldersChangeCallback();
 
     void added(const FolderPtrVector& folders);
index 4fab05546536d0d9f1e40660991fd6919ed1b6b9..7483214be35a63990739d756ea8f245dd5832652 100644 (file)
@@ -8,9 +8,10 @@
 namespace extension {
 namespace messaging {
 
-MessageCallbackUserData::MessageCallbackUserData():
+MessageCallbackUserData::MessageCallbackUserData(PostQueue& queue):
         common::CallbackUserData(),
-        m_is_error(false)
+        m_is_error(false),
+        queue_(queue)
 {
 }
 
index a3447098b0db181e190a15b8390a2c423767d671..3a7fa3bdf7e35e9f86b48370c5fc523ec825ad73 100644 (file)
@@ -15,10 +15,11 @@ namespace extension {
 namespace messaging {
 
 class Message;
+class PostQueue;
 
 class MessageCallbackUserData: public common::CallbackUserData {
 public:
-    MessageCallbackUserData();
+    MessageCallbackUserData(PostQueue& queue);
     virtual ~MessageCallbackUserData();
 
     void setMessage(std::shared_ptr<Message> message);
@@ -34,12 +35,16 @@ public:
     std::string getErrorName() const;
     std::string getErrorMessage() const;
 
+    PostQueue& getQueue() { return queue_;};
+
 private:
     bool m_is_error;
+    PostQueue& queue_;
     std::string m_err_name;
     std::string m_err_message;
     std::shared_ptr<Message> m_message;
     int m_account_id;
+
 };
 
 }//messaging
index 172111248737efa1a260d1eb14a9f9052b289460..7d6c041802d10d76a29254322adf38ed676ef0b7 100644 (file)
@@ -29,11 +29,12 @@ const char* JSON_SERVICE_STORAGE = "messageStorage";
 
 //#################### MessageRecipientsCallbackData ####################
 
-MessageRecipientsCallbackData::MessageRecipientsCallbackData():
+MessageRecipientsCallbackData::MessageRecipientsCallbackData(PostQueue& queue):
         m_is_error(false),
         m_account_id(-1),
         m_sim_index(TAPI_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN),
-        m_default_sim_index(TAPI_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN)
+        m_default_sim_index(TAPI_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN),
+        queue_(queue)
 {
     LoggerD("Entered");
     m_msg_recipients = std::vector<std::string>();
@@ -239,7 +240,8 @@ double BaseMessageServiceCallbackData::getCallbackId() const
 
 //#################### MessageBodyCallbackData ####################
 
-MessageBodyCallbackData::MessageBodyCallbackData()
+MessageBodyCallbackData::MessageBodyCallbackData(PostQueue& queue):
+    queue_(queue)
 {
     LoggerD("Entered");
 }
@@ -261,8 +263,9 @@ std::shared_ptr<Message> MessageBodyCallbackData::getMessage() const
 
 //#################### MessageAttachmentCallbackData ####################
 
-MessageAttachmentCallbackData::MessageAttachmentCallbackData():
-        m_nth(0)
+MessageAttachmentCallbackData::MessageAttachmentCallbackData(PostQueue& queue):
+        m_nth(0),
+        queue_(queue)
 {
     LoggerD("Entered");
 }
@@ -296,12 +299,13 @@ int MessageAttachmentCallbackData::getNth() const
 
 //#################### SyncCallbackData ####################
 
-SyncCallbackData::SyncCallbackData():
+SyncCallbackData::SyncCallbackData(PostQueue& queue):
 //        BaseMessageServiceCallbackData(globalCtx),
         m_is_limit(false),
         m_limit(0),
         m_op_id(-1),
-        m_account_id(-1)
+        m_account_id(-1),
+        queue_(queue)
 {
     LoggerD("Entered");
 }
@@ -349,7 +353,8 @@ int SyncCallbackData::getAccountId() const
 
 //#################### SyncFolderCallbackData ####################
 
-SyncFolderCallbackData::SyncFolderCallbackData()
+SyncFolderCallbackData::SyncFolderCallbackData(PostQueue& queue):
+    SyncCallbackData(queue)
 {
     LoggerD("Entered");
 }
index c0dfe36120fb39e4b9815483bdf09533ca4bdd75..0369c5493e74e0327831a3f8c54ca48afac8cace 100755 (executable)
@@ -30,7 +30,7 @@ enum MessageServiceAccountId
 
 class MessageRecipientsCallbackData : public common::CallbackUserData {
 public:
-    MessageRecipientsCallbackData();
+    MessageRecipientsCallbackData(PostQueue& queue);
     virtual ~MessageRecipientsCallbackData();
 
     void setMessage(std::shared_ptr<Message> message);
@@ -53,6 +53,8 @@ public:
     TelNetworkDefaultDataSubs_t getDefaultSimIndex() const;
     bool isSetSimIndex() const;
 
+    PostQueue& getQueue() { return queue_;};
+
 private:
     std::shared_ptr<Message> m_message;
     bool m_is_error;
@@ -60,6 +62,7 @@ private:
     int m_account_id;
     TelNetworkDefaultDataSubs_t m_sim_index;
     TelNetworkDefaultDataSubs_t m_default_sim_index;
+    PostQueue& queue_;
 };
 
 class BaseMessageServiceCallbackData : public common::CallbackUserData {
@@ -94,19 +97,21 @@ protected:
 
 class MessageBodyCallbackData : public BaseMessageServiceCallbackData {
 public:
-    MessageBodyCallbackData();
+    MessageBodyCallbackData(PostQueue& queue);
     virtual ~MessageBodyCallbackData();
 
     void setMessage(std::shared_ptr<Message> message);
     std::shared_ptr<Message> getMessage() const;
 
+    PostQueue& getQueue() { return queue_;};
 private:
     std::shared_ptr<Message> m_message;
+    PostQueue& queue_;
 };
 
 class MessageAttachmentCallbackData : public BaseMessageServiceCallbackData {
 public:
-    MessageAttachmentCallbackData();
+    MessageAttachmentCallbackData(PostQueue& queue);
     virtual ~MessageAttachmentCallbackData();
 
     void setMessageAttachment(std::shared_ptr<MessageAttachment> messageAttachment);
@@ -122,14 +127,16 @@ public:
     void setNth(const int nth);
     int getNth() const;
 
+    PostQueue& getQueue() { return queue_;};
 private:
     std::shared_ptr<MessageAttachment> m_message_attachment;
     int m_nth;
+    PostQueue& queue_;
 };
 
 class SyncCallbackData : public BaseMessageServiceCallbackData {
 public:
-    SyncCallbackData();
+    SyncCallbackData(PostQueue& queue);
     virtual ~SyncCallbackData();
 
     void setLimit(const unsigned long limit);
@@ -141,17 +148,19 @@ public:
     void setAccountId(int account_id);
     int getAccountId() const;
 
+    PostQueue& getQueue() { return queue_;};
 protected:
     bool m_is_limit;
     unsigned long m_limit;
 
     long m_op_id;
     int m_account_id;
+    PostQueue& queue_;
 };
 
 class SyncFolderCallbackData : public SyncCallbackData {
 public:
-    SyncFolderCallbackData();
+    SyncFolderCallbackData(PostQueue& queue);
     virtual ~SyncFolderCallbackData();
 
     void setMessageFolder(std::shared_ptr<MessageFolder> message_folder);
index 0ae93aa17b9df63faccf922d49a082b52dc19804..e04d36c7bf9d9254ead329fa47ec2f6fe4ee7798 100644 (file)
@@ -107,7 +107,7 @@ static gboolean loadMessageAttachmentTask(void* data)
         args[JSON_DATA_MESSAGE_ATTACHMENT] = MessagingUtil::messageAttachmentToJson(att);
         obj[JSON_DATA] = picojson::value(args);
 
-        PostQueue::getInstance().resolve(
+        callback->getQueue().resolve(
             obj.at(JSON_CALLBACK_ID).get<double>(),
             json->serialize()
         );
index d45e6690595694e72812578759aec1d2770fcf55..fe7806770499445cfeddf971cd051a92ad6bdcd8 100644 (file)
@@ -133,7 +133,7 @@ static gboolean loadMessageBodyTask(void* data)
       args[JSON_DATA_MESSAGE_BODY] = MessagingUtil::messageBodyToJson(body);
       obj[JSON_DATA] = picojson::value(args);
 
-      PostQueue::getInstance().resolve(
+      callback->getQueue().resolve(
           obj.at(JSON_CALLBACK_ID).get<double>(),
           json->serialize()
       );
index 3cc6e62c7adb7a6e845f1a460805bca97d489cf5..b6a732bc145fa66d0ffc61a762232c15e46b36a6 100644 (file)
@@ -47,7 +47,7 @@ static gboolean callError(void* data)
     auto json = callback->getJson();
     picojson::object& obj = json->get<picojson::object>();
     if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
-      PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+      callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
                                        json->serialize());
     } else {
       LoggerE("json is incorrect - missing required member");
index 1a5fdd57d8bde95495bd9769ae177c5678bc4c9f..002df5cad75964ddba57fff8bbf18d2d362c04fe 100644 (file)
@@ -210,7 +210,7 @@ static gboolean findFoldersCB(void* data)
       obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
 
 
-      PostQueue::getInstance().resolve(
+     callback->getQueue().resolve(
           obj.at(JSON_CALLBACK_ID).get<double>(),
           json->serialize()
       );
index 257bb54b38a8ab5a47d4e17ad3c8725467193793..cdce5dc0ad0b87a244771e62efd739d6442aae31 100644 (file)
@@ -7,17 +7,19 @@
 namespace extension {
 namespace messaging {
 
-MessagesCallbackUserData::MessagesCallbackUserData():
+MessagesCallbackUserData::MessagesCallbackUserData(PostQueue& queue):
         common::CallbackUserData(),
         m_is_error(false),
-        m_service_type(MessageType::UNDEFINED)
+        m_service_type(MessageType::UNDEFINED),
+        queue_(queue)
 {
 }
 
-MessagesCallbackUserData::MessagesCallbackUserData(long cid, bool keep):
+MessagesCallbackUserData::MessagesCallbackUserData(long cid, PostQueue& queue, bool keep):
         common::CallbackUserData(),
         m_is_error(false),
-        m_service_type(MessageType::UNDEFINED)
+        m_service_type(MessageType::UNDEFINED),
+        queue_(queue)
 {
     auto json = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
     picojson::object& o = json->get<picojson::object>();
index 7317c84cbf00f15ece9ae827b97186fcf7b8d6c7..3e598f32d5249eaef7953478be4d9c05033707bf 100644 (file)
@@ -20,8 +20,8 @@ class Message;
 
 class MessagesCallbackUserData: public common::CallbackUserData {
 public:
-    MessagesCallbackUserData();
-    MessagesCallbackUserData(long cid, bool keep = false);
+    MessagesCallbackUserData(PostQueue& queue);
+    MessagesCallbackUserData(long cid, PostQueue& queue, bool keep = false);
     virtual ~MessagesCallbackUserData();
 
     void addMessage(std::shared_ptr<Message> msg);
@@ -37,12 +37,15 @@ public:
     void setMessageServiceType(MessageType m_msg_type);
     MessageType getMessageServiceType() const;
 
+    PostQueue& getQueue() { return queue_;};
+
 private:
     std::vector<std::shared_ptr<Message>> m_messages;
     bool m_is_error;
     std::string m_err_name;
     std::string m_err_message;
     MessageType m_service_type;
+    PostQueue& queue_;
 };
 
 }//messaging
index 3806c3adf7c9d8f57b5df70119e5f339422e8bd7..161fc51fb2f09bb00833be3929d350b44e5af82d 100644 (file)
@@ -38,8 +38,9 @@ const char* MESSAGESREMOVED = "messagesremoved";
 MessagesChangeCallback::MessagesChangeCallback(
         long cid,
         int service_id,
-        MessageType service_type) :
-        m_callback_data(cid, true),
+        MessageType service_type,
+        PostQueue& queue) :
+        m_callback_data(cid, queue, true),
         m_service_id(service_id),
         m_msg_type(service_type),
         m_is_act(true)
@@ -127,7 +128,7 @@ void MessagesChangeCallback::added(const MessagePtrVector& msgs)
       obj[JSON_ACTION] = picojson::value(MESSAGESADDED);
       obj[JSON_DATA] = picojson::value(array);
 
-      PostQueue::getInstance().addAndResolve(obj.at(
+      m_callback_data.getQueue().addAndResolve(obj.at(
           JSON_CALLBACK_ID).get<double>(), PostPriority::MEDIUM, json->serialize());
     } else {
       LoggerE("json is incorrect - missing required member");
@@ -164,7 +165,7 @@ void MessagesChangeCallback::updated(const MessagePtrVector& msgs)
       obj[JSON_ACTION] = picojson::value(MESSAGESUPDATED);
       obj[JSON_DATA] = picojson::value(array);
 
-      PostQueue::getInstance().addAndResolve(obj.at(
+      m_callback_data.getQueue().addAndResolve(obj.at(
           JSON_CALLBACK_ID).get<double>(), PostPriority::LOW, json->serialize());
     } else {
       LoggerE("json is incorrect - missing required member");
@@ -203,7 +204,7 @@ void MessagesChangeCallback::removed(const MessagePtrVector& msgs)
       LoggerD("MESSAGES: %s", picojson::value(array).serialize().c_str());
       obj[JSON_DATA] = picojson::value(array);
 
-      PostQueue::getInstance().addAndResolve(obj.at(
+      m_callback_data.getQueue().addAndResolve(obj.at(
           JSON_CALLBACK_ID).get<double>(), PostPriority::LAST, json->serialize());
     } else {
       LoggerE("json is incorrect - missing required member");
index 5270823ae5cd33996676aab4c5b0c1fe362f7e62..8198bd2db2285b1c0de3ede44dd9df425cee3ee8 100644 (file)
@@ -27,7 +27,8 @@ public:
     MessagesChangeCallback(
             long cid,
             int service_id,
-            MessageType service_type);
+            MessageType service_type,
+            PostQueue& queue);
     virtual ~MessagesChangeCallback();
 
     void added(const MessagePtrVector& messages);
index cde1127d3a1548892f6e1aa87232ad35a753c929..33c3d90c61160d20ab12f32deb2db91871852334 100644 (file)
@@ -41,5 +41,5 @@ common::Instance* MessagingExtension::CreateInstance() {
       LoggerE("Initializing the email service failed (%s)", ret.message().c_str());
       return nullptr;
   }
-  return &extension::messaging::MessagingInstance::getInstance();
+  return new extension::messaging::MessagingInstance();
 }
index 76af3e6a26e85019baed67f95352319b668fe2e2..2030e356912e0242c932c916ad4c2a62e9f0bf76 100644 (file)
@@ -123,13 +123,9 @@ const std::string kPrivilegeMessagingWrite = "http://tizen.org/privilege/messagi
 
 }
 
-MessagingInstance& MessagingInstance::getInstance()
-{
-    static MessagingInstance instance;
-    return instance;
-}
-
-MessagingInstance::MessagingInstance()
+MessagingInstance::MessagingInstance():
+    manager_(*this),
+    queue_(*this)
 {
     LoggerD("Entered");
     using std::placeholders::_1;
@@ -173,7 +169,7 @@ MessagingInstance::~MessagingInstance()
     ReportError(ret, &args); \
     obj[JSON_DATA] = picojson::value(args); \
     obj[JSON_ACTION] = picojson::value(action); \
-    PostQueue::getInstance().addAndResolve( \
+    queue_.addAndResolve( \
             obj.at(JSON_CALLBACK_ID).get<double>(), \
             PostPriority::HIGH, \
             json->serialize() \
@@ -196,7 +192,7 @@ void MessagingInstance::GetMessageServices(const picojson::value& args,
       at(GET_MESSAGE_SERVICES_ARGS_MESSAGE_SERVICE_TYPE);
   const double callbackId = args.get(JSON_CALLBACK_ID).get<double>();
   // above values should be validated in js
-  MessagingManager::getInstance().getMessageServices(serviceTag.to_str(), callbackId);
+  manager_.getMessageServices(serviceTag.to_str(), callbackId);
 }
 
 void MessagingInstance::MessageServiceSendMessage(const picojson::value& args,
@@ -226,7 +222,7 @@ void MessagingInstance::MessageServiceSendMessage(const picojson::value& args,
       POST_AND_RETURN(ret, json, obj, JSON_CALLBACK_ERROR)
     }
 
-    MessageRecipientsCallbackData* callback = new MessageRecipientsCallbackData();
+    MessageRecipientsCallbackData* callback = new MessageRecipientsCallbackData(queue_);
     long simIndex = 0;
     int serviceId = 0;
 
@@ -244,8 +240,8 @@ void MessagingInstance::MessageServiceSendMessage(const picojson::value& args,
                       json, obj, JSON_CALLBACK_ERROR)
     }
 
-    PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
-    auto service = MessagingManager::getInstance().getMessageService(serviceId);
+    queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
+    auto service = manager_.getMessageService(serviceId);
 
     ret = service->sendMessage(callback);
     if (!ret) {
@@ -281,13 +277,13 @@ void MessagingInstance::MessageServiceLoadMessageBody(const picojson::value& arg
       POST_AND_RETURN(ret, json, obj, JSON_CALLBACK_ERROR)
     }
 
-    MessageBodyCallbackData* callback = new MessageBodyCallbackData();
+    MessageBodyCallbackData* callback = new MessageBodyCallbackData(queue_);
 
     callback->setJson(json);
     callback->setMessage(message);
 
-    PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
-    auto service = MessagingManager::getInstance().getMessageService(getServiceIdFromJSON(data));
+    queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
+    auto service = manager_.getMessageService(getServiceIdFromJSON(data));
     ret = service->loadMessageBody(callback);
     if (ret.IsError()) {
       POST_AND_RETURN(ret, json, obj, JSON_CALLBACK_ERROR)
@@ -311,7 +307,7 @@ void MessagingInstance::MessageServiceLoadMessageAttachment(const picojson::valu
     picojson::value attachment = data.at(LOAD_MESSAGE_ATTACHMENT_ARGS_ATTACHMENT);
     const double callbackId = args.get(JSON_CALLBACK_ID).get<double>();
 
-    MessageAttachmentCallbackData* callback = new MessageAttachmentCallbackData();
+    MessageAttachmentCallbackData* callback = new MessageAttachmentCallbackData(queue_);
     callback->setMessageAttachment(MessagingUtil::jsonToMessageAttachment(attachment));
 
     auto json = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
@@ -319,8 +315,8 @@ void MessagingInstance::MessageServiceLoadMessageAttachment(const picojson::valu
     obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
     callback->setJson(json);
 
-    PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
-    auto service = MessagingManager::getInstance().getMessageService(getServiceIdFromJSON(data));
+    queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
+    auto service = manager_.getMessageService(getServiceIdFromJSON(data));
     const auto result = service->loadMessageAttachment(callback);
     if (result.IsError()) {
       POST_AND_RETURN(result, json, obj, JSON_CALLBACK_ERROR)
@@ -362,15 +358,15 @@ void MessagingInstance::MessageServiceSync(const picojson::value& args,
     picojson::object& obj = json->get<picojson::object>();
     obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
 
-    SyncCallbackData *callback = new SyncCallbackData();
+    SyncCallbackData *callback = new SyncCallbackData(queue_);
     callback->setJson(json);
     callback->setAccountId(id);
     callback->setLimit(limit);
 
-    PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
+    queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
     long op_id = -1;
 
-    const auto result = MessagingManager::getInstance().getMessageService(id)->sync(callback, &op_id);
+    const auto result = manager_.getMessageService(id)->sync(callback, &op_id);
 
     if (result) {
       ReportSuccess(picojson::value(static_cast<double>(op_id)), out);
@@ -416,16 +412,16 @@ void MessagingInstance::MessageServiceSyncFolder(const picojson::value& args,
     picojson::object& obj = json->get<picojson::object>();
     obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
 
-    SyncFolderCallbackData *callback = new SyncFolderCallbackData();
+    SyncFolderCallbackData *callback = new SyncFolderCallbackData(queue_);
     callback->setJson(json);
     callback->setAccountId(id);
     callback->setMessageFolder(MessagingUtil::jsonToMessageFolder(v_folder));
     callback->setLimit(limit);
 
-    PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
+    queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
     long op_id = -1;
 
-    const auto result = MessagingManager::getInstance().getMessageService(id)->syncFolder(callback, &op_id);
+    const auto result = manager_.getMessageService(id)->syncFolder(callback, &op_id);
     if (result) {
         ReportSuccess(picojson::value(static_cast<double>(op_id)), out);
     } else {
@@ -464,7 +460,7 @@ void MessagingInstance::MessageServiceStopSync(const picojson::value& args,
             op_id = static_cast<long>(v_op_id.get<double>());
         }
 
-        const auto result = MessagingManager::getInstance().getMessageService(id)->stopSync(op_id);
+        const auto result = manager_.getMessageService(id)->stopSync(op_id);
 
         if (result) {
             ReportSuccess(out);
@@ -504,7 +500,7 @@ void MessagingInstance::MessageStorageAddDraft(const picojson::value& args,
       POST_AND_RETURN(ret, json, obj, JSON_CALLBACK_ERROR)
     }
 
-    MessageCallbackUserData* callback = new MessageCallbackUserData();
+    MessageCallbackUserData* callback = new MessageCallbackUserData(queue_);
     callback->setMessage(message);
 
     int serviceId = getServiceIdFromJSON(data);
@@ -512,8 +508,8 @@ void MessagingInstance::MessageStorageAddDraft(const picojson::value& args,
 
     callback->setJson(json);
 
-    PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
-    auto service = MessagingManager::getInstance().getMessageService(serviceId);
+    queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
+    auto service = manager_.getMessageService(serviceId);
     service->getMsgStorage()->addDraftMessage(callback);
 }
 
@@ -551,9 +547,9 @@ void MessagingInstance::MessageStorageFindMessages(const picojson::value& args,
             (MessagingUtil::getValueFromJSONObject<double>(data, FIND_FOLDERS_ARGS_OFFSET));
 
     int serviceId = getServiceIdFromJSON(data);
-    auto storage = MessagingManager::getInstance().getMessageService(serviceId)->getMsgStorage();
+    auto storage = manager_.getMessageService(serviceId)->getMsgStorage();
 
-    FindMsgCallbackUserData* callback = new FindMsgCallbackUserData();
+    FindMsgCallbackUserData* callback = new FindMsgCallbackUserData(queue_);
     callback->setFilter(filter);
     callback->setLimit(limit);
     callback->setOffset(offset);
@@ -561,7 +557,7 @@ void MessagingInstance::MessageStorageFindMessages(const picojson::value& args,
     callback->setSortMode(sortMode);
     callback->setJson(json);
 
-    PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
+    queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
     storage->findMessages(callback);
 }
 
@@ -582,7 +578,7 @@ void MessagingInstance::MessageStorageRemoveMessages(const picojson::value& args
     picojson::array messages = data.at(REMOVE_MESSAGES_ARGS_MESSAGES).get<picojson::array>();
     const double callbackId = args.get(JSON_CALLBACK_ID).get<double>();
 
-    MessagesCallbackUserData* callback = new MessagesCallbackUserData();
+    MessagesCallbackUserData* callback = new MessagesCallbackUserData(queue_);
 
     auto each = [callback] (picojson::value& v)->void {
       std::shared_ptr<Message> message;
@@ -599,9 +595,9 @@ void MessagingInstance::MessageStorageRemoveMessages(const picojson::value& args
     obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
     callback->setJson(json);
 
-    auto service = MessagingManager::getInstance().getMessageService(getServiceIdFromJSON(data));
+    auto service = manager_.getMessageService(getServiceIdFromJSON(data));
 
-    PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
+    queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
     service->getMsgStorage()->removeMessages(callback);
 }
 
@@ -623,7 +619,7 @@ void MessagingInstance::MessageStorageUpdateMessages(const picojson::value& args
     auto pico_array = pico_messages.get<picojson::array>();
     const double callbackId = args.get(JSON_CALLBACK_ID).get<double>();
 
-    auto callback = new MessagesCallbackUserData();
+    auto callback = new MessagesCallbackUserData(queue_);
 
     std::vector<std::shared_ptr<Message>> messages;
     std::for_each(pico_array.begin(), pico_array.end(), [&callback](picojson::value& v)->void {
@@ -639,9 +635,9 @@ void MessagingInstance::MessageStorageUpdateMessages(const picojson::value& args
     obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
     callback->setJson(json);
 
-    auto service = MessagingManager::getInstance().getMessageService(getServiceIdFromJSON(data));
+    auto service = manager_.getMessageService(getServiceIdFromJSON(data));
 
-    PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
+    queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
     service->getMsgStorage()->updateMessages(callback);
 }
 
@@ -678,7 +674,7 @@ void MessagingInstance::MessageStorageFindConversations(const picojson::value& a
 
     int serviceId = getServiceIdFromJSON(data);
 
-    ConversationCallbackData* callback = new ConversationCallbackData();
+    ConversationCallbackData* callback = new ConversationCallbackData(queue_);
     callback->setFilter(filter);
     callback->setLimit(limit);
     callback->setOffset(offset);
@@ -686,8 +682,8 @@ void MessagingInstance::MessageStorageFindConversations(const picojson::value& a
     callback->setSortMode(sortMode);
     callback->setJson(json);
 
-    PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
-    auto storage = MessagingManager::getInstance().getMessageService(serviceId)->getMsgStorage();
+    queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
+    auto storage = manager_.getMessageService(serviceId)->getMsgStorage();
     storage->findConversations(callback);
 }
 
@@ -712,7 +708,7 @@ void MessagingInstance::MessageStorageRemoveConversations(const picojson::value&
     picojson::object& obj = json->get<picojson::object>();
     obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
 
-    ConversationCallbackData* callback = new ConversationCallbackData();
+    ConversationCallbackData* callback = new ConversationCallbackData(queue_);
 
     PlatformResult ret(ErrorCode::NO_ERROR);
     for (auto it = conversations.begin(); it != conversations.end(); ++it) {
@@ -726,9 +722,9 @@ void MessagingInstance::MessageStorageRemoveConversations(const picojson::value&
 
     callback->setJson(json);
 
-    auto service = MessagingManager::getInstance().getMessageService(getServiceIdFromJSON(data));
+    auto service = manager_.getMessageService(getServiceIdFromJSON(data));
 
-    PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
+    queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
     service->getMsgStorage()->removeConversations(callback);
 }
 
@@ -758,12 +754,12 @@ void MessagingInstance::MessageStorageFindFolders(const picojson::value& args,
       POST_AND_RETURN(ret, json, obj, JSON_CALLBACK_ERROR)
     }
 
-    FoldersCallbackData* callback = new FoldersCallbackData();
+    FoldersCallbackData* callback = new FoldersCallbackData(queue_);
     callback->setFilter(filter);
     callback->setJson(json);
 
-    PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
-    auto service = MessagingManager::getInstance().getMessageService(getServiceIdFromJSON(data));
+    queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
+    auto service = manager_.getMessageService(getServiceIdFromJSON(data));
     service->getMsgStorage()->findFolders(callback);
 }
 
@@ -795,10 +791,10 @@ void MessagingInstance::MessageStorageAddMessagesChangeListener(const picojson::
 
     int serviceId = getServiceIdFromJSON(data);
 
-    auto service = MessagingManager::getInstance().getMessageService(serviceId);
+    auto service = manager_.getMessageService(serviceId);
 
     std::shared_ptr<MessagesChangeCallback> callback(new MessagesChangeCallback(
-        static_cast<long>(callbackId), serviceId, service->getMsgServiceType()));
+        static_cast<long>(callbackId), serviceId, service->getMsgServiceType(),queue_));
 
     callback->setFilter(filter);
 
@@ -836,10 +832,10 @@ void MessagingInstance::MessageStorageAddConversationsChangeListener(const picoj
 
     int serviceId = getServiceIdFromJSON(data);
 
-    auto service = MessagingManager::getInstance().getMessageService(serviceId);
+    auto service = manager_.getMessageService(serviceId);
 
     std::shared_ptr<ConversationsChangeCallback> callback(new ConversationsChangeCallback(
-        static_cast<long>(callbackId), serviceId, service->getMsgServiceType()));
+        static_cast<long>(callbackId), serviceId, service->getMsgServiceType(), queue_));
 
     callback->setFilter(filter);
 
@@ -877,10 +873,10 @@ void MessagingInstance::MessageStorageAddFolderChangeListener(const picojson::va
 
     int serviceId = getServiceIdFromJSON(data);
 
-    auto service = MessagingManager::getInstance().getMessageService(serviceId);
+    auto service = manager_.getMessageService(serviceId);
 
     std::shared_ptr<FoldersChangeCallback> callback(new FoldersChangeCallback(
-        static_cast<long>(callbackId), serviceId, service->getMsgServiceType()));
+        static_cast<long>(callbackId), serviceId, service->getMsgServiceType(), queue_));
 
     callback->setFilter(filter);
 
@@ -907,7 +903,7 @@ void MessagingInstance::MessageStorageRemoveChangeListener(const picojson::value
     const long watchId = static_cast<long>(
             data.at(REMOVE_CHANGE_LISTENER_ARGS_WATCHID).get<double>());
 
-    auto service = MessagingManager::getInstance().getMessageService(getServiceIdFromJSON(data));
+    auto service = manager_.getMessageService(getServiceIdFromJSON(data));
 
     service->getMsgStorage()->removeChangeListener(watchId);
     ReportSuccess(out);
index e321b2e3a027e2bd519ec55118aa17bb115af9f4..0132beafa52808415e81591d00e36adbfc5bfc28 100644 (file)
@@ -7,16 +7,17 @@
 
 #include "common/extension.h"
 
+#include "messaging_manager.h"
+#include "messaging_util.h"
+
 namespace extension {
 namespace messaging {
 
 class MessagingInstance: public common::ParsedInstance {
 public:
-    static MessagingInstance& getInstance();
+  MessagingInstance();
+  virtual ~MessagingInstance();
 private:
-    MessagingInstance();
-    virtual ~MessagingInstance();
-
     void GetMessageServices(const picojson::value& args, picojson::object& out);
 
     void MessageServiceSendMessage(const picojson::value& args,
@@ -53,6 +54,9 @@ private:
             picojson::object& out);
     void MessageStorageRemoveChangeListener(const picojson::value& args,
             picojson::object& out);
+
+    MessagingManager manager_;
+    PostQueue queue_;
 };
 
 } // namespace messaging
index ae57ebd1706805c86474ea81c0446aa4ea78e39c..b66883593c246c9a08054dc0af426b41d00aadbd 100755 (executable)
@@ -31,7 +31,16 @@ namespace {
 const int UNDEFINED_MESSAGE_SERVICE = -1;
 }
 
-MessagingManager::MessagingManager()
+MsgManagerCallbackData::MsgManagerCallbackData(MessagingInstance& instance):
+    json(nullptr),
+    services_map(nullptr),
+    sms_service(nullptr),
+    mms_service(nullptr),
+    instance_(instance) {
+}
+
+MessagingManager::MessagingManager(MessagingInstance& instance):
+    instance_(instance)
 {
     LoggerD("Entered");
     int ret = msg_open_msg_handle(&m_msg_handle);
@@ -68,18 +77,11 @@ MessagingManager::~MessagingManager()
     }
 }
 
-MessagingManager& MessagingManager::getInstance()
-{
-    LoggerD("Entered");
-    static MessagingManager instance;
-    return instance;
-}
-
 static gboolean callbackCompleted(const std::shared_ptr<MsgManagerCallbackData>& user_data)
 {
     LoggerD("Entered");
     std::shared_ptr<picojson::value> response = user_data->json;
-    MessagingInstance::getInstance().PostMessage(response->serialize().c_str());
+    user_data->instance_.PostMessage(response->serialize().c_str());
     return false;
 }
 
@@ -234,7 +236,7 @@ void MessagingManager::getMessageServices(const std::string& type, double callba
     obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
     obj[JSON_DATA] = picojson::value(type);
 
-    auto user_data = std::shared_ptr<MsgManagerCallbackData>(new MsgManagerCallbackData());
+    auto user_data = std::shared_ptr<MsgManagerCallbackData>(new MsgManagerCallbackData(instance_));
     user_data->json = json;
     user_data->services_map = &m_email_services;
     user_data->sms_service = &m_sms_service;
index 2ba815abdf1d1fd1f6eced9d2ab065bd0e52f8a3..1cc7ba340b199acab0ea9c4437146a9af85f4d5d 100755 (executable)
 namespace extension {
 namespace messaging {
 
+class MessagingInstance;
+
 class MsgManagerCallbackData {
 public:
+    explicit MsgManagerCallbackData(MessagingInstance& instance_);
     std::shared_ptr<picojson::value> json;
     std::map<int, MessageService*>* services_map;
     std::pair<int, MessageService*>* sms_service;
     std::pair<int, MessageService*>* mms_service;
+    MessagingInstance& instance_;
 };
 
 class MessagingManager {
 public:
-    static MessagingManager& getInstance();
-    void getMessageServices(const std::string& type, double callbackId);
-    MessageService* getMessageService(const int id);
+  explicit MessagingManager(MessagingInstance& instance);
+  MessagingManager(const MessagingManager &);
+  virtual ~MessagingManager();
+
+  void getMessageServices(const std::string& type, double callbackId);
+  MessageService* getMessageService(const int id);
 
 private:
-    MessagingManager();
-    MessagingManager(const MessagingManager &);
     void operator=(const MessagingManager &);
-    virtual ~MessagingManager();
 
     msg_handle_t m_msg_handle;
     std::map<int, MessageService*> m_email_services;
     std::pair<int, MessageService*> m_sms_service;
     std::pair<int, MessageService*> m_mms_service;
+
+    MessagingInstance& instance_;
 };
 
 } // namespace messaging
index 284b9281de55bfd6e7336830a369b24cd9d6521c..06f934067a5fe04d99a14b2fcdb1c860082bf380 100644 (file)
@@ -961,14 +961,7 @@ PlatformResult MessagingUtil::jsonToMessageConversation(const picojson::value& j
     return PlatformResult(ErrorCode::NO_ERROR);
 }
 
-PostQueue& PostQueue::getInstance()
-{
-    LoggerD("Entered");
-    static PostQueue instance;
-    return instance;
-}
-
-PostQueue::PostQueue()
+PostQueue::PostQueue(MessagingInstance& instance): instance_(instance)
 {
     LoggerD("Entered");
 }
@@ -1056,7 +1049,7 @@ void PostQueue::resolve(PostPriority p)
         i = tasks_.erase(i);
         tasks_mutex_.unlock();
 
-        MessagingInstance::getInstance().PostMessage(json.c_str());
+        instance_.PostMessage(json.c_str());
     } else if (TaskState::NEW == i->second->state()) {
         tasks_mutex_.unlock();
 
index 1ae516302454cd3d64052715a5944b23be2e8e29..338274e0959200d4a5178771cf1a48a57e58c45f 100644 (file)
@@ -108,6 +108,7 @@ class Conversation;
 class MessageConversation;
 class Message;
 class MessageBody;
+class MessagingInstance;
 
 class MessagingUtil {
 public:
@@ -183,7 +184,9 @@ enum PostPriority {
 
 class PostQueue {
 public:
-    static PostQueue& getInstance();
+    explicit PostQueue(MessagingInstance& instance);
+    ~PostQueue();
+
     void addAndResolve(const long cid, PostPriority priority, const std::string json);
     void add(const long cid, PostPriority priority = PostPriority::LAST);
     void resolve(const long cid, const std::string json);
@@ -199,14 +202,14 @@ private:
     typedef std::pair<long, std::shared_ptr<PostTask>> TasksCollectionItem;
     typedef std::vector<TasksCollectionItem> TasksCollection;
 
-    PostQueue();
     PostQueue(const PostQueue &);
-    ~PostQueue();
     void operator=(const PostQueue &);
     void resolve(PostPriority p);
     TasksCollection tasks_;
     std::mutex tasks_mutex_;
 
+    MessagingInstance& instance_;
+
     class PostTask {
     public:
         PostTask();
index d80195fc0f47195e767e43b5da229cd24e62229b..b09947918aad2c2e7c0443e758120a436ec049b4 100644 (file)
@@ -46,7 +46,7 @@ static gboolean sendMessageCompleteCB(void* data)
     }
 
     if (callback->isError()) {
-        PostQueue::getInstance().resolve(
+      callback->getQueue().resolve(
                 callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
                 callback->getJson()->serialize()
         );
@@ -74,7 +74,7 @@ static gboolean sendMessageCompleteCB(void* data)
         data[JSON_DATA_MESSAGE] = MessagingUtil::messageToJson(message);
         obj[JSON_DATA] = picojson::value(data);
 
-        PostQueue::getInstance().resolve(
+        callback->getQueue().resolve(
                 obj.at(JSON_CALLBACK_ID).get<double>(),
                 json->serialize()
         );
@@ -99,7 +99,7 @@ static gboolean addDraftMessageCompleteCB(void *data)
     if (callback->isError()) {
         LoggerD("Calling error callback");
 
-        PostQueue::getInstance().resolve(
+        callback->getQueue().resolve(
                 callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
                 callback->getJson()->serialize()
         );
@@ -115,7 +115,7 @@ static gboolean addDraftMessageCompleteCB(void *data)
         args[JSON_DATA_MESSAGE] = MessagingUtil::messageToJson(callback->getMessage());
         obj[JSON_DATA] = picojson::value(args);
 
-        PostQueue::getInstance().resolve(
+        callback->getQueue().resolve(
                 obj.at(JSON_CALLBACK_ID).get<double>(),
                 json->serialize()
         );
@@ -783,7 +783,7 @@ void ShortMsgManager::removeMessages(MessagesCallbackUserData* callback)
 
     if (callback->isError()) {
         LoggerD("Calling error callback");
-        PostQueue::getInstance().resolve(
+        callback->getQueue().resolve(
                 callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
                 callback->getJson()->serialize()
         );
@@ -794,7 +794,7 @@ void ShortMsgManager::removeMessages(MessagesCallbackUserData* callback)
         picojson::object& obj = json->get<picojson::object>();
         obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
 
-        PostQueue::getInstance().resolve(
+        callback->getQueue().resolve(
                 obj.at(JSON_CALLBACK_ID).get<double>(),
                 json->serialize()
         );
@@ -858,7 +858,7 @@ void ShortMsgManager::updateMessages(MessagesCallbackUserData* callback)
     if (callback->isError()) {
         LoggerD("Calling error callback");
 
-        PostQueue::getInstance().resolve(
+        callback->getQueue().resolve(
                 callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
                 callback->getJson()->serialize()
         );
@@ -880,7 +880,7 @@ void ShortMsgManager::updateMessages(MessagesCallbackUserData* callback)
 
         obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
 
-        PostQueue::getInstance().resolve(
+        callback->getQueue().resolve(
                 obj.at(JSON_CALLBACK_ID).get<double>(),
                 json->serialize()
         );
@@ -996,7 +996,7 @@ void ShortMsgManager::findMessages(FindMsgCallbackUserData* callback)
 
     if (callback->isError()) {
         LoggerD("Calling error callback");
-        PostQueue::getInstance().resolve(
+        callback->getQueue().resolve(
                 callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
                 callback->getJson()->serialize()
         );
@@ -1016,7 +1016,7 @@ void ShortMsgManager::findMessages(FindMsgCallbackUserData* callback)
         obj[JSON_DATA] = picojson::value(response);
         obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
 
-        PostQueue::getInstance().resolve(
+        callback->getQueue().resolve(
                 obj.at(JSON_CALLBACK_ID).get<double>(),
                 json->serialize()
         );
@@ -1064,7 +1064,7 @@ void ShortMsgManager::findConversations(ConversationCallbackData* callback)
 
     if (callback->isError()) {
         LoggerD("Calling error callback");
-        PostQueue::getInstance().resolve(
+        callback->getQueue().resolve(
                 callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
                 callback->getJson()->serialize()
         );
@@ -1083,7 +1083,7 @@ void ShortMsgManager::findConversations(ConversationCallbackData* callback)
         obj[JSON_DATA] = picojson::value(response);
         obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
 
-        PostQueue::getInstance().resolve(
+        callback->getQueue().resolve(
                 obj.at(JSON_CALLBACK_ID).get<double>(),
                 json->serialize()
         );
@@ -1203,7 +1203,7 @@ void ShortMsgManager::removeConversations(ConversationCallbackData* callback)
 
     if (callback->isError()) {
         LoggerD("Calling error callback");
-        PostQueue::getInstance().resolve(
+        callback->getQueue().resolve(
                 callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
                 callback->getJson()->serialize()
         );
@@ -1214,7 +1214,7 @@ void ShortMsgManager::removeConversations(ConversationCallbackData* callback)
         picojson::object& obj = json->get<picojson::object>();
         obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
 
-        PostQueue::getInstance().resolve(
+        callback->getQueue().resolve(
                 obj.at(JSON_CALLBACK_ID).get<double>(),
                 json->serialize()
         );