From 0f584041c09a8c72784718ba12d74e4f0b1306c4 Mon Sep 17 00:00:00 2001 From: Pawel Andruszkiewicz Date: Thu, 8 Oct 2015 09:53:32 +0200 Subject: [PATCH] [Messaging] Refactored CallbackUserData class. [Verification] TCT pass rate SMS/MMS/email: 100% Change-Id: Ieba7635c46f9c7c47148bc74ba2d00ed37b8a8cd Signed-off-by: Pawel Andruszkiewicz --- src/common/GDBus/proxy.h | 1 - src/common/callback_user_data.cc | 44 --- src/common/callback_user_data.h | 53 --- src/common/common.gyp | 2 - src/messaging/DBus/LoadAttachmentProxy.cpp | 18 +- src/messaging/DBus/LoadBodyProxy.cpp | 18 +- src/messaging/DBus/SyncProxy.cpp | 26 +- src/messaging/DBus/SyncProxy.h | 7 +- src/messaging/callback_user_data.cc | 96 +++++ src/messaging/callback_user_data.h | 57 +++ src/messaging/conversation_callback_data.cc | 88 +---- src/messaging/conversation_callback_data.h | 20 +- .../conversations_change_callback.cc | 29 +- src/messaging/email_manager.cc | 329 +++++++----------- src/messaging/email_manager.h | 2 +- src/messaging/find_msg_callback_user_data.cc | 69 +--- src/messaging/find_msg_callback_user_data.h | 19 +- src/messaging/folders_callback_data.cc | 74 ---- src/messaging/folders_callback_data.h | 20 +- src/messaging/folders_change_callback.cc | 41 +-- src/messaging/message_callback_user_data.cc | 66 +--- src/messaging/message_callback_user_data.h | 20 +- src/messaging/message_service.cc | 164 ++------- src/messaging/message_service.h | 43 +-- src/messaging/message_service_email.cc | 22 +- src/messaging/message_service_short_msg.cc | 22 +- src/messaging/message_storage_short_msg.cc | 28 +- src/messaging/messages_callback_user_data.cc | 77 +--- src/messaging/messages_callback_user_data.h | 20 +- src/messaging/messages_change_callback.cc | 42 +-- src/messaging/messaging.gyp | 2 + src/messaging/messaging_instance.cc | 85 ++--- src/messaging/short_message_manager.cc | 153 +++----- 33 files changed, 475 insertions(+), 1282 deletions(-) delete mode 100755 src/common/callback_user_data.cc delete mode 100755 src/common/callback_user_data.h create mode 100755 src/messaging/callback_user_data.cc create mode 100755 src/messaging/callback_user_data.h diff --git a/src/common/GDBus/proxy.h b/src/common/GDBus/proxy.h index ed00283b..b3949745 100644 --- a/src/common/GDBus/proxy.h +++ b/src/common/GDBus/proxy.h @@ -27,7 +27,6 @@ #include #include #include -#include "common/callback_user_data.h" #include "common/picojson.h" #include "common/platform_result.h" diff --git a/src/common/callback_user_data.cc b/src/common/callback_user_data.cc deleted file mode 100755 index 266cbee0..00000000 --- a/src/common/callback_user_data.cc +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "common/callback_user_data.h" - -namespace common { - -CallbackUserData::CallbackUserData() : - m_is_act(true) { -} - -CallbackUserData::~CallbackUserData() { -} - -void CallbackUserData::setActive(bool act) { - m_is_act = act; -} - -bool CallbackUserData::isActive() const { - return m_is_act; -} - -void CallbackUserData::setJson(std::shared_ptr json) { - m_json = json; -} - -std::shared_ptr CallbackUserData::getJson() const { - return m_json; -} - -} // common diff --git a/src/common/callback_user_data.h b/src/common/callback_user_data.h deleted file mode 100755 index 26bed793..00000000 --- a/src/common/callback_user_data.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// Class added for backward compatibility with WRT plugins. -// TODO To be cleaned/replaced in the future. - -#ifndef COMMON_CALLBACK_USER_DATA_H_ -#define COMMON_CALLBACK_USER_DATA_H_ - -#include "common/picojson.h" - -#include - -namespace common { - -class CallbackUserData { -public: - CallbackUserData(); - - virtual ~CallbackUserData(); - - void setActive(bool act); - bool isActive() const; - - void setJson(std::shared_ptr json); - std::shared_ptr getJson() const; - - virtual void setError(const std::string& err_name, - const std::string& err_message) = 0; - -protected: - std::shared_ptr m_json; - -private: - bool m_is_act; -}; - -} // common - -#endif // COMMON_CALLBACK_USER_DATA_H_ diff --git a/src/common/common.gyp b/src/common/common.gyp index b9ac108a..43567a3b 100644 --- a/src/common/common.gyp +++ b/src/common/common.gyp @@ -33,8 +33,6 @@ 'task-queue.h', 'tools.cc', 'tools.h', - 'callback_user_data.cc', - 'callback_user_data.h', 'optional.h', 'platform_result.cc', 'platform_result.h', diff --git a/src/messaging/DBus/LoadAttachmentProxy.cpp b/src/messaging/DBus/LoadAttachmentProxy.cpp index df4105ba..115f3750 100644 --- a/src/messaging/DBus/LoadAttachmentProxy.cpp +++ b/src/messaging/DBus/LoadAttachmentProxy.cpp @@ -206,19 +206,12 @@ void LoadAttachmentProxy::handleEmailSignal(const int status, if (!ret.IsError()) { LoggerD("Updated Message attachment object"); - auto json = callback->getJson(); - picojson::object& obj = json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - picojson::object args; args[JSON_DATA_MESSAGE_ATTACHMENT] = MessagingUtil::messageAttachmentToJson( callback->getMessageAttachment()); - obj[JSON_DATA] = picojson::value(args); - callback->getQueue().resolve( - obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); + callback->SetSuccess(picojson::value(args)); + callback->Post(); } } else if(NOTI_DOWNLOAD_ATTACH_FAIL) { LoggerD("Load message attachment failed!"); @@ -226,11 +219,8 @@ void LoadAttachmentProxy::handleEmailSignal(const int status, } if (ret.IsError()) { LoggerE("Exception in signal callback"); - callback->setError(ret); - callback->getQueue().resolve( - callback->getJson()->get().at(JSON_CALLBACK_ID).get(), - callback->getJson()->serialize() - ); + callback->SetError(ret); + callback->Post(); } if(callback) { diff --git a/src/messaging/DBus/LoadBodyProxy.cpp b/src/messaging/DBus/LoadBodyProxy.cpp index 395ce78c..8916409c 100644 --- a/src/messaging/DBus/LoadBodyProxy.cpp +++ b/src/messaging/DBus/LoadBodyProxy.cpp @@ -166,19 +166,12 @@ void LoadBodyProxy::handleEmailSignal(const int status, if (!ret.IsError()) { LoggerD("Calling success callback"); - auto json = callback->getJson(); - picojson::object& obj = json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - picojson::object args; args[JSON_DATA_MESSAGE_BODY] = MessagingUtil::messageBodyToJson( callback->getMessage()->getBody()); - obj[JSON_DATA] = picojson::value(args); - callback->getQueue().resolve( - obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); + callback->SetSuccess(picojson::value(args)); + callback->Post(); } } else if(NOTI_DOWNLOAD_BODY_FAIL == status) { LoggerD("Load message body failed!"); @@ -186,11 +179,8 @@ void LoadBodyProxy::handleEmailSignal(const int status, } if (ret.IsError()) { - callback->setError(ret); - callback->getQueue().resolve( - callback->getJson()->get().at(JSON_CALLBACK_ID).get(), - callback->getJson()->serialize() - ); + callback->SetError(ret); + callback->Post(); } removeCallback(callback); diff --git a/src/messaging/DBus/SyncProxy.cpp b/src/messaging/DBus/SyncProxy.cpp index b04556e7..ea096c75 100644 --- a/src/messaging/DBus/SyncProxy.cpp +++ b/src/messaging/DBus/SyncProxy.cpp @@ -57,13 +57,13 @@ PlatformResult SyncProxy::create(const std::string& path, } } -void SyncProxy::addCallback(long op_id, common::CallbackUserData* callbackOwned) +void SyncProxy::addCallback(long op_id, CallbackUserData* callbackOwned) { m_callback_map.insert(std::make_pair(op_id, callbackOwned)); } -common::CallbackUserData* SyncProxy::getCallback(long op_id) { - common::CallbackUserData* cb = nullptr; +CallbackUserData* SyncProxy::getCallback(long op_id) { + CallbackUserData* cb = nullptr; const auto it = m_callback_map.find(op_id); if (it != m_callback_map.end()) { @@ -123,28 +123,18 @@ void SyncProxy::handleEmailSignal(const int status, return; } - std::shared_ptr response = callback->getJson(); - picojson::object& obj = response->get(); switch (status) { case NOTI_DOWNLOAD_FINISH: LoggerD("Sync finished!"); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - callback->getQueue().resolve( - obj.at(JSON_CALLBACK_ID).get(), - response->serialize() - ); + callback->SetSuccess(); + callback->Post(); break; case NOTI_DOWNLOAD_FAIL: - { LoggerD("Sync failed!"); - callback->setError("UnknownError", "Sync failed!"); - callback->getQueue().resolve( - obj.at(JSON_CALLBACK_ID).get(), - response->serialize() - ); - } - break; + callback->SetError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Sync failed!")); + callback->Post(); + break; } diff --git a/src/messaging/DBus/SyncProxy.h b/src/messaging/DBus/SyncProxy.h index bd7f3794..183f0ba5 100644 --- a/src/messaging/DBus/SyncProxy.h +++ b/src/messaging/DBus/SyncProxy.h @@ -22,6 +22,7 @@ #ifndef __TIZEN_DBUS_SYNC_PROXY_H__ #define __TIZEN_DBUS_SYNC_PROXY_H__ +#include "messaging/callback_user_data.h" #include "EmailSignalProxy.h" #include "common/platform_result.h" @@ -36,7 +37,7 @@ class SyncProxy : public EmailSignalProxy { public: // Callback is owned by this map - typedef std::map CallbackMap; + typedef std::map CallbackMap; virtual ~SyncProxy(); @@ -44,8 +45,8 @@ public: const std::string& iface, SyncProxyPtr* sync_proxy); //Passed callback will be owned by this proxy - void addCallback(long op_id, common::CallbackUserData* callbackOwned); - common::CallbackUserData* getCallback(long op_id); + void addCallback(long op_id, CallbackUserData* callbackOwned); + CallbackUserData* getCallback(long op_id); void removeCallback(long op_id); protected: diff --git a/src/messaging/callback_user_data.cc b/src/messaging/callback_user_data.cc new file mode 100755 index 00000000..ae1cf0b3 --- /dev/null +++ b/src/messaging/callback_user_data.cc @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "messaging/callback_user_data.h" + +#include "common/logger.h" + +namespace extension { +namespace messaging { + +CallbackUserData::CallbackUserData(PostQueue& queue, long cid, bool keep /* = false */) + : json_(picojson::object()), + obj_(json_.get()), + cid_(cid), + queue_(queue), + result_(common::ErrorCode::NO_ERROR) { + LoggerD("Entered"); + AddJsonData(JSON_CALLBACK_ID, picojson::value(static_cast(cid_))); + AddJsonData(JSON_CALLBACK_KEEP, picojson::value(keep)); +} + +CallbackUserData::~CallbackUserData() { + LoggerD("Entered"); +} + +bool CallbackUserData::IsError() const { + LoggerD("Entered"); + return result_.IsError(); +} + +void CallbackUserData::SetError(const common::PlatformResult& error) { + LoggerD("Entered"); + + // keep only the first error + if (!IsError()) { + result_ = error; + SetAction(JSON_CALLBACK_ERROR, error.ToJSON()); + } +} + +void CallbackUserData::SetSuccess(const picojson::value& data /* = picojson::value()*/) { + LoggerD("Entered"); + + // do not allow to overwrite the error + if (!IsError()) { + SetAction(JSON_CALLBACK_SUCCCESS, data); + } +} + +void CallbackUserData::SetAction(const char* action, const picojson::value& data) { + LoggerD("Entered"); + + AddJsonData(JSON_ACTION, picojson::value(action)); + AddJsonData(JSON_DATA, data); +} + +void CallbackUserData::AddToQueue() { + LoggerD("Entered"); + queue_.add(cid_, PostPriority::HIGH); +} + +void CallbackUserData::Post() { + LoggerD("Entered"); + queue_.resolve(cid_, json_.serialize()); +} + +void CallbackUserData::AddAndPost(PostPriority p) { + queue_.addAndResolve(cid_, p, json_.serialize()); +} + +bool CallbackUserData::HasQueue(const PostQueue& q) const { + LoggerD("Entered"); + return &q == &queue_; +} + +void CallbackUserData::AddJsonData(const char* key, const picojson::value& value) { + LoggerD("Entered"); + // always overwrite + obj_[key] = value; +} + +} // messaging +} // extension diff --git a/src/messaging/callback_user_data.h b/src/messaging/callback_user_data.h new file mode 100755 index 00000000..5b62e2be --- /dev/null +++ b/src/messaging/callback_user_data.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MESSAGING_CALLBACK_USER_DATA_H_ +#define MESSAGING_CALLBACK_USER_DATA_H_ + +#include + +#include "common/picojson.h" + +#include "messaging/messaging_util.h" + +namespace extension { +namespace messaging { + +class CallbackUserData { + public: + CallbackUserData(PostQueue& queue, long cid, bool keep = false); + virtual ~CallbackUserData(); + + bool IsError() const; + void SetError(const common::PlatformResult& error); + void SetSuccess(const picojson::value& data = picojson::value()); + void SetAction(const char* action, const picojson::value& data); + + void AddToQueue(); + void Post(); + void AddAndPost(PostPriority p); + bool HasQueue(const PostQueue& q) const; + + private: + void AddJsonData(const char* key, const picojson::value& value); + + picojson::value json_; + picojson::object& obj_; + long cid_; + PostQueue& queue_; + common::PlatformResult result_; +}; + +} // messaging +} // extension + +#endif // MESSAGING_CALLBACK_USER_DATA_H_ diff --git a/src/messaging/conversation_callback_data.cc b/src/messaging/conversation_callback_data.cc index 8bf1191d..18a917cd 100755 --- a/src/messaging/conversation_callback_data.cc +++ b/src/messaging/conversation_callback_data.cc @@ -20,35 +20,13 @@ namespace extension { namespace messaging { -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), - queue_(queue) -{ - LoggerD("Entered"); -} - -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), - queue_(queue) -{ - LoggerD("Entered"); - auto json = std::shared_ptr(new picojson::value(picojson::object())); - picojson::object& o = json->get(); - o[JSON_CALLBACK_ID] = picojson::value(static_cast(cid)); - o[JSON_CALLBACK_KEEP] = picojson::value(keep); - setJson(json); +ConversationCallbackData::ConversationCallbackData(PostQueue& queue, long cid, bool keep /* = false */) : + CallbackUserData(queue, cid, keep), + m_limit(0), + m_offset(0), + m_account_id(0), + m_service_type(UNDEFINED) { + LoggerD("Entered"); } ConversationCallbackData::~ConversationCallbackData() @@ -86,58 +64,6 @@ std::vector> ConversationCallbackData::getC return m_conversations; } -void ConversationCallbackData::setError(const std::string& err_name, - const std::string& err_message) -{ - LoggerD("Entered"); - // keep only first error in chain - if (!m_is_error) { - LoggerD("Error has not been set yet"); - picojson::object& obj = m_json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR); - auto objData = picojson::object(); - - objData[JSON_ERROR_NAME] = picojson::value(err_name); - objData[JSON_ERROR_MESSAGE] = picojson::value(err_message); - - obj[JSON_DATA] = picojson::value(objData); - - m_is_error = true; - m_err_name = err_name; - m_err_message = err_message; - } -} - -void ConversationCallbackData::SetError(const common::PlatformResult& error) -{ - LoggerD("Entered"); - // keep only first error in chain - if (!m_is_error) { - LoggerD("Error has not been set yet"); - m_is_error = true; - picojson::object& obj = m_json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR); - auto obj_data = picojson::object(); - obj_data[JSON_ERROR_CODE] = picojson::value(static_cast(error.error_code())); - obj_data[JSON_ERROR_MESSAGE] = picojson::value(error.message()); - obj[JSON_DATA] = picojson::value(obj_data); - } -} -bool ConversationCallbackData::isError() const -{ - return m_is_error; -} - -std::string ConversationCallbackData::getErrorName() const -{ - return m_err_name; -} - -std::string ConversationCallbackData::getErrorMessage() const -{ - return m_err_message; -} - void ConversationCallbackData::setAccountId(int account_id){ m_account_id = account_id; } diff --git a/src/messaging/conversation_callback_data.h b/src/messaging/conversation_callback_data.h index 17cb5df7..9d82d82a 100755 --- a/src/messaging/conversation_callback_data.h +++ b/src/messaging/conversation_callback_data.h @@ -17,10 +17,11 @@ #ifndef MESSAGING_CONVERSATION_CALLBACK_DATA_H_ #define MESSAGING_CONVERSATION_CALLBACK_DATA_H_ -#include "common/callback_user_data.h" #include #include #include + +#include "messaging/callback_user_data.h" #include "MsgCommon/AttributeFilter.h" #include "MsgCommon/SortMode.h" #include "messaging_util.h" @@ -33,10 +34,9 @@ namespace messaging { class Message; class MessageConversation; -class ConversationCallbackData: public common::CallbackUserData { +class ConversationCallbackData : public CallbackUserData { public: - ConversationCallbackData(PostQueue& queue); - ConversationCallbackData(long cid, PostQueue& queue, bool keep = false); + ConversationCallbackData(PostQueue& queue, long cid, bool keep = false); virtual ~ConversationCallbackData(); void setFilter(AbstractFilterPtr filter); @@ -47,13 +47,6 @@ public: std::vector> getConversations() const; - void setError(const std::string& err_name, - const std::string& err_message); - void SetError(const common::PlatformResult& error); - bool isError() const; - std::string getErrorName() const; - std::string getErrorMessage() const; - void setAccountId(int account_id); int getAccountId() const; @@ -64,19 +57,14 @@ public: long getLimit() const; long getOffset() const; - PostQueue& getQueue() { return queue_;}; private: AbstractFilterPtr m_filter; SortModePtr m_sort; long m_limit; long m_offset; - bool m_is_error; - std::string m_err_name; - std::string m_err_message; std::vector> m_conversations; int m_account_id; MessageType m_service_type; - PostQueue& queue_; }; }//messaging diff --git a/src/messaging/conversations_change_callback.cc b/src/messaging/conversations_change_callback.cc index 841fef61..d98308f4 100755 --- a/src/messaging/conversations_change_callback.cc +++ b/src/messaging/conversations_change_callback.cc @@ -44,7 +44,7 @@ ConversationsChangeCallback::ConversationsChangeCallback( int service_id, MessageType service_type, PostQueue& queue) : - m_callback_data(cid, queue, true), + m_callback_data(queue, cid, true), m_id(service_id), m_msg_type(service_type), m_is_act(true) @@ -116,13 +116,8 @@ void ConversationsChangeCallback::added( LoggerD("Calling:%s with:%d added conversations", CONVERSATIONSADDED, filtered.size()); - auto json = m_callback_data.getJson(); - picojson::object& obj = json->get(); - obj[JSON_ACTION] = picojson::value(CONVERSATIONSADDED); - obj[JSON_DATA] = picojson::value(array); - - m_callback_data.getQueue().addAndResolve(obj.at( - JSON_CALLBACK_ID).get(), PostPriority::MEDIUM, json->serialize()); + m_callback_data.SetAction(CONVERSATIONSADDED, picojson::value(array)); + m_callback_data.AddAndPost(PostPriority::MEDIUM); } void ConversationsChangeCallback::updated( @@ -150,13 +145,8 @@ void ConversationsChangeCallback::updated( LoggerD("Calling:%s with:%d added conversations", CONVERSATIONSUPDATED, filtered.size()); - auto json = m_callback_data.getJson(); - picojson::object& obj = json->get(); - obj[JSON_ACTION] = picojson::value(CONVERSATIONSUPDATED); - obj[JSON_DATA] = picojson::value(array); - - m_callback_data.getQueue().addAndResolve(obj.at( - JSON_CALLBACK_ID).get(), PostPriority::LOW, json->serialize()); + m_callback_data.SetAction(CONVERSATIONSUPDATED, picojson::value(array)); + m_callback_data.AddAndPost(PostPriority::LOW); } void ConversationsChangeCallback::removed( @@ -184,13 +174,8 @@ void ConversationsChangeCallback::removed( LoggerD("Calling:%s with:%d added conversations", CONVERSATIONSREMOVED, filtered.size()); - auto json = m_callback_data.getJson(); - picojson::object& obj = json->get(); - obj[JSON_ACTION] = picojson::value(CONVERSATIONSREMOVED); - obj[JSON_DATA] = picojson::value(array); - - m_callback_data.getQueue().addAndResolve(obj.at( - JSON_CALLBACK_ID).get(), PostPriority::LAST, json->serialize()); + m_callback_data.SetAction(CONVERSATIONSREMOVED, picojson::value(array)); + m_callback_data.AddAndPost(PostPriority::LAST); } void ConversationsChangeCallback::setFilter(tizen::AbstractFilterPtr filter) diff --git a/src/messaging/email_manager.cc b/src/messaging/email_manager.cc index 84bd13ac..c7fbbf77 100755 --- a/src/messaging/email_manager.cc +++ b/src/messaging/email_manager.cc @@ -304,33 +304,19 @@ static gboolean addDraftMessageCompleteCB(void *data) return false; } - auto json = callback->getJson(); - picojson::object& obj = json->get(); - if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - if (callback->isError()) { - LoggerD("Calling error callback"); - callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); - callback->getMessage()->setMessageStatus(MessageStatus::STATUS_FAILED); - } else { - LoggerD("Calling success callback"); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - - picojson::object args; - args[JSON_DATA_MESSAGE] = MessagingUtil::messageToJson(callback->getMessage()); - obj[JSON_DATA] = picojson::value(args); - - callback->getQueue().resolve( - obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); - } - } else { - LoggerE("Callback id is missing"); + if (callback->IsError()) { + LoggerD("Calling error callback"); callback->getMessage()->setMessageStatus(MessageStatus::STATUS_FAILED); + } else { + LoggerD("Calling success callback"); + + picojson::object args; + args[JSON_DATA_MESSAGE] = MessagingUtil::messageToJson(callback->getMessage()); + callback->SetSuccess(picojson::value(args)); } + callback->Post(); + delete callback; callback = NULL; @@ -351,7 +337,7 @@ void EmailManager::addDraftMessage(MessageCallbackUserData* callback) PlatformResult ret = addDraftMessagePlatform(callback->getAccountId(), message); if (ret.IsError()) { LoggerE("%d (%s)", ret.error_code(), ret.message().c_str()); - callback->setError(ret); + callback->SetError(ret); } } //Complete task @@ -374,49 +360,37 @@ static gboolean sendEmailCompleteCB(void* data) return false; } - auto json = callback->getJson(); - picojson::object& obj = json->get(); - if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - if (callback->isError()) { - LoggerD("Calling error callback"); - callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); - callback->getMessage()->setMessageStatus(MessageStatus::STATUS_FAILED); - } - else { - LoggerD("Calling success callback"); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - - std::vector recipients; - auto addToRecipients = [&recipients](std::string& e)->void { - recipients.push_back(picojson::value(e)); - }; - - auto toVect = callback->getMessage()->getTO(); - std::for_each(toVect.begin(), toVect.end(), addToRecipients); - - auto ccVect = callback->getMessage()->getCC(); - std::for_each(ccVect.begin(), ccVect.end(), addToRecipients); - - auto bccVect = callback->getMessage()->getBCC(); - std::for_each(bccVect.begin(), bccVect.end(), addToRecipients); - - picojson::object data; - data[JSON_DATA_RECIPIENTS] = picojson::value(recipients); - data[JSON_DATA_MESSAGE] = MessagingUtil::messageToJson(callback->getMessage()); - obj[JSON_DATA] = picojson::value(data); - - callback->getQueue().resolve( - obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); - callback->getMessage()->setMessageStatus(MessageStatus::STATUS_SENT); - } - } else { - LoggerE("Callback id is missing"); + if (callback->IsError()) { + LoggerD("Calling error callback"); + callback->getMessage()->setMessageStatus(MessageStatus::STATUS_FAILED); + } + else { + LoggerD("Calling success callback"); + + std::vector recipients; + auto addToRecipients = [&recipients](std::string& e)->void { + recipients.push_back(picojson::value(e)); + }; + + auto toVect = callback->getMessage()->getTO(); + std::for_each(toVect.begin(), toVect.end(), addToRecipients); + + auto ccVect = callback->getMessage()->getCC(); + std::for_each(ccVect.begin(), ccVect.end(), addToRecipients); + + auto bccVect = callback->getMessage()->getBCC(); + std::for_each(bccVect.begin(), bccVect.end(), addToRecipients); + + picojson::object data; + data[JSON_DATA_RECIPIENTS] = picojson::value(recipients); + data[JSON_DATA_MESSAGE] = MessagingUtil::messageToJson(callback->getMessage()); + + callback->SetSuccess(picojson::value(data)); + callback->getMessage()->setMessageStatus(MessageStatus::STATUS_SENT); } + callback->Post(); + delete callback; callback = NULL; @@ -476,7 +450,7 @@ PlatformResult EmailManager::sendMessage(MessageRecipientsCallbackData* callback if (!platform_result) { LoggerE("Message send failed"); - callback->setError(platform_result); + callback->SetError(platform_result); if (!g_idle_add(sendEmailCompleteCB, static_cast(callback))) { LoggerE("g_idle addition failed"); @@ -523,14 +497,12 @@ void EmailManager::sendStatusCallback(int mail_id, case EMAIL_ERROR_NO_RESPONSE: { LoggerE("Network error %d", error_code); - common::NetworkException e("Failed to send message"); - callback->setError(e.name(), e.message()); + callback->SetError(PlatformResult(ErrorCode::NETWORK_ERR, "Failed to send message")); break; } default: LoggerE("Unknown error %d", error_code); - common::UnknownException ex("Failed to send message"); - callback->setError(ex.name(),ex.message()); + callback->SetError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Failed to send message")); break; } } else if (NOTI_SEND_FINISH == status) { @@ -824,18 +796,10 @@ void EmailManager::stopSync(long op_id) LoggerE("Email cancel job failed, %d", err); } - std::shared_ptr response = callback->getJson(); - picojson::object& obj = response->get(); - - if (response->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - callback->setError(PlatformResult(ErrorCode::ABORT_ERR, "Sync aborted by user")); + callback->SetError(PlatformResult(ErrorCode::ABORT_ERR, "Sync aborted by user")); - callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get(), - response->serialize()); - m_proxy_sync->removeCallback(op_id); - } else { - LoggerE("Callback id is missing"); - } + callback->Post(); + m_proxy_sync->removeCallback(op_id); } //################################## ^stopSync ################################# @@ -849,7 +813,7 @@ void EmailManager::RemoveCallbacksByQueue(const PostQueue& q) { LoggerD("Entered"); for (auto it = m_sendRequests.begin(); it != m_sendRequests.end();) { - if (&it->second->getQueue() == &q) { + if (it->second->HasQueue(q)) { delete it->second; m_sendRequests.erase(it++); } else { @@ -866,26 +830,18 @@ void removeEmailCompleteCB(MessagesCallbackUserData* callback) return; } - auto json = callback->getJson(); - picojson::object& obj = json->get(); - if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - if (callback->isError()) { - LoggerD("Calling error callback"); - callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); - } else { - LoggerD("Calling success callback"); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); - } + if (callback->IsError()) { + LoggerD("Calling error callback"); + } else { - LoggerE("Callback id is missing"); + LoggerD("Calling success callback"); + + callback->SetSuccess(); } + callback->Post(); + delete callback; callback = NULL; } @@ -922,8 +878,7 @@ void EmailManager::removeStatusCallback(const std::vector &ids, MessagesCallbackUserData* callback = it->callback; if (NOTI_MAIL_DELETE_FAIL == status) { LoggerD("Failed to remove mail"); - UnknownException e("Messages remove failed"); - callback->setError(e.name(), e.message()); + callback->SetError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Messages remove failed")); } //if one of mails failed, call error callback //if all mails are deleted, call success. @@ -1077,32 +1032,23 @@ void EmailManager::updateMessages(MessagesCallbackUserData* callback) callback->SetError(ret); } - auto json = callback->getJson(); - picojson::object& obj = json->get(); - if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - if (callback->isError()) { - LoggerD("Calling error callback"); - callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get(), - json->serialize()); - } else { - LoggerD("Calling success callback"); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - - picojson::array array; - auto messages = callback->getMessages(); - size_t messages_size = messages.size(); - for (size_t i = 0 ; i < messages_size; ++i) { - array.push_back(MessagingUtil::messageToJson(messages[i])); - } - obj[JSON_DATA] = picojson::value(array); + if (callback->IsError()) { + LoggerD("Calling error callback"); + } else { + LoggerD("Calling success callback"); - callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); + picojson::array array; + auto messages = callback->getMessages(); + size_t messages_size = messages.size(); + for (size_t i = 0 ; i < messages_size; ++i) { + array.push_back(MessagingUtil::messageToJson(messages[i])); } - } else { - LoggerE("Callback id is missing"); + + callback->SetSuccess(picojson::value(array)); } + + callback->Post(); + delete callback; callback = NULL; } @@ -1157,33 +1103,25 @@ void EmailManager::findMessages(FindMsgCallbackUserData* callback) } //Complete task - LoggerD("callback: %p error: %d messages.size() = %d", callback, callback->isError(), + LoggerD("callback: %p error: %d messages.size() = %d", callback, callback->IsError(), callback->getMessages().size()); - auto json = callback->getJson(); - picojson::object& obj = json->get(); - if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - if (callback->isError()) { - LoggerD("Calling error callback"); - callback->getQueue().resolve( obj.at(JSON_CALLBACK_ID).get(), - json->serialize()); - } else { - LoggerD("Calling success callback"); - std::vector response; - auto messages = callback->getMessages(); - std::for_each(messages.begin(), messages.end(), [&response](MessagePtr &message){ - response.push_back(MessagingUtil::messageToJson(message)); - }); - obj[JSON_DATA] = picojson::value(response); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); + if (callback->IsError()) { + LoggerD("Calling error callback"); - callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get(), - json->serialize()); - } } else { - LoggerE("Failed to call findMessages callback."); + LoggerD("Calling success callback"); + std::vector response; + auto messages = callback->getMessages(); + std::for_each(messages.begin(), messages.end(), [&response](MessagePtr &message){ + response.push_back(MessagingUtil::messageToJson(message)); + }); + + callback->SetSuccess(picojson::value(response)); } + callback->Post(); + delete callback; callback = NULL; } @@ -1229,37 +1167,27 @@ void EmailManager::findConversations(ConversationCallbackData* callback) } //Complete task - LoggerD("callback: %p error:%d conversations.size()=%d", callback, callback->isError(), + LoggerD("callback: %p error:%d conversations.size()=%d", callback, callback->IsError(), callback->getConversations().size()); - auto json = callback->getJson(); - picojson::object& obj = json->get(); - if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - if (callback->isError()) { - LoggerD("Calling error callback"); - callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get(), - json->serialize()); - } else { - LoggerD("Calling success callback"); - - std::vector response; - auto messages = callback->getConversations(); - std::for_each(messages.begin(), messages.end(), - [&response](std::shared_ptr &conversation) { - response.push_back(MessagingUtil::conversationToJson(conversation)); - } - ); - obj[JSON_DATA] = picojson::value(response); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); + if (callback->IsError()) { + LoggerD("Calling error callback"); + } else { + LoggerD("Calling success callback"); - callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); + std::vector response; + auto messages = callback->getConversations(); + std::for_each(messages.begin(), messages.end(), + [&response](std::shared_ptr &conversation) { + response.push_back(MessagingUtil::conversationToJson(conversation)); } - } else { - LoggerE("Failed to call findConversations callback."); + ); + + callback->SetSuccess(picojson::value(response)); } + callback->Post(); + delete callback; callback = NULL; } @@ -1370,36 +1298,27 @@ void EmailManager::findFolders(FoldersCallbackData* callback) } //Complete task - LoggerD("callback: %p error:%d folders.size()=%d", callback, callback->isError(), + LoggerD("callback: %p error:%d folders.size()=%d", callback, callback->IsError(), callback->getFolders().size()); - auto json = callback->getJson(); - picojson::object& obj = json->get(); - if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - if (callback->isError()) { - LoggerD("Calling error callback"); - callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get(), - json->serialize()); - } else { - LoggerD("Calling success callback"); - - std::vector response; - auto folders = callback->getFolders(); - std::for_each(folders.begin(), folders.end(), - [&response](std::shared_ptr &folder) { - response.push_back(MessagingUtil::folderToJson(folder)); - } - ); - obj[JSON_DATA] = picojson::value(response); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); + if (callback->IsError()) { + LoggerD("Calling error callback"); + } else { + LoggerD("Calling success callback"); - callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get(), - json->serialize()); + std::vector response; + auto folders = callback->getFolders(); + std::for_each(folders.begin(), folders.end(), + [&response](std::shared_ptr &folder) { + response.push_back(MessagingUtil::folderToJson(folder)); } - } else { - LoggerE("Unknown error when calling findFolders callback."); + ); + + callback->SetSuccess(picojson::value(response)); } + callback->Post(); + delete callback; callback = NULL; } @@ -1465,24 +1384,16 @@ void EmailManager::removeConversations(ConversationCallbackData* callback) callback->SetError(ret); } - auto json = callback->getJson(); - picojson::object& obj = json->get(); - if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - if (callback->isError()) { - LoggerD("Calling error callback"); - callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get(), - json->serialize()); - } else { - LoggerD("Calling success callback"); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - - callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get(), - json->serialize()); - } + if (callback->IsError()) { + LoggerD("Calling error callback"); } else { - LoggerE("Unknown error when calling removeConversations callback."); + LoggerD("Calling success callback"); + + callback->SetSuccess(); } + callback->Post(); + delete callback; callback = NULL; } diff --git a/src/messaging/email_manager.h b/src/messaging/email_manager.h index d38ef798..8828d296 100755 --- a/src/messaging/email_manager.h +++ b/src/messaging/email_manager.h @@ -32,7 +32,7 @@ #include "email-api-mail.h" #include "email-api-mailbox.h" -#include "common/callback_user_data.h" +#include "messaging/callback_user_data.h" #include "common/GDBus/connection.h" #include "common/platform_exception.h" #include "common/platform_result.h" diff --git a/src/messaging/find_msg_callback_user_data.cc b/src/messaging/find_msg_callback_user_data.cc index fa8cc973..0cef06ca 100755 --- a/src/messaging/find_msg_callback_user_data.cc +++ b/src/messaging/find_msg_callback_user_data.cc @@ -23,16 +23,13 @@ namespace extension { namespace messaging { -FindMsgCallbackUserData::FindMsgCallbackUserData(PostQueue& queue): - CallbackUserData(), - m_limit(0), - m_offset(0), - m_is_error(false), - m_account_id(0), - m_service_type(UNDEFINED), - queue_(queue) -{ - LoggerD("Entered"); +FindMsgCallbackUserData::FindMsgCallbackUserData(PostQueue& queue, long cid) : + CallbackUserData(queue, cid), + m_limit(0), + m_offset(0), + m_account_id(0), + m_service_type(UNDEFINED) { + LoggerD("Entered"); } FindMsgCallbackUserData::~FindMsgCallbackUserData() @@ -70,58 +67,6 @@ std::vector> FindMsgCallbackUserData::getMessages() con return m_messages; } -void FindMsgCallbackUserData::setError(const std::string& err_name, - const std::string& err_message) -{ - LoggerD("Entered"); - // keep only first error in chain - if (!m_is_error) { - LoggerD("Error has not been set yet"); - m_is_error = true; - m_err_name = err_name; - m_err_message = err_message; - - picojson::object& obj = m_json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR); - - auto obj_error = picojson::object(); - obj_error[JSON_ERROR_NAME] = picojson::value(err_name); - obj_error[JSON_ERROR_MESSAGE] = picojson::value(err_message); - obj[JSON_DATA] = picojson::value(obj_error); - } -} - -void FindMsgCallbackUserData::SetError(const common::PlatformResult& error) -{ - LoggerD("Entered"); - // keep only first error in chain - if (!m_is_error) { - LoggerD("Error has not been set yet"); - m_is_error = true; - picojson::object& obj = m_json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR); - auto obj_data = picojson::object(); - obj_data[JSON_ERROR_CODE] = picojson::value(static_cast(error.error_code())); - obj_data[JSON_ERROR_MESSAGE] = picojson::value(error.message()); - obj[JSON_DATA] = picojson::value(obj_data); - } -} - -bool FindMsgCallbackUserData::isError() const -{ - return m_is_error; -} - -std::string FindMsgCallbackUserData::getErrorName() const -{ - return m_err_name; -} - -std::string FindMsgCallbackUserData::getErrorMessage() const -{ - return m_err_message; -} - void FindMsgCallbackUserData::setAccountId(int account_id){ m_account_id = account_id; } diff --git a/src/messaging/find_msg_callback_user_data.h b/src/messaging/find_msg_callback_user_data.h index 48e6067d..d7782282 100755 --- a/src/messaging/find_msg_callback_user_data.h +++ b/src/messaging/find_msg_callback_user_data.h @@ -21,10 +21,11 @@ #ifndef __TIZEN_FIND_MSG_CALLBACK_USER_DATA_H #define __TIZEN_FIND_MSG_CALLBACK_USER_DATA_H -#include "common/callback_user_data.h" #include #include #include + +#include "messaging/callback_user_data.h" #include "MsgCommon/AttributeFilter.h" #include "MsgCommon/SortMode.h" #include "messaging_util.h" @@ -37,9 +38,9 @@ namespace messaging { class Message; -class FindMsgCallbackUserData: public common::CallbackUserData { +class FindMsgCallbackUserData : public CallbackUserData { public: - FindMsgCallbackUserData(PostQueue& queue); + FindMsgCallbackUserData(PostQueue& queue, long cid); virtual ~FindMsgCallbackUserData(); void setFilter(AbstractFilterPtr filter); @@ -49,13 +50,6 @@ public: void addMessage(std::shared_ptr msg); std::vector> getMessages() const; - void setError(const std::string& err_name, - const std::string& err_message); - void SetError(const common::PlatformResult& error); - bool isError() const; - std::string getErrorName() const; - std::string getErrorMessage() const; - void setAccountId(int account_id); int getAccountId() const; @@ -66,19 +60,14 @@ public: long getLimit() const; long getOffset() const; - PostQueue& getQueue() { return queue_;}; private: AbstractFilterPtr m_filter; SortModePtr m_sort; long m_limit; long m_offset; - bool m_is_error; - std::string m_err_name; - std::string m_err_message; std::vector> m_messages; int m_account_id; MessageType m_service_type; - PostQueue& queue_; }; }//Messaging diff --git a/src/messaging/folders_callback_data.cc b/src/messaging/folders_callback_data.cc index ad34e661..e5566b96 100755 --- a/src/messaging/folders_callback_data.cc +++ b/src/messaging/folders_callback_data.cc @@ -19,28 +19,6 @@ namespace extension { namespace messaging { - -FoldersCallbackData::FoldersCallbackData(PostQueue& queue): - m_filter(), - m_is_error(false), - queue_(queue) -{ - LoggerD("Entered"); -} - -FoldersCallbackData::FoldersCallbackData(long cid, PostQueue& queue, bool keep): - m_filter(), - m_is_error(false), - queue_(queue) -{ - LoggerD("Entered"); - auto json = std::shared_ptr(new picojson::value(picojson::object())); - picojson::object& o = json->get(); - o[JSON_CALLBACK_ID] = picojson::value(static_cast(cid)); - o[JSON_CALLBACK_KEEP] = picojson::value(keep); - setJson(json); -} - FoldersCallbackData::~FoldersCallbackData() { LoggerD("Entered"); } @@ -65,57 +43,5 @@ tizen::AbstractFilterPtr FoldersCallbackData::getFilter() const return m_filter; } -void FoldersCallbackData::setError(const std::string& err_name, - const std::string& err_message) -{ - LoggerD("Entered"); - // keep only first error in chain - if (!m_is_error) { - LoggerD("Error has not been set yet"); - m_is_error = true; - m_err_name = err_name; - m_err_message = err_message; - - picojson::object& obj = m_json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR); - - auto obj_error = picojson::object(); - obj_error[JSON_ERROR_NAME] = picojson::value(err_name); - obj_error[JSON_ERROR_MESSAGE] = picojson::value(err_message); - obj[JSON_DATA] = picojson::value(obj_error); - } -} - -void FoldersCallbackData::SetError(const common::PlatformResult& error) -{ - LoggerD("Entered"); - // keep only first error in chain - if (!m_is_error) { - LoggerD("Error has not been set yet"); - m_is_error = true; - picojson::object& obj = m_json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR); - auto obj_data = picojson::object(); - obj_data[JSON_ERROR_CODE] = picojson::value(static_cast(error.error_code())); - obj_data[JSON_ERROR_MESSAGE] = picojson::value(error.message()); - obj[JSON_DATA] = picojson::value(obj_data); - } -} - -bool FoldersCallbackData::isError() const -{ - return m_is_error; -} - -std::string FoldersCallbackData::getErrorName() const -{ - return m_err_name; -} - -std::string FoldersCallbackData::getErrorMessage() const -{ - return m_err_message; -} - }//messaging }//extension diff --git a/src/messaging/folders_callback_data.h b/src/messaging/folders_callback_data.h index 0fcfcd97..34a50769 100755 --- a/src/messaging/folders_callback_data.h +++ b/src/messaging/folders_callback_data.h @@ -17,13 +17,13 @@ #ifndef __TIZEN_FOLDERS_CALLBACK_DATA_H__ #define __TIZEN_FOLDERS_CALLBACK_DATA_H__ -#include "common/callback_user_data.h" #include "common/platform_result.h" #include #include #include +#include "messaging/callback_user_data.h" #include "MsgCommon/AbstractFilter.h" #include "message_folder.h" @@ -34,10 +34,9 @@ namespace messaging { class MessageFolder; -class FoldersCallbackData: public common::CallbackUserData { +class FoldersCallbackData : public CallbackUserData { public: - FoldersCallbackData(PostQueue& queue); - FoldersCallbackData(long cid, PostQueue& queue, bool keep = false); + using CallbackUserData::CallbackUserData; virtual ~FoldersCallbackData(); void addFolder(std::shared_ptr folder); @@ -46,22 +45,9 @@ public: void setFilter(tizen::AbstractFilterPtr filter); tizen::AbstractFilterPtr getFilter() const; - void setError(const std::string& err_name, - const std::string& err_message); - void SetError(const common::PlatformResult& error); - bool isError() const; - std::string getErrorName() const; - std::string getErrorMessage() const; - - PostQueue& getQueue() { return queue_;}; private: std::vector> m_folders; tizen::AbstractFilterPtr m_filter; - bool m_is_error; - std::string m_err_name; - std::string m_err_message; - PostQueue& queue_; - }; }//messaging diff --git a/src/messaging/folders_change_callback.cc b/src/messaging/folders_change_callback.cc index 504f8b53..1998e552 100755 --- a/src/messaging/folders_change_callback.cc +++ b/src/messaging/folders_change_callback.cc @@ -32,7 +32,7 @@ FoldersChangeCallback::FoldersChangeCallback( int service_id, MessageType service_type, PostQueue& queue): - m_callback_data(cid, queue, true), + m_callback_data(queue, cid, true), m_id(service_id), m_msg_type(service_type), m_is_act(true) @@ -99,17 +99,8 @@ void FoldersChangeCallback::added(const FolderPtrVector& folders) LoggerD("Calling:%s with:%d added folders", FOLDERSADDED, filtered.size()); - auto json = m_callback_data.getJson(); - picojson::object& obj = json->get(); - obj[JSON_ACTION] = picojson::value(FOLDERSADDED); - obj[JSON_DATA] = picojson::value(array); - - if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - m_callback_data.getQueue().addAndResolve(obj.at( - JSON_CALLBACK_ID).get(), PostPriority::MEDIUM, json->serialize()); - } else { - LoggerE("Callback id is missing"); - } + m_callback_data.SetAction(FOLDERSADDED, picojson::value(array)); + m_callback_data.AddAndPost(PostPriority::MEDIUM); } void FoldersChangeCallback::updated(const FolderPtrVector& folders) @@ -136,17 +127,8 @@ void FoldersChangeCallback::updated(const FolderPtrVector& folders) LoggerD("Calling:%s with:%d updated folders", FOLDERSUPDATED, filtered.size()); - auto json = m_callback_data.getJson(); - picojson::object& obj = json->get(); - obj[JSON_ACTION] = picojson::value(FOLDERSUPDATED); - obj[JSON_DATA] = picojson::value(array); - - if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - m_callback_data.getQueue().addAndResolve(obj.at( - JSON_CALLBACK_ID).get(), PostPriority::LOW, json->serialize()); - } else { - LoggerE("Callback id is missing"); - } + m_callback_data.SetAction(FOLDERSUPDATED, picojson::value(array)); + m_callback_data.AddAndPost(PostPriority::LOW); } void FoldersChangeCallback::removed(const FolderPtrVector& folders) @@ -173,17 +155,8 @@ void FoldersChangeCallback::removed(const FolderPtrVector& folders) LoggerD("Calling:%s with:%d removed folders", FOLDERSREMOVED, filtered.size()); - auto json = m_callback_data.getJson(); - picojson::object& obj = json->get(); - obj[JSON_ACTION] = picojson::value(FOLDERSREMOVED); - obj[JSON_DATA] = picojson::value(array); - - if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - m_callback_data.getQueue().addAndResolve(obj.at( - JSON_CALLBACK_ID).get(), PostPriority::LAST, json->serialize()); - } else { - LoggerE("Callback id is missing"); - } + m_callback_data.SetAction(FOLDERSREMOVED, picojson::value(array)); + m_callback_data.AddAndPost(PostPriority::LAST); } void FoldersChangeCallback::setFilter(tizen::AbstractFilterPtr filter) diff --git a/src/messaging/message_callback_user_data.cc b/src/messaging/message_callback_user_data.cc index e5842615..82d521f1 100755 --- a/src/messaging/message_callback_user_data.cc +++ b/src/messaging/message_callback_user_data.cc @@ -20,13 +20,10 @@ namespace extension { namespace messaging { -MessageCallbackUserData::MessageCallbackUserData(PostQueue& queue): - common::CallbackUserData(), - m_is_error(false), - queue_(queue), - m_account_id(-1) -{ - LoggerD("Entered"); +MessageCallbackUserData::MessageCallbackUserData(PostQueue& queue, long cid) : + CallbackUserData(queue, cid), + m_account_id(0) { + LoggerD("Entered"); } MessageCallbackUserData::~MessageCallbackUserData() { @@ -50,60 +47,5 @@ int MessageCallbackUserData::getAccountId() const return m_account_id; } -void MessageCallbackUserData::setError(const std::string& err_name, - const std::string& err_message) -{ - LoggerD("Entered"); - // keep only first error in chain - if (!m_is_error) { - LoggerD("Error has not been set yet"); - picojson::object& obj = m_json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR); - auto objData = picojson::object(); - - objData[JSON_ERROR_NAME] = picojson::value(err_name); - objData[JSON_ERROR_MESSAGE] = picojson::value(err_message); - - obj[JSON_DATA] = picojson::value(objData); - - m_is_error = true; - m_err_name = err_name; - m_err_message = err_message; - } -} - -void MessageCallbackUserData::setError(const common::PlatformResult& error) -{ - LoggerD("Entered"); - // keep only first error in chain - if (!m_is_error) { - LoggerD("Error has not been set yet"); - m_is_error = true; - picojson::object& obj = m_json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR); - auto obj_data = picojson::object(); - - obj_data[JSON_ERROR_CODE] = picojson::value(static_cast(error.error_code())); - obj_data[JSON_ERROR_MESSAGE] = picojson::value(error.message()); - - obj[JSON_DATA] = picojson::value(obj_data); - } -} - -bool MessageCallbackUserData::isError() const -{ - return m_is_error; -} - -std::string MessageCallbackUserData::getErrorName() const -{ - return m_err_name; -} - -std::string MessageCallbackUserData::getErrorMessage() const -{ - return m_err_message; -} - }//messaging }//extension diff --git a/src/messaging/message_callback_user_data.h b/src/messaging/message_callback_user_data.h index d6afe5cd..098c8cd9 100755 --- a/src/messaging/message_callback_user_data.h +++ b/src/messaging/message_callback_user_data.h @@ -17,11 +17,11 @@ #ifndef MESSAGING_MESSAGE_CALLBACK_USER_DATA_H_ #define MESSAGING_MESSAGE_CALLBACK_USER_DATA_H_ -#include "common/callback_user_data.h" #include "common/platform_result.h" #include #include +#include "messaging/callback_user_data.h" namespace extension { namespace messaging { @@ -29,9 +29,9 @@ namespace messaging { class Message; class PostQueue; -class MessageCallbackUserData: public common::CallbackUserData { +class MessageCallbackUserData : public CallbackUserData { public: - MessageCallbackUserData(PostQueue& queue); + MessageCallbackUserData(PostQueue& queue, long cid); virtual ~MessageCallbackUserData(); void setMessage(std::shared_ptr message); @@ -40,23 +40,9 @@ public: void setAccountId(int account_id); int getAccountId() const; - void setError(const std::string& err_name, - const std::string& err_message); - void setError(const common::PlatformResult& error); - bool isError() const; - 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 m_message; int m_account_id; - }; }//messaging diff --git a/src/messaging/message_service.cc b/src/messaging/message_service.cc index 0ee7c0e6..f420ccce 100755 --- a/src/messaging/message_service.cc +++ b/src/messaging/message_service.cc @@ -41,15 +41,12 @@ const char* JSON_SERVICE_NAME = "name"; //#################### 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), - queue_(queue) -{ - LoggerD("Entered"); - m_msg_recipients = std::vector(); +MessageRecipientsCallbackData::MessageRecipientsCallbackData(PostQueue& queue, long cid) : + CallbackUserData(queue, cid), + m_account_id(-1), + m_sim_index(TAPI_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN), + m_default_sim_index(TAPI_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN) { + LoggerD("Entered"); } MessageRecipientsCallbackData::~MessageRecipientsCallbackData() @@ -78,50 +75,6 @@ const std::vector& MessageRecipientsCallbackData::getMessageRecipie return m_msg_recipients; } -void MessageRecipientsCallbackData::setError(const std::string& err_name, - const std::string& err_message) -{ - LoggerD("Entered"); - // keep only first error in chain - if (!m_is_error) { - LoggerD("Error has not been set yet"); - m_is_error = true; - - picojson::object& obj = m_json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR); - auto obj_error = picojson::object(); - - obj_error[JSON_ERROR_NAME] = picojson::value(err_name); - obj_error[JSON_ERROR_MESSAGE] = picojson::value(err_message); - - obj[JSON_DATA] = picojson::value(obj_error); - } -} - -void MessageRecipientsCallbackData::setError(const PlatformResult& error) -{ - LoggerD("Entered"); - // keep only first error in chain - if (!m_is_error) { - LoggerD("Error has not been set yet"); - m_is_error = true; - - picojson::object& obj = m_json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR); - auto obj_error = picojson::object(); - - obj_error[JSON_ERROR_CODE] = picojson::value(static_cast(error.error_code())); - obj_error[JSON_ERROR_MESSAGE] = picojson::value(error.message()); - - obj[JSON_DATA] = picojson::value(obj_error); - } -} - -bool MessageRecipientsCallbackData::isError() const -{ - return m_is_error; -} - void MessageRecipientsCallbackData::setAccountId(int account_id){ m_account_id = account_id; } @@ -149,8 +102,7 @@ bool MessageRecipientsCallbackData::setSimIndex( sim_index--; if (sim_index >= sim_count || sim_index < -1) { LoggerE("Sim index out of bound %d : %d", sim_index, sim_count); - common::InvalidValuesException err("The index of sim is out of bound"); - this->setError(err.name(), err.message()); + this->SetError(PlatformResult(ErrorCode::INVALID_VALUES_ERR, "The index of sim is out of bound")); return false; } @@ -182,13 +134,10 @@ TelNetworkDefaultDataSubs_t MessageRecipientsCallbackData::getDefaultSimIndex() //#################### BaseMessageServiceCallbackData #################### -BaseMessageServiceCallbackData::BaseMessageServiceCallbackData(): -// CallbackUserData(globalCtx), - m_is_error(false), - m_op_handle(-1), - m_callback_id(-1) -{ - LoggerD("Entered"); +BaseMessageServiceCallbackData::BaseMessageServiceCallbackData(PostQueue& queue, long cid) : + CallbackUserData(queue, cid), + m_op_handle(-1) { + LoggerD("Entered"); } BaseMessageServiceCallbackData::~BaseMessageServiceCallbackData() @@ -196,49 +145,6 @@ BaseMessageServiceCallbackData::~BaseMessageServiceCallbackData() LoggerD("Entered"); } -void BaseMessageServiceCallbackData::setError(const std::string& err_name, - const std::string& err_message) -{ - LoggerD("Entered"); - // keep only first error in chain - if (!m_is_error) { - LoggerD("Error has not been set yet"); - m_is_error = true; - - picojson::object& obj = m_json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR); - - auto obj_error = picojson::object(); - obj_error[JSON_ERROR_NAME] = picojson::value(err_name); - obj_error[JSON_ERROR_MESSAGE] = picojson::value(err_message); - obj[JSON_DATA] = picojson::value(obj_error); - } -} - -void BaseMessageServiceCallbackData::setError(const PlatformResult& error) -{ - LoggerD("Entered"); - // keep only first error in chain - if (!m_is_error) { - LoggerD("Error has not been set yet"); - m_is_error = true; - - picojson::object& obj = m_json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR); - auto obj_error = picojson::object(); - - obj_error[JSON_ERROR_CODE] = picojson::value(static_cast(error.error_code())); - obj_error[JSON_ERROR_MESSAGE] = picojson::value(error.message()); - - obj[JSON_DATA] = picojson::value(obj_error); - } -} - -bool BaseMessageServiceCallbackData::isError() const -{ - return m_is_error; -} - void BaseMessageServiceCallbackData::setOperationHandle(const int op_handle) { m_op_handle = op_handle; @@ -249,24 +155,8 @@ int BaseMessageServiceCallbackData::getOperationHandle() const return m_op_handle; } -void BaseMessageServiceCallbackData::setCallbackId(const double callback_id) -{ - m_callback_id = callback_id; -} - -double BaseMessageServiceCallbackData::getCallbackId() const -{ - return m_callback_id; -} - //#################### MessageBodyCallbackData #################### -MessageBodyCallbackData::MessageBodyCallbackData(PostQueue& queue): - queue_(queue) -{ - LoggerD("Entered"); -} - MessageBodyCallbackData::~MessageBodyCallbackData() { LoggerD("Entered"); @@ -284,11 +174,10 @@ std::shared_ptr MessageBodyCallbackData::getMessage() const //#################### MessageAttachmentCallbackData #################### -MessageAttachmentCallbackData::MessageAttachmentCallbackData(PostQueue& queue): - m_nth(0), - queue_(queue) -{ - LoggerD("Entered"); +MessageAttachmentCallbackData::MessageAttachmentCallbackData(PostQueue& queue, long cid) : + BaseMessageServiceCallbackData(queue, cid), + m_nth(0) { + LoggerD("Entered"); } MessageAttachmentCallbackData::~MessageAttachmentCallbackData() @@ -320,15 +209,14 @@ int MessageAttachmentCallbackData::getNth() const //#################### SyncCallbackData #################### -SyncCallbackData::SyncCallbackData(PostQueue& queue): -// BaseMessageServiceCallbackData(globalCtx), - m_is_limit(false), - m_limit(0), - m_op_id(-1), - m_account_id(-1), - queue_(queue) -{ - LoggerD("Entered"); + +SyncCallbackData::SyncCallbackData(PostQueue& queue, long cid) : + BaseMessageServiceCallbackData(queue, cid), + m_is_limit(false), + m_limit(0), + m_op_id(-1), + m_account_id(-1) { + LoggerD("Entered"); } SyncCallbackData::~SyncCallbackData() @@ -374,12 +262,6 @@ int SyncCallbackData::getAccountId() const //#################### SyncFolderCallbackData #################### -SyncFolderCallbackData::SyncFolderCallbackData(PostQueue& queue): - SyncCallbackData(queue) -{ - LoggerD("Entered"); -} - SyncFolderCallbackData::~SyncFolderCallbackData() { LoggerD("Entered"); diff --git a/src/messaging/message_service.h b/src/messaging/message_service.h index 89523627..5aab33ed 100755 --- a/src/messaging/message_service.h +++ b/src/messaging/message_service.h @@ -21,8 +21,8 @@ #include #include +#include "messaging/callback_user_data.h" #include "common/picojson.h" -#include "common/callback_user_data.h" #include "common/platform_result.h" #include "messaging_util.h" @@ -39,9 +39,9 @@ enum MessageServiceAccountId MMS_ACCOUNT_ID = 102 }; -class MessageRecipientsCallbackData : public common::CallbackUserData { +class MessageRecipientsCallbackData : public CallbackUserData { public: - MessageRecipientsCallbackData(PostQueue& queue); + MessageRecipientsCallbackData(PostQueue& queue, long cid); virtual ~MessageRecipientsCallbackData(); void setMessage(std::shared_ptr message); @@ -50,11 +50,6 @@ public: void setMessageRecipients(const std::vector& msgRecipients); const std::vector& getMessageRecipients() const; - void setError(const std::string& err_name, - const std::string& err_message); - void setError(const common::PlatformResult& error); - bool isError() const; - void setAccountId(int account_id); int getAccountId() const; @@ -64,28 +59,19 @@ public: TelNetworkDefaultDataSubs_t getDefaultSimIndex() const; bool isSetSimIndex() const; - PostQueue& getQueue() { return queue_;}; - private: std::shared_ptr m_message; - bool m_is_error; std::vector m_msg_recipients; int m_account_id; TelNetworkDefaultDataSubs_t m_sim_index; TelNetworkDefaultDataSubs_t m_default_sim_index; - PostQueue& queue_; }; -class BaseMessageServiceCallbackData : public common::CallbackUserData { +class BaseMessageServiceCallbackData : public CallbackUserData { public: - BaseMessageServiceCallbackData(); + BaseMessageServiceCallbackData(PostQueue& queue, long cid); virtual ~BaseMessageServiceCallbackData(); - void setError(const std::string& err_name, - const std::string& err_message); - void setError(const common::PlatformResult& error); - bool isError() const; - /** * This handle is returned from various native API functions: * int email_sync_header(..., int *handle); @@ -96,33 +82,26 @@ public: */ void setOperationHandle(const int op_handle); int getOperationHandle() const; - void setCallbackId(const double callback_id); - double getCallbackId() const; protected: - bool m_is_error; - int m_op_handle; - double m_callback_id; }; class MessageBodyCallbackData : public BaseMessageServiceCallbackData { public: - MessageBodyCallbackData(PostQueue& queue); + using BaseMessageServiceCallbackData::BaseMessageServiceCallbackData; virtual ~MessageBodyCallbackData(); void setMessage(std::shared_ptr message); std::shared_ptr getMessage() const; - PostQueue& getQueue() { return queue_;}; private: std::shared_ptr m_message; - PostQueue& queue_; }; class MessageAttachmentCallbackData : public BaseMessageServiceCallbackData { public: - MessageAttachmentCallbackData(PostQueue& queue); + MessageAttachmentCallbackData(PostQueue& queue, long cid); virtual ~MessageAttachmentCallbackData(); void setMessageAttachment(std::shared_ptr messageAttachment); @@ -138,16 +117,14 @@ public: void setNth(const int nth); int getNth() const; - PostQueue& getQueue() { return queue_;}; private: std::shared_ptr m_message_attachment; int m_nth; - PostQueue& queue_; }; class SyncCallbackData : public BaseMessageServiceCallbackData { public: - SyncCallbackData(PostQueue& queue); + SyncCallbackData(PostQueue& queue, long cid); virtual ~SyncCallbackData(); void setLimit(const unsigned long limit); @@ -159,19 +136,17 @@ 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(PostQueue& queue); + using SyncCallbackData::SyncCallbackData; virtual ~SyncFolderCallbackData(); void setMessageFolder(std::shared_ptr message_folder); diff --git a/src/messaging/message_service_email.cc b/src/messaging/message_service_email.cc index 9c5ee866..cfee4b67 100755 --- a/src/messaging/message_service_email.cc +++ b/src/messaging/message_service_email.cc @@ -115,22 +115,12 @@ static gboolean loadMessageAttachmentTask(void* data) // if the attachment is already saved, then it doesn't need to load again. if (att->isFilePathSet() && att->isSaved()) { - auto json = callback->getJson(); - picojson::object& obj = json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - - if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - picojson::object args; - args[JSON_DATA_MESSAGE_ATTACHMENT] = MessagingUtil::messageAttachmentToJson(att); - obj[JSON_DATA] = picojson::value(args); - - callback->getQueue().resolve( - obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); - } else { - LoggerE("json is incorrect - missing required member"); - } + picojson::object args; + args[JSON_DATA_MESSAGE_ATTACHMENT] = MessagingUtil::messageAttachmentToJson(att); + + callback->SetSuccess(picojson::value(args)); + callback->Post(); + delete callback; callback = nullptr; } else { diff --git a/src/messaging/message_service_short_msg.cc b/src/messaging/message_service_short_msg.cc index 0c405f59..32b800f9 100755 --- a/src/messaging/message_service_short_msg.cc +++ b/src/messaging/message_service_short_msg.cc @@ -136,22 +136,12 @@ static gboolean loadMessageBodyTask(void* data) } std::shared_ptr body = callback->getMessage()->getBody(); - auto json = callback->getJson(); - picojson::object& obj = json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - - if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - picojson::object args; - args[JSON_DATA_MESSAGE_BODY] = MessagingUtil::messageBodyToJson(body); - obj[JSON_DATA] = picojson::value(args); - - callback->getQueue().resolve( - obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); - } else { - LoggerE("json is incorrect - missing required member"); - } + picojson::object args; + args[JSON_DATA_MESSAGE_BODY] = MessagingUtil::messageBodyToJson(body); + + callback->SetSuccess(picojson::value(args)); + callback->Post(); + return FALSE; } diff --git a/src/messaging/message_storage_short_msg.cc b/src/messaging/message_storage_short_msg.cc index 0c811182..2691a3eb 100755 --- a/src/messaging/message_storage_short_msg.cc +++ b/src/messaging/message_storage_short_msg.cc @@ -206,29 +206,17 @@ static gboolean findFoldersCB(void* data) FoldersCallbackData *callback = static_cast(data); - auto json = callback->getJson(); - picojson::object& obj = json->get(); + picojson::array array; + auto each = [&array](std::shared_ptr folder)->void { + array.push_back(MessagingUtil::folderToJson(folder)); + }; - if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - picojson::array array; - auto each = [&array](std::shared_ptr folder)->void { - array.push_back(MessagingUtil::folderToJson(folder)); - }; + auto folders = callback->getFolders(); + for_each(folders.begin(), folders.end(), each); - auto folders = callback->getFolders(); - for_each(folders.begin(), folders.end(), each); + callback->SetSuccess(picojson::value(array)); + callback->Post(); - obj[JSON_DATA] = picojson::value(array); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - - - callback->getQueue().resolve( - obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); - } else { - LoggerE("json is incorrect - missing required member"); - } delete callback; callback = NULL; diff --git a/src/messaging/messages_callback_user_data.cc b/src/messaging/messages_callback_user_data.cc index 92838f63..37cdf765 100755 --- a/src/messaging/messages_callback_user_data.cc +++ b/src/messaging/messages_callback_user_data.cc @@ -19,27 +19,10 @@ namespace extension { namespace messaging { -MessagesCallbackUserData::MessagesCallbackUserData(PostQueue& queue): - common::CallbackUserData(), - m_is_error(false), - m_service_type(MessageType::UNDEFINED), - queue_(queue) -{ - LoggerD("Entered"); -} - -MessagesCallbackUserData::MessagesCallbackUserData(long cid, PostQueue& queue, bool keep): - common::CallbackUserData(), - m_is_error(false), - m_service_type(MessageType::UNDEFINED), - queue_(queue) -{ - LoggerD("Entered"); - auto json = std::shared_ptr(new picojson::value(picojson::object())); - picojson::object& o = json->get(); - o[JSON_CALLBACK_ID] = picojson::value(static_cast(cid)); - o[JSON_CALLBACK_KEEP] = picojson::value(keep); - setJson(json); +MessagesCallbackUserData::MessagesCallbackUserData(PostQueue& queue, long cid, bool keep /* = false*/) : + CallbackUserData(queue, cid, keep), + m_service_type(UNDEFINED) { + LoggerD("Entered"); } MessagesCallbackUserData::~MessagesCallbackUserData() { @@ -57,58 +40,6 @@ std::vector> MessagesCallbackUserData::getMessages() co return m_messages; } -void MessagesCallbackUserData::setError(const std::string& err_name, - const std::string& err_message) -{ - LoggerD("Entered"); - // keep only first error in chain - if (!m_is_error) { - LoggerD("Error has not been set yet"); - picojson::object& obj = m_json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR); - auto objData = picojson::object(); - - objData[JSON_ERROR_NAME] = picojson::value(err_name); - objData[JSON_ERROR_MESSAGE] = picojson::value(err_message); - - obj[JSON_DATA] = picojson::value(objData); - - m_is_error = true; - m_err_name = err_name; - m_err_message = err_message; - } -} - -void MessagesCallbackUserData::SetError(const common::PlatformResult& error) -{ - // keep only first error in chain - if (!m_is_error) { - LoggerD("Error has not been set yet"); - m_is_error = true; - picojson::object& obj = m_json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR); - auto obj_data = picojson::object(); - obj_data[JSON_ERROR_CODE] = picojson::value(static_cast(error.error_code())); - obj_data[JSON_ERROR_MESSAGE] = picojson::value(error.message()); - obj[JSON_DATA] = picojson::value(obj_data); - } -} - -bool MessagesCallbackUserData::isError() const -{ - return m_is_error; -} - -std::string MessagesCallbackUserData::getErrorName() const -{ - return m_err_name; -} - -std::string MessagesCallbackUserData::getErrorMessage() const -{ - return m_err_message; -} - void MessagesCallbackUserData::setMessageServiceType(MessageType m_msg_type) { m_service_type = m_msg_type; diff --git a/src/messaging/messages_callback_user_data.h b/src/messaging/messages_callback_user_data.h index d1ee4ee3..4efa84f0 100755 --- a/src/messaging/messages_callback_user_data.h +++ b/src/messaging/messages_callback_user_data.h @@ -17,12 +17,12 @@ #ifndef MESSAGING_MESSAGES_CALLBACK_USER_DATA_H_ #define MESSAGING_MESSAGES_CALLBACK_USER_DATA_H_ -#include "common/callback_user_data.h" #include "common/platform_result.h" #include #include +#include "messaging/callback_user_data.h" #include "messaging_util.h" namespace extension { @@ -30,34 +30,20 @@ namespace messaging { class Message; -class MessagesCallbackUserData: public common::CallbackUserData { +class MessagesCallbackUserData : public CallbackUserData { public: - MessagesCallbackUserData(PostQueue& queue); - MessagesCallbackUserData(long cid, PostQueue& queue, bool keep = false); + MessagesCallbackUserData(PostQueue& queue, long cid, bool keep = false); virtual ~MessagesCallbackUserData(); void addMessage(std::shared_ptr msg); std::vector> getMessages() const; - void setError(const std::string& err_name, - const std::string& err_message); - void SetError(const common::PlatformResult& error); - bool isError() const; - std::string getErrorName() const; - std::string getErrorMessage() const; - void setMessageServiceType(MessageType m_msg_type); MessageType getMessageServiceType() const; - PostQueue& getQueue() { return queue_;}; - private: std::vector> m_messages; - bool m_is_error; - std::string m_err_name; - std::string m_err_message; MessageType m_service_type; - PostQueue& queue_; }; }//messaging diff --git a/src/messaging/messages_change_callback.cc b/src/messaging/messages_change_callback.cc index 19bdec54..e2fcdb6e 100755 --- a/src/messaging/messages_change_callback.cc +++ b/src/messaging/messages_change_callback.cc @@ -53,7 +53,7 @@ MessagesChangeCallback::MessagesChangeCallback( int service_id, MessageType service_type, PostQueue& queue) : - m_callback_data(cid, queue, true), + m_callback_data(queue, cid, true), m_service_id(service_id), m_msg_type(service_type), m_is_act(true) @@ -136,17 +136,8 @@ void MessagesChangeCallback::added(const MessagePtrVector& msgs) LoggerD("Calling:%s with:%d added messages", MESSAGESADDED, filtered_msgs.size()); - auto json = m_callback_data.getJson(); - picojson::object& obj = json->get(); - if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - obj[JSON_ACTION] = picojson::value(MESSAGESADDED); - obj[JSON_DATA] = picojson::value(array); - - m_callback_data.getQueue().addAndResolve(obj.at( - JSON_CALLBACK_ID).get(), PostPriority::MEDIUM, json->serialize()); - } else { - LoggerE("json is incorrect - missing required member"); - } + m_callback_data.SetAction(MESSAGESADDED, picojson::value(array)); + m_callback_data.AddAndPost(PostPriority::MEDIUM); } void MessagesChangeCallback::updated(const MessagePtrVector& msgs) @@ -173,17 +164,8 @@ void MessagesChangeCallback::updated(const MessagePtrVector& msgs) LoggerD("Calling:%s with:%d updated messages", MESSAGESUPDATED, filtered_msgs.size()); - auto json = m_callback_data.getJson(); - picojson::object& obj = json->get(); - if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - obj[JSON_ACTION] = picojson::value(MESSAGESUPDATED); - obj[JSON_DATA] = picojson::value(array); - - m_callback_data.getQueue().addAndResolve(obj.at( - JSON_CALLBACK_ID).get(), PostPriority::LOW, json->serialize()); - } else { - LoggerE("json is incorrect - missing required member"); - } + m_callback_data.SetAction(MESSAGESUPDATED, picojson::value(array)); + m_callback_data.AddAndPost(PostPriority::LOW); } void MessagesChangeCallback::removed(const MessagePtrVector& msgs) @@ -211,18 +193,8 @@ void MessagesChangeCallback::removed(const MessagePtrVector& msgs) LoggerD("Calling:%s with:%d removed messages", MESSAGESREMOVED, filtered_msgs.size()); - auto json = m_callback_data.getJson(); - picojson::object& obj = json->get(); - if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is()) { - obj[JSON_ACTION] = picojson::value(MESSAGESREMOVED); - LoggerD("MESSAGES: %s", picojson::value(array).serialize().c_str()); - obj[JSON_DATA] = picojson::value(array); - - m_callback_data.getQueue().addAndResolve(obj.at( - JSON_CALLBACK_ID).get(), PostPriority::LAST, json->serialize()); - } else { - LoggerE("json is incorrect - missing required member"); - } + m_callback_data.SetAction(MESSAGESREMOVED, picojson::value(array)); + m_callback_data.AddAndPost(PostPriority::LAST); } void MessagesChangeCallback::setFilter(tizen::AbstractFilterPtr filter) diff --git a/src/messaging/messaging.gyp b/src/messaging/messaging.gyp index a92e4340..1847b47b 100644 --- a/src/messaging/messaging.gyp +++ b/src/messaging/messaging.gyp @@ -26,6 +26,8 @@ }, 'sources': [ 'messaging_api.js', + 'callback_user_data.cc', + 'callback_user_data.h', 'email_manager.cc', 'email_manager.h', 'messaging_instance.cc', diff --git a/src/messaging/messaging_instance.cc b/src/messaging/messaging_instance.cc index 3f9053e9..f07657be 100755 --- a/src/messaging/messaging_instance.cc +++ b/src/messaging/messaging_instance.cc @@ -215,11 +215,10 @@ void MessagingInstance::MessageServiceSendMessage(const picojson::value& args, POST_AND_RETURN(ret, json, obj, JSON_CALLBACK_ERROR) } - MessageRecipientsCallbackData* callback = new MessageRecipientsCallbackData(queue_); + MessageRecipientsCallbackData* callback = new MessageRecipientsCallbackData(queue_, callbackId); long simIndex = 0; int serviceId = 0; - callback->setJson(json); callback->setMessage(message); serviceId = getServiceIdFromJSON(data); callback->setAccountId(serviceId); @@ -233,7 +232,7 @@ void MessagingInstance::MessageServiceSendMessage(const picojson::value& args, json, obj, JSON_CALLBACK_ERROR) } - queue_.add(static_cast(callbackId), PostPriority::HIGH); + callback->AddToQueue(); auto service = manager_.getMessageService(serviceId); ret = service->sendMessage(callback); @@ -268,12 +267,11 @@ void MessagingInstance::MessageServiceLoadMessageBody(const picojson::value& arg POST_AND_RETURN(ret, json, obj, JSON_CALLBACK_ERROR) } - MessageBodyCallbackData* callback = new MessageBodyCallbackData(queue_); + MessageBodyCallbackData* callback = new MessageBodyCallbackData(queue_, callbackId); - callback->setJson(json); callback->setMessage(message); - queue_.add(static_cast(callbackId), PostPriority::HIGH); + callback->AddToQueue(); auto service = manager_.getMessageService(getServiceIdFromJSON(data)); ret = service->loadMessageBody(callback); if (ret.IsError()) { @@ -296,18 +294,16 @@ 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(); - MessageAttachmentCallbackData* callback = new MessageAttachmentCallbackData(queue_); + MessageAttachmentCallbackData* callback = new MessageAttachmentCallbackData(queue_, callbackId); callback->setMessageAttachment(MessagingUtil::jsonToMessageAttachment(attachment)); - auto json = std::shared_ptr(new picojson::value(picojson::object())); - picojson::object& obj = json->get(); - obj[JSON_CALLBACK_ID] = picojson::value(callbackId); - callback->setJson(json); - - queue_.add(static_cast(callbackId), PostPriority::HIGH); + callback->AddToQueue(); auto service = manager_.getMessageService(getServiceIdFromJSON(data)); const auto result = service->loadMessageAttachment(callback); if (result.IsError()) { + auto json = std::shared_ptr(new picojson::value(picojson::object())); + picojson::object& obj = json->get(); + obj[JSON_CALLBACK_ID] = picojson::value(callbackId); POST_AND_RETURN(result, json, obj, JSON_CALLBACK_ERROR) } } @@ -341,16 +337,11 @@ void MessagingInstance::MessageServiceSync(const picojson::value& args, limit = static_cast(v_limit.get()); } - auto json = std::shared_ptr(new picojson::value(picojson::object())); - picojson::object& obj = json->get(); - obj[JSON_CALLBACK_ID] = picojson::value(callbackId); - - SyncCallbackData *callback = new SyncCallbackData(queue_); - callback->setJson(json); + SyncCallbackData *callback = new SyncCallbackData(queue_, callbackId); callback->setAccountId(id); callback->setLimit(limit); - queue_.add(static_cast(callbackId), PostPriority::HIGH); + callback->AddToQueue(); long op_id = -1; const auto result = manager_.getMessageService(id)->sync(callback, &op_id); @@ -393,17 +384,12 @@ void MessagingInstance::MessageServiceSyncFolder(const picojson::value& args, limit = static_cast(v_limit.get()); } - auto json = std::shared_ptr(new picojson::value(picojson::object())); - picojson::object& obj = json->get(); - obj[JSON_CALLBACK_ID] = picojson::value(callbackId); - - SyncFolderCallbackData *callback = new SyncFolderCallbackData(queue_); - callback->setJson(json); + SyncFolderCallbackData *callback = new SyncFolderCallbackData(queue_, callbackId); callback->setAccountId(id); callback->setMessageFolder(MessagingUtil::jsonToMessageFolder(v_folder)); callback->setLimit(limit); - queue_.add(static_cast(callbackId), PostPriority::HIGH); + callback->AddToQueue(); long op_id = -1; const auto result = manager_.getMessageService(id)->syncFolder(callback, &op_id); @@ -483,15 +469,13 @@ void MessagingInstance::MessageStorageAddDraft(const picojson::value& args, POST_AND_RETURN(ret, json, obj, JSON_CALLBACK_ERROR) } - MessageCallbackUserData* callback = new MessageCallbackUserData(queue_); + MessageCallbackUserData* callback = new MessageCallbackUserData(queue_, callbackId); callback->setMessage(message); int serviceId = getServiceIdFromJSON(data); callback->setAccountId(serviceId); - callback->setJson(json); - - queue_.add(static_cast(callbackId), PostPriority::HIGH); + callback->AddToQueue(); auto service = manager_.getMessageService(serviceId); service->getMsgStorage()->addDraftMessage(callback); } @@ -530,15 +514,14 @@ void MessagingInstance::MessageStorageFindMessages(const picojson::value& args, int serviceId = getServiceIdFromJSON(data); auto storage = manager_.getMessageService(serviceId)->getMsgStorage(); - FindMsgCallbackUserData* callback = new FindMsgCallbackUserData(queue_); + FindMsgCallbackUserData* callback = new FindMsgCallbackUserData(queue_, callbackId); callback->setFilter(filter); callback->setLimit(limit); callback->setOffset(offset); callback->setAccountId(serviceId); callback->setSortMode(sortMode); - callback->setJson(json); - queue_.add(static_cast(callbackId), PostPriority::HIGH); + callback->AddToQueue(); storage->findMessages(callback); } @@ -557,7 +540,7 @@ void MessagingInstance::MessageStorageRemoveMessages(const picojson::value& args picojson::array messages = data.at(REMOVE_MESSAGES_ARGS_MESSAGES).get(); const double callbackId = args.get(JSON_CALLBACK_ID).get(); - MessagesCallbackUserData* callback = new MessagesCallbackUserData(queue_); + MessagesCallbackUserData* callback = new MessagesCallbackUserData(queue_, callbackId); auto each = [callback] (picojson::value& v)->void { std::shared_ptr message; @@ -569,14 +552,9 @@ void MessagingInstance::MessageStorageRemoveMessages(const picojson::value& args for_each(messages.begin(), messages.end(), each); - auto json = std::shared_ptr(new picojson::value(picojson::object())); - picojson::object& obj = json->get(); - obj[JSON_CALLBACK_ID] = picojson::value(callbackId); - callback->setJson(json); - auto service = manager_.getMessageService(getServiceIdFromJSON(data)); - queue_.add(static_cast(callbackId), PostPriority::HIGH); + callback->AddToQueue(); service->getMsgStorage()->removeMessages(callback); } @@ -596,7 +574,7 @@ void MessagingInstance::MessageStorageUpdateMessages(const picojson::value& args auto pico_array = pico_messages.get(); const double callbackId = args.get(JSON_CALLBACK_ID).get(); - auto callback = new MessagesCallbackUserData(queue_); + auto callback = new MessagesCallbackUserData(queue_, callbackId); std::for_each(pico_array.begin(), pico_array.end(), [&callback](picojson::value& v)->void { std::shared_ptr message; @@ -606,14 +584,9 @@ void MessagingInstance::MessageStorageUpdateMessages(const picojson::value& args } }); - auto json = std::shared_ptr(new picojson::value(picojson::object())); - picojson::object& obj = json->get(); - obj[JSON_CALLBACK_ID] = picojson::value(callbackId); - callback->setJson(json); - auto service = manager_.getMessageService(getServiceIdFromJSON(data)); - queue_.add(static_cast(callbackId), PostPriority::HIGH); + callback->AddToQueue(); service->getMsgStorage()->updateMessages(callback); } @@ -648,15 +621,14 @@ void MessagingInstance::MessageStorageFindConversations(const picojson::value& a int serviceId = getServiceIdFromJSON(data); - ConversationCallbackData* callback = new ConversationCallbackData(queue_); + ConversationCallbackData* callback = new ConversationCallbackData(queue_, callbackId); callback->setFilter(filter); callback->setLimit(limit); callback->setOffset(offset); callback->setAccountId(serviceId); callback->setSortMode(sortMode); - callback->setJson(json); - queue_.add(static_cast(callbackId), PostPriority::HIGH); + callback->AddToQueue(); auto storage = manager_.getMessageService(serviceId)->getMsgStorage(); storage->findConversations(callback); } @@ -680,7 +652,7 @@ void MessagingInstance::MessageStorageRemoveConversations(const picojson::value& picojson::object& obj = json->get(); obj[JSON_CALLBACK_ID] = picojson::value(callbackId); - ConversationCallbackData* callback = new ConversationCallbackData(queue_); + ConversationCallbackData* callback = new ConversationCallbackData(queue_, callbackId); PlatformResult ret(ErrorCode::NO_ERROR); for (auto it = conversations.begin(); it != conversations.end(); ++it) { @@ -693,11 +665,9 @@ void MessagingInstance::MessageStorageRemoveConversations(const picojson::value& callback->addConversation(conversation); } - callback->setJson(json); - auto service = manager_.getMessageService(getServiceIdFromJSON(data)); - queue_.add(static_cast(callbackId), PostPriority::HIGH); + callback->AddToQueue(); service->getMsgStorage()->removeConversations(callback); } @@ -725,11 +695,10 @@ void MessagingInstance::MessageStorageFindFolders(const picojson::value& args, POST_AND_RETURN(ret, json, obj, JSON_CALLBACK_ERROR) } - FoldersCallbackData* callback = new FoldersCallbackData(queue_); + FoldersCallbackData* callback = new FoldersCallbackData(queue_, callbackId); callback->setFilter(filter); - callback->setJson(json); - queue_.add(static_cast(callbackId), PostPriority::HIGH); + callback->AddToQueue(); auto service = manager_.getMessageService(getServiceIdFromJSON(data)); service->getMsgStorage()->findFolders(callback); } diff --git a/src/messaging/short_message_manager.cc b/src/messaging/short_message_manager.cc index 88e040a1..918eb661 100755 --- a/src/messaging/short_message_manager.cc +++ b/src/messaging/short_message_manager.cc @@ -58,11 +58,7 @@ static gboolean sendMessageCompleteCB(void* data) return false; } - if (callback->isError()) { - callback->getQueue().resolve( - callback->getJson()->get().at(JSON_CALLBACK_ID).get(), - callback->getJson()->serialize() - ); + if (callback->IsError()) { callback->getMessage()->setMessageStatus(MessageStatus::STATUS_FAILED); } else { @@ -70,10 +66,6 @@ static gboolean sendMessageCompleteCB(void* data) LoggerD("Calling success callback with: %d recipients", message->getTO().size()); - auto json = callback->getJson(); - picojson::object& obj = json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - std::vector recipients; auto addToRecipients = [&recipients](std::string& e)->void { recipients.push_back(picojson::value(e)); @@ -85,15 +77,13 @@ static gboolean sendMessageCompleteCB(void* data) picojson::object data; data[JSON_DATA_RECIPIENTS] = picojson::value(recipients); data[JSON_DATA_MESSAGE] = MessagingUtil::messageToJson(message); - obj[JSON_DATA] = picojson::value(data); - callback->getQueue().resolve( - obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); + callback->SetSuccess(picojson::value(data)); callback->getMessage()->setMessageStatus(MessageStatus::STATUS_SENT); } + callback->Post(); + delete callback; callback = NULL; @@ -109,31 +99,21 @@ static gboolean addDraftMessageCompleteCB(void *data) return FALSE; } - if (callback->isError()) { + if (callback->IsError()) { LoggerD("Calling error callback"); - callback->getQueue().resolve( - callback->getJson()->get().at(JSON_CALLBACK_ID).get(), - callback->getJson()->serialize() - ); callback->getMessage()->setMessageStatus(MessageStatus::STATUS_FAILED); } else { LoggerD("Calling success callback"); - auto json = callback->getJson(); - picojson::object& obj = json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - picojson::object args; args[JSON_DATA_MESSAGE] = MessagingUtil::messageToJson(callback->getMessage()); - obj[JSON_DATA] = picojson::value(args); - callback->getQueue().resolve( - obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); + callback->SetSuccess(picojson::value(args)); } + callback->Post(); + delete callback; callback = NULL; @@ -364,7 +344,7 @@ PlatformResult ShortMsgManager::sendMessage(MessageRecipientsCallbackData* callb if (!platform_result) { LoggerE("Message send failed"); - callback->setError(platform_result); + callback->SetError(platform_result); if (!g_idle_add(sendMessageCompleteCB, static_cast(callback))) { LoggerE("g_idle addition failed"); @@ -410,8 +390,7 @@ void ShortMsgManager::sendStatusCallback(msg_struct_t sent_status) callback->getMessage()->getId(), (MSG_NETWORK_SEND_FAIL == status ? "FAIL" : "TIMEOUT")); - common::UnknownException e("Send message failed"); - callback->setError(e.name(), e.message()); + callback->SetError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Send message failed")); } if (!g_idle_add(sendMessageCompleteCB, static_cast(callback))) { @@ -742,7 +721,7 @@ void ShortMsgManager::addDraftMessage(MessageCallbackUserData* callback) PlatformResult ret = addDraftMessagePlatform(message); if (ret.IsError()) { LoggerE("%d (%s)", ret.error_code(), ret.message().c_str()); - callback->setError(ret); + callback->SetError(ret); } } @@ -777,7 +756,7 @@ void ShortMsgManager::removeMessages(MessagesCallbackUserData* callback) } } - if (!callback->isError()) { + if (!callback->IsError()) { for (auto it = messages.begin() ; it != messages.end(); ++it) { const int id = (*it)->getId(); @@ -802,25 +781,15 @@ void ShortMsgManager::removeMessages(MessagesCallbackUserData* callback) } } - if (callback->isError()) { + if (callback->IsError()) { LoggerD("Calling error callback"); - callback->getQueue().resolve( - callback->getJson()->get().at(JSON_CALLBACK_ID).get(), - callback->getJson()->serialize() - ); } else { LoggerD("Calling success callback"); - - auto json = callback->getJson(); - picojson::object& obj = json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - - callback->getQueue().resolve( - obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); + callback->SetSuccess(); } + callback->Post(); + delete callback; callback = NULL; } @@ -847,7 +816,7 @@ void ShortMsgManager::updateMessages(MessagesCallbackUserData* callback) break; } } - if (!callback->isError()) { + if (!callback->IsError()) { for (auto it = messages.begin() ; it != messages.end(); ++it) { LoggerD("updating Message(%p) msg_id:%d", (*it).get(), (*it)->getId()); @@ -876,19 +845,11 @@ void ShortMsgManager::updateMessages(MessagesCallbackUserData* callback) } } - if (callback->isError()) { + if (callback->IsError()) { LoggerD("Calling error callback"); - - callback->getQueue().resolve( - callback->getJson()->get().at(JSON_CALLBACK_ID).get(), - callback->getJson()->serialize() - ); } else { LoggerD("Calling success callback"); - auto json = callback->getJson(); - picojson::object& obj = json->get(); - auto messages = callback->getMessages(); picojson::array array; auto each = [&array] (std::shared_ptr m)->void { @@ -897,16 +858,11 @@ void ShortMsgManager::updateMessages(MessagesCallbackUserData* callback) for_each(messages.begin(), messages.end(), each); - obj[JSON_DATA] = picojson::value(array); - - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - - callback->getQueue().resolve( - obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); + callback->SetSuccess(picojson::value(array)); } + callback->Post(); + delete callback; callback = NULL; } @@ -982,7 +938,7 @@ void ShortMsgManager::findMessages(FindMsgCallbackUserData* callback) callback->SetError(ret); } - if (!callback->isError()) { + if (!callback->IsError()) { int msgListCount = messagesIds.size(); LoggerD("Found %d messages", msgListCount); @@ -1014,7 +970,7 @@ void ShortMsgManager::findMessages(FindMsgCallbackUserData* callback) callback->SetError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Cannot get platform Message structure")); break; } - if (!callback->isError()) { + if (!callback->IsError()) { callback->addMessage(std::shared_ptr{message}); LoggerD("Created message with id %d:", messagesIds[i]); } @@ -1022,34 +978,23 @@ void ShortMsgManager::findMessages(FindMsgCallbackUserData* callback) } } - if (callback->isError()) { + if (callback->IsError()) { LoggerD("Calling error callback"); - callback->getQueue().resolve( - callback->getJson()->get().at(JSON_CALLBACK_ID).get(), - callback->getJson()->serialize() - ); } else { LoggerD("Calling success callback with %d messages:", callback->getMessages().size()); - auto json = callback->getJson(); - picojson::object& obj = json->get(); - std::vector response; auto messages = callback->getMessages(); std::for_each(messages.begin(), messages.end(), [&response](MessagePtr &message){ response.push_back(MessagingUtil::messageToJson(message)); }); - obj[JSON_DATA] = picojson::value(response); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - - callback->getQueue().resolve( - obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); + callback->SetSuccess(picojson::value(response)); } + callback->Post(); + delete callback; callback = NULL; } @@ -1073,7 +1018,7 @@ void ShortMsgManager::findConversations(ConversationCallbackData* callback) callback->SetError(ret); } - if (!callback->isError()) { + if (!callback->IsError()) { int convListCount = conversationsIds.size(); LoggerD("Found %d conversations", convListCount); @@ -1090,16 +1035,10 @@ void ShortMsgManager::findConversations(ConversationCallbackData* callback) } } - if (callback->isError()) { + if (callback->IsError()) { LoggerD("Calling error callback"); - callback->getQueue().resolve( - callback->getJson()->get().at(JSON_CALLBACK_ID).get(), - callback->getJson()->serialize() - ); } else { LoggerD("Calling success callback"); - auto json = callback->getJson(); - picojson::object& obj = json->get(); std::vector response; auto conversations = callback->getConversations(); @@ -1108,15 +1047,12 @@ void ShortMsgManager::findConversations(ConversationCallbackData* callback) response.push_back(MessagingUtil::conversationToJson(conversation)); } ); - obj[JSON_DATA] = picojson::value(response); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - callback->getQueue().resolve( - obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); + callback->SetSuccess(picojson::value(response)); } + callback->Post(); + delete callback; callback = NULL; } @@ -1147,7 +1083,7 @@ void ShortMsgManager::removeConversations(ConversationCallbackData* callback) callback->SetError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Error while creatng message handle")); } - if (!callback->isError()) { + if (!callback->IsError()) { for(auto it = conversations.begin() ; it != conversations.end(); ++it) { if((*it)->getType() != type) { LoggerE("Invalid message type"); @@ -1158,7 +1094,7 @@ void ShortMsgManager::removeConversations(ConversationCallbackData* callback) } } - if (!callback->isError()) { + if (!callback->IsError()) { if(MessageType::SMS == type) { msg_id_conv_id_map = &m_sms_removed_msg_id_conv_id_map; conv_id_object_map = &m_sms_removed_conv_id_object_map; @@ -1171,7 +1107,7 @@ void ShortMsgManager::removeConversations(ConversationCallbackData* callback) } } - if (!callback->isError()) { + if (!callback->IsError()) { int conv_index = 0; for (auto it = conversations.begin() ; it != conversations.end(); ++it, ++conv_index) { @@ -1222,32 +1158,23 @@ void ShortMsgManager::removeConversations(ConversationCallbackData* callback) } } - if (!callback->isError()) { + if (!callback->IsError()) { error = msg_close_msg_handle(&handle); if (MSG_SUCCESS != error) { LoggerW("Cannot close message handle: %d", error); } } - if (callback->isError()) { + if (callback->IsError()) { LoggerD("Calling error callback"); - callback->getQueue().resolve( - callback->getJson()->get().at(JSON_CALLBACK_ID).get(), - callback->getJson()->serialize() - ); } else { LoggerD("Calling success callback"); - auto json = callback->getJson(); - picojson::object& obj = json->get(); - obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); - - callback->getQueue().resolve( - obj.at(JSON_CALLBACK_ID).get(), - json->serialize() - ); + callback->SetSuccess(); } + callback->Post(); + delete callback; callback = NULL; } -- 2.34.1