callback->getMessageAttachment());
obj[JSON_DATA] = picojson::value(args);
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
if (ret.IsError()) {
LoggerE("Exception in signal callback");
callback->setError(ret);
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
callback->getJson()->serialize()
);
callback->getMessage()->getBody());
obj[JSON_DATA] = picojson::value(args);
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
if (ret.IsError()) {
callback->setError(ret);
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
callback->getJson()->serialize()
);
return;
}
- common::CallbackUserData* callback = NULL;
+ SyncCallbackData* callback = NULL;
CallbackMap::iterator callback_it;
PlatformResult ret = findSyncCallbackByOpHandle(op_handle, &callback_it);
return;
}
- callback = callback_it->second;
+ callback = dynamic_cast<SyncCallbackData*>(callback_it->second);
if (!callback) {
LoggerE("Callback is null");
return;
case NOTI_DOWNLOAD_FINISH:
LoggerD("Sync finished!");
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
obj.at(JSON_CALLBACK_ID).get<double>(),
response->serialize()
);
LoggerD("Sync failed!");
common::UnknownException err("Sync failed!");
callback->setError(err.name(), err.message());
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
obj.at(JSON_CALLBACK_ID).get<double>(),
response->serialize()
);
namespace extension {
namespace messaging {
-ConversationCallbackData::ConversationCallbackData():
+ConversationCallbackData::ConversationCallbackData(PostQueue& queue):
m_filter(),
m_sort(),
m_limit(0),
m_offset(0),
m_is_error(false),
m_account_id(0),
- m_service_type(UNDEFINED)
+ m_service_type(UNDEFINED),
+ queue_(queue)
{
}
-ConversationCallbackData::ConversationCallbackData(long cid, bool keep):
+ConversationCallbackData::ConversationCallbackData(long cid, PostQueue& queue, bool keep):
m_filter(),
m_sort(),
m_limit(0),
m_offset(0),
m_is_error(false),
m_account_id(0),
- m_service_type(UNDEFINED)
+ m_service_type(UNDEFINED),
+ queue_(queue)
{
auto json = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
picojson::object& o = json->get<picojson::object>();
class ConversationCallbackData: public common::CallbackUserData {
public:
- ConversationCallbackData();
- ConversationCallbackData(long cid, bool keep = false);
+ ConversationCallbackData(PostQueue& queue);
+ ConversationCallbackData(long cid, PostQueue& queue, bool keep = false);
virtual ~ConversationCallbackData();
void setFilter(AbstractFilterPtr filter);
long getLimit() const;
long getOffset() const;
+ PostQueue& getQueue() { return queue_;};
private:
AbstractFilterPtr m_filter;
SortModePtr m_sort;
std::vector<std::shared_ptr<MessageConversation>> m_conversations;
int m_account_id;
MessageType m_service_type;
+ PostQueue& queue_;
};
}//messaging
ConversationsChangeCallback::ConversationsChangeCallback(
long cid,
int service_id,
- MessageType service_type) :
- m_callback_data(cid, true),
+ MessageType service_type,
+ PostQueue& queue) :
+ m_callback_data(cid, queue, true),
m_id(service_id),
m_msg_type(service_type),
m_is_act(true)
obj[JSON_ACTION] = picojson::value(CONVERSATIONSADDED);
obj[JSON_DATA] = picojson::value(array);
- PostQueue::getInstance().addAndResolve(obj.at(
+ m_callback_data.getQueue().addAndResolve(obj.at(
JSON_CALLBACK_ID).get<double>(), PostPriority::MEDIUM, json->serialize());
}
obj[JSON_ACTION] = picojson::value(CONVERSATIONSUPDATED);
obj[JSON_DATA] = picojson::value(array);
- PostQueue::getInstance().addAndResolve(obj.at(
+ m_callback_data.getQueue().addAndResolve(obj.at(
JSON_CALLBACK_ID).get<double>(), PostPriority::LOW, json->serialize());
}
obj[JSON_ACTION] = picojson::value(CONVERSATIONSREMOVED);
obj[JSON_DATA] = picojson::value(array);
- PostQueue::getInstance().addAndResolve(obj.at(
+ m_callback_data.getQueue().addAndResolve(obj.at(
JSON_CALLBACK_ID).get<double>(), PostPriority::LAST, json->serialize());
}
ConversationsChangeCallback(
long cid,
int service_id,
- MessageType service_type);
+ MessageType service_type,
+ PostQueue& queue);
virtual ~ConversationsChangeCallback();
void added(const ConversationPtrVector& conversations);
if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
if (callback->isError()) {
LoggerD("Calling error callback");
- PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+ callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
callback->getMessage()->setMessageStatus(MessageStatus::STATUS_FAILED);
args[JSON_DATA_MESSAGE] = MessagingUtil::messageToJson(callback->getMessage());
obj[JSON_DATA] = picojson::value(args);
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
picojson::object& obj = json->get<picojson::object>();
if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
if (callback->isError()) {
- PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+ callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
callback->getMessage()->setMessageStatus(MessageStatus::STATUS_FAILED);
data[JSON_DATA_MESSAGE] = MessagingUtil::messageToJson(callback->getMessage());
obj[JSON_DATA] = picojson::value(data);
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
LoggerE("Unknown error %d", error_code);
common::UnknownException ex("Failed to send message");
callback->setError(ex.name(),ex.message());
+ break;
}
} else if (NOTI_SEND_FINISH == status) {
LoggerD("Message sent successfully");
if (response->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
callback->setError(PlatformResult(ErrorCode::ABORT_ERR, "Sync aborted by user"));
- PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+ callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
response->serialize());
m_proxy_sync->removeCallback(op_id);
} else {
if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
if (callback->isError()) {
LoggerD("Calling error callback");
- PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+ callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
} else {
LoggerD("Calling success callback");
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
- PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+ callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
}
if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
if (callback->isError()) {
LoggerD("Calling error callback");
- PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+ callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize());
} else {
LoggerD("Calling success callback");
}
obj[JSON_DATA] = picojson::value(array);
- PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+ callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
}
if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
if (callback->isError()) {
LoggerD("Calling error callback");
- PostQueue::getInstance().resolve( obj.at(JSON_CALLBACK_ID).get<double>(),
+ callback->getQueue().resolve( obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize());
} else {
LoggerD("Calling success callback");
obj[JSON_DATA] = picojson::value(response);
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
- PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+ callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize());
}
} else {
if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
if (callback->isError()) {
LoggerD("Calling error callback");
- PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+ callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize());
} else {
LoggerD("Calling success callback");
obj[JSON_DATA] = picojson::value(response);
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
- PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+ callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
}
if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
if (callback->isError()) {
LoggerD("Calling error callback");
- PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+ callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize());
} else {
LoggerD("Calling success callback");
obj[JSON_DATA] = picojson::value(response);
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
- PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+ callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize());
}
} else {
if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
if (callback->isError()) {
LoggerD("Calling error callback");
- PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+ callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize());
} else {
LoggerD("Calling success callback");
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
- PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+ callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize());
}
} else {
namespace extension {
namespace messaging {
-FindMsgCallbackUserData::FindMsgCallbackUserData():
+FindMsgCallbackUserData::FindMsgCallbackUserData(PostQueue& queue):
CallbackUserData(),
m_limit(0),
m_offset(0),
m_is_error(false),
m_account_id(0),
- m_service_type(UNDEFINED)
+ m_service_type(UNDEFINED),
+ queue_(queue)
{
}
class FindMsgCallbackUserData: public common::CallbackUserData {
public:
- FindMsgCallbackUserData();
+ FindMsgCallbackUserData(PostQueue& queue);
virtual ~FindMsgCallbackUserData();
void setFilter(AbstractFilterPtr filter);
long getLimit() const;
long getOffset() const;
+ PostQueue& getQueue() { return queue_;};
private:
AbstractFilterPtr m_filter;
SortModePtr m_sort;
std::vector<std::shared_ptr<Message>> m_messages;
int m_account_id;
MessageType m_service_type;
+ PostQueue& queue_;
};
}//Messaging
//
#include "folders_callback_data.h"
-#include "messaging_util.h"
namespace extension {
namespace messaging {
-FoldersCallbackData::FoldersCallbackData():
+FoldersCallbackData::FoldersCallbackData(PostQueue& queue):
m_filter(),
- m_is_error(false)
+ m_is_error(false),
+ queue_(queue)
{
}
-FoldersCallbackData::FoldersCallbackData(long cid, bool keep):
+FoldersCallbackData::FoldersCallbackData(long cid, PostQueue& queue, bool keep):
m_filter(),
- m_is_error(false)
+ m_is_error(false),
+ queue_(queue)
{
auto json = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
picojson::object& o = json->get<picojson::object>();
#include "MsgCommon/AbstractFilter.h"
#include "message_folder.h"
+#include "messaging_util.h"
namespace extension {
namespace messaging {
class FoldersCallbackData: public common::CallbackUserData {
public:
- FoldersCallbackData();
- FoldersCallbackData(long cid, bool keep = false);
+ FoldersCallbackData(PostQueue& queue);
+ FoldersCallbackData(long cid, PostQueue& queue, bool keep = false);
virtual ~FoldersCallbackData();
void addFolder(std::shared_ptr<MessageFolder> folder);
std::string getErrorName() const;
std::string getErrorMessage() const;
+ PostQueue& getQueue() { return queue_;};
private:
std::vector<std::shared_ptr<MessageFolder>> m_folders;
tizen::AbstractFilterPtr m_filter;
bool m_is_error;
std::string m_err_name;
std::string m_err_message;
+ PostQueue& queue_;
};
FoldersChangeCallback::FoldersChangeCallback(
long cid,
int service_id,
- MessageType service_type):
- m_callback_data(cid, true),
+ MessageType service_type,
+ PostQueue& queue):
+ m_callback_data(cid, queue, true),
m_id(service_id),
m_msg_type(service_type),
m_is_act(true)
obj[JSON_DATA] = picojson::value(array);
if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
- PostQueue::getInstance().addAndResolve(obj.at(
+ m_callback_data.getQueue().addAndResolve(obj.at(
JSON_CALLBACK_ID).get<double>(), PostPriority::MEDIUM, json->serialize());
} else {
LoggerE("Callback id is missing");
obj[JSON_DATA] = picojson::value(array);
if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
- PostQueue::getInstance().addAndResolve(obj.at(
+ m_callback_data.getQueue().addAndResolve(obj.at(
JSON_CALLBACK_ID).get<double>(), PostPriority::LOW, json->serialize());
} else {
LoggerE("Callback id is missing");
obj[JSON_DATA] = picojson::value(array);
if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
- PostQueue::getInstance().addAndResolve(obj.at(
+ m_callback_data.getQueue().addAndResolve(obj.at(
JSON_CALLBACK_ID).get<double>(), PostPriority::LAST, json->serialize());
} else {
LoggerE("Callback id is missing");
FoldersChangeCallback(
long cid,
int service_id,
- MessageType service_type);
+ MessageType service_type,
+ PostQueue& queue);
virtual ~FoldersChangeCallback();
void added(const FolderPtrVector& folders);
namespace extension {
namespace messaging {
-MessageCallbackUserData::MessageCallbackUserData():
+MessageCallbackUserData::MessageCallbackUserData(PostQueue& queue):
common::CallbackUserData(),
- m_is_error(false)
+ m_is_error(false),
+ queue_(queue)
{
}
namespace messaging {
class Message;
+class PostQueue;
class MessageCallbackUserData: public common::CallbackUserData {
public:
- MessageCallbackUserData();
+ MessageCallbackUserData(PostQueue& queue);
virtual ~MessageCallbackUserData();
void setMessage(std::shared_ptr<Message> message);
std::string getErrorName() const;
std::string getErrorMessage() const;
+ PostQueue& getQueue() { return queue_;};
+
private:
bool m_is_error;
+ PostQueue& queue_;
std::string m_err_name;
std::string m_err_message;
std::shared_ptr<Message> m_message;
int m_account_id;
+
};
}//messaging
//#################### MessageRecipientsCallbackData ####################
-MessageRecipientsCallbackData::MessageRecipientsCallbackData():
+MessageRecipientsCallbackData::MessageRecipientsCallbackData(PostQueue& queue):
m_is_error(false),
m_account_id(-1),
m_sim_index(TAPI_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN),
- m_default_sim_index(TAPI_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN)
+ m_default_sim_index(TAPI_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN),
+ queue_(queue)
{
LoggerD("Entered");
m_msg_recipients = std::vector<std::string>();
//#################### MessageBodyCallbackData ####################
-MessageBodyCallbackData::MessageBodyCallbackData()
+MessageBodyCallbackData::MessageBodyCallbackData(PostQueue& queue):
+ queue_(queue)
{
LoggerD("Entered");
}
//#################### MessageAttachmentCallbackData ####################
-MessageAttachmentCallbackData::MessageAttachmentCallbackData():
- m_nth(0)
+MessageAttachmentCallbackData::MessageAttachmentCallbackData(PostQueue& queue):
+ m_nth(0),
+ queue_(queue)
{
LoggerD("Entered");
}
//#################### SyncCallbackData ####################
-SyncCallbackData::SyncCallbackData():
+SyncCallbackData::SyncCallbackData(PostQueue& queue):
// BaseMessageServiceCallbackData(globalCtx),
m_is_limit(false),
m_limit(0),
m_op_id(-1),
- m_account_id(-1)
+ m_account_id(-1),
+ queue_(queue)
{
LoggerD("Entered");
}
//#################### SyncFolderCallbackData ####################
-SyncFolderCallbackData::SyncFolderCallbackData()
+SyncFolderCallbackData::SyncFolderCallbackData(PostQueue& queue):
+ SyncCallbackData(queue)
{
LoggerD("Entered");
}
class MessageRecipientsCallbackData : public common::CallbackUserData {
public:
- MessageRecipientsCallbackData();
+ MessageRecipientsCallbackData(PostQueue& queue);
virtual ~MessageRecipientsCallbackData();
void setMessage(std::shared_ptr<Message> message);
TelNetworkDefaultDataSubs_t getDefaultSimIndex() const;
bool isSetSimIndex() const;
+ PostQueue& getQueue() { return queue_;};
+
private:
std::shared_ptr<Message> m_message;
bool m_is_error;
int m_account_id;
TelNetworkDefaultDataSubs_t m_sim_index;
TelNetworkDefaultDataSubs_t m_default_sim_index;
+ PostQueue& queue_;
};
class BaseMessageServiceCallbackData : public common::CallbackUserData {
class MessageBodyCallbackData : public BaseMessageServiceCallbackData {
public:
- MessageBodyCallbackData();
+ MessageBodyCallbackData(PostQueue& queue);
virtual ~MessageBodyCallbackData();
void setMessage(std::shared_ptr<Message> message);
std::shared_ptr<Message> getMessage() const;
+ PostQueue& getQueue() { return queue_;};
private:
std::shared_ptr<Message> m_message;
+ PostQueue& queue_;
};
class MessageAttachmentCallbackData : public BaseMessageServiceCallbackData {
public:
- MessageAttachmentCallbackData();
+ MessageAttachmentCallbackData(PostQueue& queue);
virtual ~MessageAttachmentCallbackData();
void setMessageAttachment(std::shared_ptr<MessageAttachment> messageAttachment);
void setNth(const int nth);
int getNth() const;
+ PostQueue& getQueue() { return queue_;};
private:
std::shared_ptr<MessageAttachment> m_message_attachment;
int m_nth;
+ PostQueue& queue_;
};
class SyncCallbackData : public BaseMessageServiceCallbackData {
public:
- SyncCallbackData();
+ SyncCallbackData(PostQueue& queue);
virtual ~SyncCallbackData();
void setLimit(const unsigned long limit);
void setAccountId(int account_id);
int getAccountId() const;
+ PostQueue& getQueue() { return queue_;};
protected:
bool m_is_limit;
unsigned long m_limit;
long m_op_id;
int m_account_id;
+ PostQueue& queue_;
};
class SyncFolderCallbackData : public SyncCallbackData {
public:
- SyncFolderCallbackData();
+ SyncFolderCallbackData(PostQueue& queue);
virtual ~SyncFolderCallbackData();
void setMessageFolder(std::shared_ptr<MessageFolder> message_folder);
args[JSON_DATA_MESSAGE_ATTACHMENT] = MessagingUtil::messageAttachmentToJson(att);
obj[JSON_DATA] = picojson::value(args);
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
args[JSON_DATA_MESSAGE_BODY] = MessagingUtil::messageBodyToJson(body);
obj[JSON_DATA] = picojson::value(args);
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
auto json = callback->getJson();
picojson::object& obj = json->get<picojson::object>();
if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
- PostQueue::getInstance().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
+ callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize());
} else {
LoggerE("json is incorrect - missing required member");
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
namespace extension {
namespace messaging {
-MessagesCallbackUserData::MessagesCallbackUserData():
+MessagesCallbackUserData::MessagesCallbackUserData(PostQueue& queue):
common::CallbackUserData(),
m_is_error(false),
- m_service_type(MessageType::UNDEFINED)
+ m_service_type(MessageType::UNDEFINED),
+ queue_(queue)
{
}
-MessagesCallbackUserData::MessagesCallbackUserData(long cid, bool keep):
+MessagesCallbackUserData::MessagesCallbackUserData(long cid, PostQueue& queue, bool keep):
common::CallbackUserData(),
m_is_error(false),
- m_service_type(MessageType::UNDEFINED)
+ m_service_type(MessageType::UNDEFINED),
+ queue_(queue)
{
auto json = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
picojson::object& o = json->get<picojson::object>();
class MessagesCallbackUserData: public common::CallbackUserData {
public:
- MessagesCallbackUserData();
- MessagesCallbackUserData(long cid, bool keep = false);
+ MessagesCallbackUserData(PostQueue& queue);
+ MessagesCallbackUserData(long cid, PostQueue& queue, bool keep = false);
virtual ~MessagesCallbackUserData();
void addMessage(std::shared_ptr<Message> msg);
void setMessageServiceType(MessageType m_msg_type);
MessageType getMessageServiceType() const;
+ PostQueue& getQueue() { return queue_;};
+
private:
std::vector<std::shared_ptr<Message>> m_messages;
bool m_is_error;
std::string m_err_name;
std::string m_err_message;
MessageType m_service_type;
+ PostQueue& queue_;
};
}//messaging
MessagesChangeCallback::MessagesChangeCallback(
long cid,
int service_id,
- MessageType service_type) :
- m_callback_data(cid, true),
+ MessageType service_type,
+ PostQueue& queue) :
+ m_callback_data(cid, queue, true),
m_service_id(service_id),
m_msg_type(service_type),
m_is_act(true)
obj[JSON_ACTION] = picojson::value(MESSAGESADDED);
obj[JSON_DATA] = picojson::value(array);
- PostQueue::getInstance().addAndResolve(obj.at(
+ m_callback_data.getQueue().addAndResolve(obj.at(
JSON_CALLBACK_ID).get<double>(), PostPriority::MEDIUM, json->serialize());
} else {
LoggerE("json is incorrect - missing required member");
obj[JSON_ACTION] = picojson::value(MESSAGESUPDATED);
obj[JSON_DATA] = picojson::value(array);
- PostQueue::getInstance().addAndResolve(obj.at(
+ m_callback_data.getQueue().addAndResolve(obj.at(
JSON_CALLBACK_ID).get<double>(), PostPriority::LOW, json->serialize());
} else {
LoggerE("json is incorrect - missing required member");
LoggerD("MESSAGES: %s", picojson::value(array).serialize().c_str());
obj[JSON_DATA] = picojson::value(array);
- PostQueue::getInstance().addAndResolve(obj.at(
+ m_callback_data.getQueue().addAndResolve(obj.at(
JSON_CALLBACK_ID).get<double>(), PostPriority::LAST, json->serialize());
} else {
LoggerE("json is incorrect - missing required member");
MessagesChangeCallback(
long cid,
int service_id,
- MessageType service_type);
+ MessageType service_type,
+ PostQueue& queue);
virtual ~MessagesChangeCallback();
void added(const MessagePtrVector& messages);
LoggerE("Initializing the email service failed (%s)", ret.message().c_str());
return nullptr;
}
- return &extension::messaging::MessagingInstance::getInstance();
+ return new extension::messaging::MessagingInstance();
}
}
-MessagingInstance& MessagingInstance::getInstance()
-{
- static MessagingInstance instance;
- return instance;
-}
-
-MessagingInstance::MessagingInstance()
+MessagingInstance::MessagingInstance():
+ manager_(*this),
+ queue_(*this)
{
LoggerD("Entered");
using std::placeholders::_1;
ReportError(ret, &args); \
obj[JSON_DATA] = picojson::value(args); \
obj[JSON_ACTION] = picojson::value(action); \
- PostQueue::getInstance().addAndResolve( \
+ queue_.addAndResolve( \
obj.at(JSON_CALLBACK_ID).get<double>(), \
PostPriority::HIGH, \
json->serialize() \
at(GET_MESSAGE_SERVICES_ARGS_MESSAGE_SERVICE_TYPE);
const double callbackId = args.get(JSON_CALLBACK_ID).get<double>();
// above values should be validated in js
- MessagingManager::getInstance().getMessageServices(serviceTag.to_str(), callbackId);
+ manager_.getMessageServices(serviceTag.to_str(), callbackId);
}
void MessagingInstance::MessageServiceSendMessage(const picojson::value& args,
POST_AND_RETURN(ret, json, obj, JSON_CALLBACK_ERROR)
}
- MessageRecipientsCallbackData* callback = new MessageRecipientsCallbackData();
+ MessageRecipientsCallbackData* callback = new MessageRecipientsCallbackData(queue_);
long simIndex = 0;
int serviceId = 0;
json, obj, JSON_CALLBACK_ERROR)
}
- PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
- auto service = MessagingManager::getInstance().getMessageService(serviceId);
+ queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
+ auto service = manager_.getMessageService(serviceId);
ret = service->sendMessage(callback);
if (!ret) {
POST_AND_RETURN(ret, json, obj, JSON_CALLBACK_ERROR)
}
- MessageBodyCallbackData* callback = new MessageBodyCallbackData();
+ MessageBodyCallbackData* callback = new MessageBodyCallbackData(queue_);
callback->setJson(json);
callback->setMessage(message);
- PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
- auto service = MessagingManager::getInstance().getMessageService(getServiceIdFromJSON(data));
+ queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
+ auto service = manager_.getMessageService(getServiceIdFromJSON(data));
ret = service->loadMessageBody(callback);
if (ret.IsError()) {
POST_AND_RETURN(ret, json, obj, JSON_CALLBACK_ERROR)
picojson::value attachment = data.at(LOAD_MESSAGE_ATTACHMENT_ARGS_ATTACHMENT);
const double callbackId = args.get(JSON_CALLBACK_ID).get<double>();
- MessageAttachmentCallbackData* callback = new MessageAttachmentCallbackData();
+ MessageAttachmentCallbackData* callback = new MessageAttachmentCallbackData(queue_);
callback->setMessageAttachment(MessagingUtil::jsonToMessageAttachment(attachment));
auto json = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
callback->setJson(json);
- PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
- auto service = MessagingManager::getInstance().getMessageService(getServiceIdFromJSON(data));
+ queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
+ auto service = manager_.getMessageService(getServiceIdFromJSON(data));
const auto result = service->loadMessageAttachment(callback);
if (result.IsError()) {
POST_AND_RETURN(result, json, obj, JSON_CALLBACK_ERROR)
picojson::object& obj = json->get<picojson::object>();
obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
- SyncCallbackData *callback = new SyncCallbackData();
+ SyncCallbackData *callback = new SyncCallbackData(queue_);
callback->setJson(json);
callback->setAccountId(id);
callback->setLimit(limit);
- PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
+ queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
long op_id = -1;
- const auto result = MessagingManager::getInstance().getMessageService(id)->sync(callback, &op_id);
+ const auto result = manager_.getMessageService(id)->sync(callback, &op_id);
if (result) {
ReportSuccess(picojson::value(static_cast<double>(op_id)), out);
picojson::object& obj = json->get<picojson::object>();
obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
- SyncFolderCallbackData *callback = new SyncFolderCallbackData();
+ SyncFolderCallbackData *callback = new SyncFolderCallbackData(queue_);
callback->setJson(json);
callback->setAccountId(id);
callback->setMessageFolder(MessagingUtil::jsonToMessageFolder(v_folder));
callback->setLimit(limit);
- PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
+ queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
long op_id = -1;
- const auto result = MessagingManager::getInstance().getMessageService(id)->syncFolder(callback, &op_id);
+ const auto result = manager_.getMessageService(id)->syncFolder(callback, &op_id);
if (result) {
ReportSuccess(picojson::value(static_cast<double>(op_id)), out);
} else {
op_id = static_cast<long>(v_op_id.get<double>());
}
- const auto result = MessagingManager::getInstance().getMessageService(id)->stopSync(op_id);
+ const auto result = manager_.getMessageService(id)->stopSync(op_id);
if (result) {
ReportSuccess(out);
POST_AND_RETURN(ret, json, obj, JSON_CALLBACK_ERROR)
}
- MessageCallbackUserData* callback = new MessageCallbackUserData();
+ MessageCallbackUserData* callback = new MessageCallbackUserData(queue_);
callback->setMessage(message);
int serviceId = getServiceIdFromJSON(data);
callback->setJson(json);
- PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
- auto service = MessagingManager::getInstance().getMessageService(serviceId);
+ queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
+ auto service = manager_.getMessageService(serviceId);
service->getMsgStorage()->addDraftMessage(callback);
}
(MessagingUtil::getValueFromJSONObject<double>(data, FIND_FOLDERS_ARGS_OFFSET));
int serviceId = getServiceIdFromJSON(data);
- auto storage = MessagingManager::getInstance().getMessageService(serviceId)->getMsgStorage();
+ auto storage = manager_.getMessageService(serviceId)->getMsgStorage();
- FindMsgCallbackUserData* callback = new FindMsgCallbackUserData();
+ FindMsgCallbackUserData* callback = new FindMsgCallbackUserData(queue_);
callback->setFilter(filter);
callback->setLimit(limit);
callback->setOffset(offset);
callback->setSortMode(sortMode);
callback->setJson(json);
- PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
+ queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
storage->findMessages(callback);
}
picojson::array messages = data.at(REMOVE_MESSAGES_ARGS_MESSAGES).get<picojson::array>();
const double callbackId = args.get(JSON_CALLBACK_ID).get<double>();
- MessagesCallbackUserData* callback = new MessagesCallbackUserData();
+ MessagesCallbackUserData* callback = new MessagesCallbackUserData(queue_);
auto each = [callback] (picojson::value& v)->void {
std::shared_ptr<Message> message;
obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
callback->setJson(json);
- auto service = MessagingManager::getInstance().getMessageService(getServiceIdFromJSON(data));
+ auto service = manager_.getMessageService(getServiceIdFromJSON(data));
- PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
+ queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
service->getMsgStorage()->removeMessages(callback);
}
auto pico_array = pico_messages.get<picojson::array>();
const double callbackId = args.get(JSON_CALLBACK_ID).get<double>();
- auto callback = new MessagesCallbackUserData();
+ auto callback = new MessagesCallbackUserData(queue_);
std::vector<std::shared_ptr<Message>> messages;
std::for_each(pico_array.begin(), pico_array.end(), [&callback](picojson::value& v)->void {
obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
callback->setJson(json);
- auto service = MessagingManager::getInstance().getMessageService(getServiceIdFromJSON(data));
+ auto service = manager_.getMessageService(getServiceIdFromJSON(data));
- PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
+ queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
service->getMsgStorage()->updateMessages(callback);
}
int serviceId = getServiceIdFromJSON(data);
- ConversationCallbackData* callback = new ConversationCallbackData();
+ ConversationCallbackData* callback = new ConversationCallbackData(queue_);
callback->setFilter(filter);
callback->setLimit(limit);
callback->setOffset(offset);
callback->setSortMode(sortMode);
callback->setJson(json);
- PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
- auto storage = MessagingManager::getInstance().getMessageService(serviceId)->getMsgStorage();
+ queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
+ auto storage = manager_.getMessageService(serviceId)->getMsgStorage();
storage->findConversations(callback);
}
picojson::object& obj = json->get<picojson::object>();
obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
- ConversationCallbackData* callback = new ConversationCallbackData();
+ ConversationCallbackData* callback = new ConversationCallbackData(queue_);
PlatformResult ret(ErrorCode::NO_ERROR);
for (auto it = conversations.begin(); it != conversations.end(); ++it) {
callback->setJson(json);
- auto service = MessagingManager::getInstance().getMessageService(getServiceIdFromJSON(data));
+ auto service = manager_.getMessageService(getServiceIdFromJSON(data));
- PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
+ queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
service->getMsgStorage()->removeConversations(callback);
}
POST_AND_RETURN(ret, json, obj, JSON_CALLBACK_ERROR)
}
- FoldersCallbackData* callback = new FoldersCallbackData();
+ FoldersCallbackData* callback = new FoldersCallbackData(queue_);
callback->setFilter(filter);
callback->setJson(json);
- PostQueue::getInstance().add(static_cast<long>(callbackId), PostPriority::HIGH);
- auto service = MessagingManager::getInstance().getMessageService(getServiceIdFromJSON(data));
+ queue_.add(static_cast<long>(callbackId), PostPriority::HIGH);
+ auto service = manager_.getMessageService(getServiceIdFromJSON(data));
service->getMsgStorage()->findFolders(callback);
}
int serviceId = getServiceIdFromJSON(data);
- auto service = MessagingManager::getInstance().getMessageService(serviceId);
+ auto service = manager_.getMessageService(serviceId);
std::shared_ptr<MessagesChangeCallback> callback(new MessagesChangeCallback(
- static_cast<long>(callbackId), serviceId, service->getMsgServiceType()));
+ static_cast<long>(callbackId), serviceId, service->getMsgServiceType(),queue_));
callback->setFilter(filter);
int serviceId = getServiceIdFromJSON(data);
- auto service = MessagingManager::getInstance().getMessageService(serviceId);
+ auto service = manager_.getMessageService(serviceId);
std::shared_ptr<ConversationsChangeCallback> callback(new ConversationsChangeCallback(
- static_cast<long>(callbackId), serviceId, service->getMsgServiceType()));
+ static_cast<long>(callbackId), serviceId, service->getMsgServiceType(), queue_));
callback->setFilter(filter);
int serviceId = getServiceIdFromJSON(data);
- auto service = MessagingManager::getInstance().getMessageService(serviceId);
+ auto service = manager_.getMessageService(serviceId);
std::shared_ptr<FoldersChangeCallback> callback(new FoldersChangeCallback(
- static_cast<long>(callbackId), serviceId, service->getMsgServiceType()));
+ static_cast<long>(callbackId), serviceId, service->getMsgServiceType(), queue_));
callback->setFilter(filter);
const long watchId = static_cast<long>(
data.at(REMOVE_CHANGE_LISTENER_ARGS_WATCHID).get<double>());
- auto service = MessagingManager::getInstance().getMessageService(getServiceIdFromJSON(data));
+ auto service = manager_.getMessageService(getServiceIdFromJSON(data));
service->getMsgStorage()->removeChangeListener(watchId);
ReportSuccess(out);
#include "common/extension.h"
+#include "messaging_manager.h"
+#include "messaging_util.h"
+
namespace extension {
namespace messaging {
class MessagingInstance: public common::ParsedInstance {
public:
- static MessagingInstance& getInstance();
+ MessagingInstance();
+ virtual ~MessagingInstance();
private:
- MessagingInstance();
- virtual ~MessagingInstance();
-
void GetMessageServices(const picojson::value& args, picojson::object& out);
void MessageServiceSendMessage(const picojson::value& args,
picojson::object& out);
void MessageStorageRemoveChangeListener(const picojson::value& args,
picojson::object& out);
+
+ MessagingManager manager_;
+ PostQueue queue_;
};
} // namespace messaging
const int UNDEFINED_MESSAGE_SERVICE = -1;
}
-MessagingManager::MessagingManager()
+MsgManagerCallbackData::MsgManagerCallbackData(MessagingInstance& instance):
+ json(nullptr),
+ services_map(nullptr),
+ sms_service(nullptr),
+ mms_service(nullptr),
+ instance_(instance) {
+}
+
+MessagingManager::MessagingManager(MessagingInstance& instance):
+ instance_(instance)
{
LoggerD("Entered");
int ret = msg_open_msg_handle(&m_msg_handle);
}
}
-MessagingManager& MessagingManager::getInstance()
-{
- LoggerD("Entered");
- static MessagingManager instance;
- return instance;
-}
-
static gboolean callbackCompleted(const std::shared_ptr<MsgManagerCallbackData>& user_data)
{
LoggerD("Entered");
std::shared_ptr<picojson::value> response = user_data->json;
- MessagingInstance::getInstance().PostMessage(response->serialize().c_str());
+ user_data->instance_.PostMessage(response->serialize().c_str());
return false;
}
obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
obj[JSON_DATA] = picojson::value(type);
- auto user_data = std::shared_ptr<MsgManagerCallbackData>(new MsgManagerCallbackData());
+ auto user_data = std::shared_ptr<MsgManagerCallbackData>(new MsgManagerCallbackData(instance_));
user_data->json = json;
user_data->services_map = &m_email_services;
user_data->sms_service = &m_sms_service;
namespace extension {
namespace messaging {
+class MessagingInstance;
+
class MsgManagerCallbackData {
public:
+ explicit MsgManagerCallbackData(MessagingInstance& instance_);
std::shared_ptr<picojson::value> json;
std::map<int, MessageService*>* services_map;
std::pair<int, MessageService*>* sms_service;
std::pair<int, MessageService*>* mms_service;
+ MessagingInstance& instance_;
};
class MessagingManager {
public:
- static MessagingManager& getInstance();
- void getMessageServices(const std::string& type, double callbackId);
- MessageService* getMessageService(const int id);
+ explicit MessagingManager(MessagingInstance& instance);
+ MessagingManager(const MessagingManager &);
+ virtual ~MessagingManager();
+
+ void getMessageServices(const std::string& type, double callbackId);
+ MessageService* getMessageService(const int id);
private:
- MessagingManager();
- MessagingManager(const MessagingManager &);
void operator=(const MessagingManager &);
- virtual ~MessagingManager();
msg_handle_t m_msg_handle;
std::map<int, MessageService*> m_email_services;
std::pair<int, MessageService*> m_sms_service;
std::pair<int, MessageService*> m_mms_service;
+
+ MessagingInstance& instance_;
};
} // namespace messaging
return PlatformResult(ErrorCode::NO_ERROR);
}
-PostQueue& PostQueue::getInstance()
-{
- LoggerD("Entered");
- static PostQueue instance;
- return instance;
-}
-
-PostQueue::PostQueue()
+PostQueue::PostQueue(MessagingInstance& instance): instance_(instance)
{
LoggerD("Entered");
}
i = tasks_.erase(i);
tasks_mutex_.unlock();
- MessagingInstance::getInstance().PostMessage(json.c_str());
+ instance_.PostMessage(json.c_str());
} else if (TaskState::NEW == i->second->state()) {
tasks_mutex_.unlock();
class MessageConversation;
class Message;
class MessageBody;
+class MessagingInstance;
class MessagingUtil {
public:
class PostQueue {
public:
- static PostQueue& getInstance();
+ explicit PostQueue(MessagingInstance& instance);
+ ~PostQueue();
+
void addAndResolve(const long cid, PostPriority priority, const std::string json);
void add(const long cid, PostPriority priority = PostPriority::LAST);
void resolve(const long cid, const std::string json);
typedef std::pair<long, std::shared_ptr<PostTask>> TasksCollectionItem;
typedef std::vector<TasksCollectionItem> TasksCollection;
- PostQueue();
PostQueue(const PostQueue &);
- ~PostQueue();
void operator=(const PostQueue &);
void resolve(PostPriority p);
TasksCollection tasks_;
std::mutex tasks_mutex_;
+ MessagingInstance& instance_;
+
class PostTask {
public:
PostTask();
}
if (callback->isError()) {
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
callback->getJson()->serialize()
);
data[JSON_DATA_MESSAGE] = MessagingUtil::messageToJson(message);
obj[JSON_DATA] = picojson::value(data);
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
if (callback->isError()) {
LoggerD("Calling error callback");
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
callback->getJson()->serialize()
);
args[JSON_DATA_MESSAGE] = MessagingUtil::messageToJson(callback->getMessage());
obj[JSON_DATA] = picojson::value(args);
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
if (callback->isError()) {
LoggerD("Calling error callback");
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
callback->getJson()->serialize()
);
picojson::object& obj = json->get<picojson::object>();
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
if (callback->isError()) {
LoggerD("Calling error callback");
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
callback->getJson()->serialize()
);
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
if (callback->isError()) {
LoggerD("Calling error callback");
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
callback->getJson()->serialize()
);
obj[JSON_DATA] = picojson::value(response);
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
if (callback->isError()) {
LoggerD("Calling error callback");
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
callback->getJson()->serialize()
);
obj[JSON_DATA] = picojson::value(response);
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
if (callback->isError()) {
LoggerD("Calling error callback");
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
callback->getJson()->get<picojson::object>().at(JSON_CALLBACK_ID).get<double>(),
callback->getJson()->serialize()
);
picojson::object& obj = json->get<picojson::object>();
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
- PostQueue::getInstance().resolve(
+ callback->getQueue().resolve(
obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);