using namespace common;
-MessageProxy::MessageProxy()
+MessageProxy::MessageProxy(EmailManager& manager)
: common::dbus::Proxy(kDBusPathEmailStorageChange, kDBusIfaceEmailStorageChange,
kDBusNameSignalEmail, kDBusPathEmailStorageChange,
- kDBusIfaceEmailStorageChange) {
+ kDBusIfaceEmailStorageChange),
+ email_manager_(manager) {
ScopeLogger();
}
ScopeLogger();
}
-PlatformResult MessageProxy::create(MessageProxyPtr* message_proxy) {
+PlatformResult MessageProxy::create(EmailManager& manager, MessageProxyPtr* message_proxy) {
ScopeLogger();
- message_proxy->reset(new MessageProxy());
+ message_proxy->reset(new MessageProxy(manager));
if ((*message_proxy)->isNotProxyGot()) {
message_proxy->reset();
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Could not get proxy");
}
}
- email_mail_data_t* mail_data = EmailManager::getInstance().loadMessage(mail_id);
+ email_mail_data_t* mail_data = email_manager_.loadMessage(mail_id);
if (mail_data == NULL) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Failed to load email");
}
delete eventMsg;
delete eventConv;
- EmailManager::getInstance().freeMessage(mail_data);
+ email_manager_.freeMessage(mail_data);
} else {
LoggerD("Listener not registered just ignore");
}
LoggerD("Mail id list is empty.");
return;
}
- EmailManager::getInstance().removeStatusCallback(ids, status);
+ email_manager_.removeStatusCallback(ids, status);
}
void MessageProxy::handleThreadRemoveEvent(int account_id, int thread_id) {
namespace extension {
namespace messaging {
+class EmailManager;
namespace DBus {
class MessageProxy;
class MessageProxy : public common::dbus::Proxy {
public:
virtual ~MessageProxy();
- static common::PlatformResult create(MessageProxyPtr *message_proxy);
+ static common::PlatformResult create(EmailManager &manager, MessageProxyPtr *message_proxy);
protected:
- MessageProxy();
+ MessageProxy(EmailManager &manager);
virtual void signalCallback(GDBusConnection *connection, const gchar *sender_name,
const gchar *object_path, const gchar *interface_name,
const gchar *signal_name, GVariant *parameters);
void notifyEmailManager(const std::string &idsString, email_noti_on_storage_event status);
void handleThreadRemoveEvent(int account_id, int thread_id);
common::PlatformResult handleMailboxEvent(int account_id, int mailbox_id, int event);
+ EmailManager &email_manager_;
};
} // namespace DBus
using namespace common;
-SendProxy::SendProxy() : EmailSignalProxy(kDBusPathNetworkStatus, kDBusIfaceNetworkStatus) {
+SendProxy::SendProxy(EmailManager& manager)
+ : EmailSignalProxy(kDBusPathNetworkStatus, kDBusIfaceNetworkStatus), email_manager_(manager) {
ScopeLogger();
}
ScopeLogger();
}
-PlatformResult SendProxy::create(SendProxyPtr* send_proxy) {
+PlatformResult SendProxy::create(EmailManager& manager, SendProxyPtr* send_proxy) {
ScopeLogger();
- send_proxy->reset(new SendProxy());
+ send_proxy->reset(new SendProxy(manager));
if ((*send_proxy)->isNotProxyGot()) {
send_proxy->reset();
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Could not get send proxy");
"received email signal with:\n status: %d\n account_id: %d\n "
"source: %s\n mail_id: %d\n error_code: %d",
status, account_id, source.c_str(), mail_id, error_code);
- EmailManager::getInstance().sendStatusCallback(
- mail_id, static_cast<email_noti_on_network_event>(status), error_code);
+ email_manager_.sendStatusCallback(mail_id, static_cast<email_noti_on_network_event>(status),
+ error_code);
break;
default:
LoggerD("Unrecognized status %d, ignoring", status);
namespace extension {
namespace messaging {
+class EmailManager;
namespace DBus {
class SendProxy;
class SendProxy : public EmailSignalProxy {
public:
virtual ~SendProxy();
- static common::PlatformResult create(SendProxyPtr* send_proxy);
+ static common::PlatformResult create(EmailManager& manager, SendProxyPtr* send_proxy);
protected:
- SendProxy();
+ SendProxy(EmailManager& manager);
virtual void handleEmailSignal(const int status, const int account_id, const std::string& source,
const int op_handle, const int error_code);
+ EmailManager& email_manager_;
};
} // DBus
#include "common/logger.h"
#include "common/tools.h"
+#include "messaging_instance.h"
+
using common::tools::ReportSuccess;
using common::tools::ReportError;
namespace extension {
namespace messaging {
-CallbackUserData::CallbackUserData(PostQueue& queue, long cid, bool keep /* = false */)
+CallbackUserData::CallbackUserData(PostQueue& queue, long cid, MessagingInstance& instance,
+ bool keep /* = false */)
: json_(picojson::object()),
obj_(json_.get<picojson::object>()),
cid_(cid),
queue_(queue),
- result_(common::ErrorCode::NO_ERROR) {
+ result_(common::ErrorCode::NO_ERROR),
+ instance_(instance) {
ScopeLogger();
if (!keep) {
// this is not listener, add callbackId
obj_[key] = value;
}
+EmailManager& CallbackUserData::getEmailManager() {
+ return instance_.getEmailManager();
+}
+
+ShortMsgManager& CallbackUserData::getShortMsgManager() {
+ return instance_.getShortMsgManager();
+}
+
} // messaging
} // extension
namespace extension {
namespace messaging {
+class EmailManager;
+class ShortMsgManager;
+
class CallbackUserData {
public:
- CallbackUserData(PostQueue& queue, long cid, bool keep = false);
+ CallbackUserData(PostQueue& queue, long cid, MessagingInstance& instance, bool keep = false);
virtual ~CallbackUserData();
bool IsError() const;
void AddAndPost(PostPriority p);
bool HasQueue(const PostQueue& q) const;
+ EmailManager& getEmailManager();
+ ShortMsgManager& getShortMsgManager();
+
private:
void AddJsonData(const char* key, const picojson::value& value);
long cid_;
PostQueue& queue_;
common::PlatformResult result_;
+ MessagingInstance& instance_;
};
} // messaging
ChangeListenerContainer& ChangeListenerContainer::getInstance() {
ScopeLogger();
- EmailManager::getInstance(); // make sure that callbacks are registered in email-service
- // ShortMsgManager::getInstance(); //make sure that callbacks are registered in msg-service
static ChangeListenerContainer clc;
return clc;
}
namespace messaging {
ConversationCallbackData::ConversationCallbackData(PostQueue& queue, long cid,
+ MessagingInstance& instance,
bool keep /* = false */)
- : CallbackUserData(queue, cid, keep),
+ : CallbackUserData(queue, cid, instance, keep),
m_limit(0),
m_offset(0),
m_account_id(0),
class ConversationCallbackData : public CallbackUserData {
public:
- ConversationCallbackData(PostQueue& queue, long cid, bool keep = false);
+ ConversationCallbackData(PostQueue& queue, long cid, MessagingInstance& instance,
+ bool keep = false);
virtual ~ConversationCallbackData();
void setFilter(AbstractFilterPtr filter);
const char* CONVERSATIONSREMOVED = "conversationsremoved";
ConversationsChangeCallback::ConversationsChangeCallback(long cid, int service_id,
- MessageType service_type, PostQueue& queue)
- : m_callback_data(queue, cid, true),
+ MessageType service_type, PostQueue& queue,
+ MessagingInstance& instance)
+ : m_callback_data(queue, cid, instance, true),
m_id(service_id),
m_msg_type(service_type),
m_is_act(true) {
typedef void (ConversationsChangeCallback::*Signature)(
const ConversationPtrVector& conversations);
- ConversationsChangeCallback(long cid, int service_id, MessageType service_type, PostQueue& queue);
+ ConversationsChangeCallback(long cid, int service_id, MessageType service_type, PostQueue& queue,
+ MessagingInstance& instance);
virtual ~ConversationsChangeCallback();
void added(const ConversationPtrVector& conversations);
ScopeLogger();
}
-EmailManager& EmailManager::getInstance() {
- ScopeLogger();
- static EmailManager instance;
- return instance;
-}
-
#define CHECK_ERROR(ret, message) \
if (ret.IsError()) { \
LoggerE(message); \
PlatformResult EmailManager::InitializeEmailService() {
ScopeLogger();
- EmailManager& instance = EmailManager::getInstance();
- if (!instance.m_is_initialized) {
- instance.getUniqueOpId();
+ if (!m_is_initialized) {
+ getUniqueOpId();
int ntv_ret = email_service_begin();
if (ntv_ret != EMAIL_ERROR_NONE) {
int slot_size = -1;
vconf_get_int("db/private/email-service/slot_size", &(slot_size));
if (slot_size > 0) {
- instance.m_slot_size = slot_size;
+ m_slot_size = slot_size;
}
- PlatformResult ret = DBus::SyncProxy::create(
- DBus::kDBusPathNetworkStatus, DBus::kDBusIfaceNetworkStatus, &instance.m_proxy_sync);
+ PlatformResult ret = DBus::SyncProxy::create(DBus::kDBusPathNetworkStatus,
+ DBus::kDBusIfaceNetworkStatus, &m_proxy_sync);
CHECK_ERROR(ret, "create sync proxy failed");
- if (!instance.m_proxy_sync) {
+ if (!m_proxy_sync) {
LoggerE("Sync proxy is null");
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Sync proxy is null");
}
- instance.m_proxy_sync->signalSubscribe();
+ m_proxy_sync->signalSubscribe();
ret = DBus::LoadBodyProxy::create(DBus::kDBusPathNetworkStatus, DBus::kDBusIfaceNetworkStatus,
- &instance.m_proxy_load_body);
+ &m_proxy_load_body);
CHECK_ERROR(ret, "create load body proxy failed");
- if (!instance.m_proxy_load_body) {
+ if (!m_proxy_load_body) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Load body proxy is null");
}
- instance.m_proxy_load_body->signalSubscribe();
+ m_proxy_load_body->signalSubscribe();
// ret = DBus::LoadAttachmentProxy::create(DBus::Proxy::DBUS_PATH_NETWORK_STATUS,
// DBus::Proxy::DBUS_IFACE_NETWORK_STATUS,
// }
// m_proxy_load_attachment->signalSubscribe();
- ret = DBus::MessageProxy::create(&instance.m_proxy_messageStorage);
+ ret = DBus::MessageProxy::create(*this, &m_proxy_messageStorage);
CHECK_ERROR(ret, "create message proxy failed");
- if (!instance.m_proxy_messageStorage) {
+ if (!m_proxy_messageStorage) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Message proxy is null");
}
- instance.m_proxy_messageStorage->signalSubscribe();
+ m_proxy_messageStorage->signalSubscribe();
- ret = DBus::SendProxy::create(&instance.m_proxy_send);
+ ret = DBus::SendProxy::create(*this, &m_proxy_send);
CHECK_ERROR(ret, "create send proxy failed");
- if (!instance.m_proxy_send) {
+ if (!m_proxy_send) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Send proxy is null");
}
- instance.m_proxy_send->signalSubscribe();
+ m_proxy_send->signalSubscribe();
- instance.m_is_initialized = true;
+ m_is_initialized = true;
}
return PlatformResult(ErrorCode::NO_ERROR);
std::shared_ptr<MessageConversation> conversation;
PlatformResult ret = MessageConversation::convertEmailConversationToObject(
conversationsInfo.at(i).id, &conversation);
+ if (ret.IsError()) {
+ LoggerE("%d (%s)", ret.error_code(), (ret.message()).c_str());
+ return ret;
+ }
conversation->setUnreadMessages(conversationsInfo.at(i).unreadMessages);
callback->addConversation(conversation);
}
class EmailManager {
public:
- static EmailManager& getInstance();
- static common::PlatformResult InitializeEmailService();
+ EmailManager();
+ virtual ~EmailManager();
+
+ common::PlatformResult InitializeEmailService();
void addDraftMessage(MessageCallbackUserData* callback);
void removeMessages(MessagesCallbackUserData* callback);
long getUniqueOpId();
private:
- EmailManager();
- EmailManager(const EmailManager&);
- void operator=(const EmailManager&);
- virtual ~EmailManager();
common::PlatformResult addDraftMessagePlatform(int account_id, std::shared_ptr<Message> message);
common::PlatformResult addOutboxMessagePlatform(int account_id, std::shared_ptr<Message> message);
common::PlatformResult addMessagePlatform(int account_id, std::shared_ptr<Message> message,
namespace extension {
namespace messaging {
-FindMsgCallbackUserData::FindMsgCallbackUserData(PostQueue& queue, long cid)
- : CallbackUserData(queue, cid),
+FindMsgCallbackUserData::FindMsgCallbackUserData(PostQueue& queue, long cid,
+ MessagingInstance& instance)
+ : CallbackUserData(queue, cid, instance),
m_limit(0),
m_offset(0),
m_account_id(0),
class FindMsgCallbackUserData : public CallbackUserData {
public:
- FindMsgCallbackUserData(PostQueue& queue, long cid);
+ FindMsgCallbackUserData(PostQueue& queue, long cid, MessagingInstance& instance);
virtual ~FindMsgCallbackUserData();
void setFilter(AbstractFilterPtr filter);
const char* FOLDERSREMOVED = "foldersremoved";
FoldersChangeCallback::FoldersChangeCallback(long cid, int service_id, MessageType service_type,
- PostQueue& queue)
- : m_callback_data(queue, cid, true),
+ PostQueue& queue, MessagingInstance& instance)
+ : m_callback_data(queue, cid, instance, true),
m_id(service_id),
m_msg_type(service_type),
m_is_act(true) {
public:
typedef void (FoldersChangeCallback::*Signature)(const FolderPtrVector& conversations);
- FoldersChangeCallback(long cid, int service_id, MessageType service_type, PostQueue& queue);
+ FoldersChangeCallback(long cid, int service_id, MessageType service_type, PostQueue& queue,
+ MessagingInstance& instance);
virtual ~FoldersChangeCallback();
void added(const FolderPtrVector& folders);
#include "message_email.h"
#include "message_mms.h"
#include "message_sms.h"
+#include "messaging_instance.h"
#include "messaging_util.h"
#include "short_message_manager.h"
return PlatformResult(ErrorCode::NO_ERROR);
}
-PlatformResult Message::findShortMessageById(const int id, MessagePtr* message) {
+PlatformResult Message::findShortMessageById(const int id, MessagingInstance& instance,
+ MessagePtr* message) {
ScopeLogger();
msg_struct_t msg;
- PlatformResult ret = ShortMsgManager::getInstance().getMessage(id, &msg);
+ PlatformResult ret = instance.getShortMsgManager().getMessage(id, &msg);
if (ret.IsError()) {
return ret;
}
// function for filling Message attributes
static common::PlatformResult convertPlatformShortMessageToObject(msg_struct_t msg,
Message** message);
- static common::PlatformResult findShortMessageById(const int id, MessagePtr* message);
+ static common::PlatformResult findShortMessageById(const int id, MessagingInstance& instance,
+ MessagePtr* message);
static common::PlatformResult addMMSBodyAndAttachmentsToStruct(const AttachmentPtrVector& attach,
msg_struct_t& mms_struct,
Message* message);
namespace extension {
namespace messaging {
-MessageCallbackUserData::MessageCallbackUserData(PostQueue& queue, long cid)
- : CallbackUserData(queue, cid), m_account_id(0) {
+MessageCallbackUserData::MessageCallbackUserData(PostQueue& queue, long cid,
+ MessagingInstance& instance)
+ : CallbackUserData(queue, cid, instance), m_account_id(0) {
ScopeLogger();
}
class MessageCallbackUserData : public CallbackUserData {
public:
- MessageCallbackUserData(PostQueue& queue, long cid);
+ MessageCallbackUserData(PostQueue& queue, long cid, MessagingInstance& instance);
virtual ~MessageCallbackUserData();
void setMessage(std::shared_ptr<Message> message);
//#################### MessageRecipientsCallbackData ####################
-MessageRecipientsCallbackData::MessageRecipientsCallbackData(PostQueue& queue, long cid)
- : CallbackUserData(queue, cid),
+MessageRecipientsCallbackData::MessageRecipientsCallbackData(PostQueue& queue, long cid,
+ MessagingInstance& instance)
+ : CallbackUserData(queue, cid, instance),
m_account_id(-1),
m_sim_index(TAPI_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN),
m_default_sim_index(TAPI_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN) {
//#################### BaseMessageServiceCallbackData ####################
-BaseMessageServiceCallbackData::BaseMessageServiceCallbackData(PostQueue& queue, long cid)
- : CallbackUserData(queue, cid), m_op_handle(-1) {
+BaseMessageServiceCallbackData::BaseMessageServiceCallbackData(PostQueue& queue, long cid,
+ MessagingInstance& instance)
+ : CallbackUserData(queue, cid, instance), m_op_handle(-1) {
ScopeLogger();
}
//#################### MessageAttachmentCallbackData ####################
-MessageAttachmentCallbackData::MessageAttachmentCallbackData(PostQueue& queue, long cid)
- : BaseMessageServiceCallbackData(queue, cid), m_nth(0) {
+MessageAttachmentCallbackData::MessageAttachmentCallbackData(PostQueue& queue, long cid,
+ MessagingInstance& instance)
+ : BaseMessageServiceCallbackData(queue, cid, instance), m_nth(0) {
ScopeLogger();
}
//#################### SyncCallbackData ####################
-SyncCallbackData::SyncCallbackData(PostQueue& queue, long cid)
- : BaseMessageServiceCallbackData(queue, cid),
+SyncCallbackData::SyncCallbackData(PostQueue& queue, long cid, MessagingInstance& instance)
+ : BaseMessageServiceCallbackData(queue, cid, instance),
m_is_limit(false),
m_limit(0),
m_op_id(-1),
//#################### MessageService ####################
-MessageService::MessageService(int id, MessageType msgType, const std::string& name)
- : m_id(id), m_msg_type(msgType), m_name(name) {
+MessageService::MessageService(int id, MessageType msgType, const std::string& name,
+ MessagingInstance& instance)
+ : m_id(id), m_msg_type(msgType), m_name(name), instance_(instance) {
ScopeLogger();
switch (msgType) {
case MessageType::SMS:
class MessageRecipientsCallbackData : public CallbackUserData {
public:
- MessageRecipientsCallbackData(PostQueue& queue, long cid);
+ MessageRecipientsCallbackData(PostQueue& queue, long cid, MessagingInstance& instance);
virtual ~MessageRecipientsCallbackData();
void setMessage(std::shared_ptr<Message> message);
class BaseMessageServiceCallbackData : public CallbackUserData {
public:
- BaseMessageServiceCallbackData(PostQueue& queue, long cid);
+ BaseMessageServiceCallbackData(PostQueue& queue, long cid, MessagingInstance& instance);
virtual ~BaseMessageServiceCallbackData();
/**
class MessageAttachmentCallbackData : public BaseMessageServiceCallbackData {
public:
- MessageAttachmentCallbackData(PostQueue& queue, long cid);
+ MessageAttachmentCallbackData(PostQueue& queue, long cid, MessagingInstance& instance);
virtual ~MessageAttachmentCallbackData();
void setMessageAttachment(std::shared_ptr<MessageAttachment> messageAttachment);
class SyncCallbackData : public BaseMessageServiceCallbackData {
public:
- SyncCallbackData(PostQueue& queue, long cid);
+ SyncCallbackData(PostQueue& queue, long cid, MessagingInstance& instance);
virtual ~SyncCallbackData();
void setLimit(const unsigned long limit);
* We have child classes MessageServiceEmail and MessageServiceShortMsg which
* should provide specialized implementation.
*/
- MessageService(int id, MessageType msgType, const std::string& name);
+ MessageService(int id, MessageType msgType, const std::string& name, MessagingInstance& instance);
int m_id;
MessageType m_msg_type;
std::string m_name;
MessageStoragePtr m_storage;
+ MessagingInstance& instance_;
};
} // messaging
#include "message_service_email.h"
#include "email_manager.h"
+#include "messaging_instance.h"
#include "common/logger.h"
namespace extension {
namespace messaging {
-MessageServiceEmail::MessageServiceEmail(int id, std::string name)
- : MessageService(id, MessageType::EMAIL, name) {
+MessageServiceEmail::MessageServiceEmail(int id, std::string name, MessagingInstance& instance)
+ : MessageService(id, MessageType::EMAIL, name, instance) {
ScopeLogger();
}
for (auto id : registered_callbacks_) {
// this may internally fail, because we don't have information about
// callbacks which already have fired
- EmailManager::getInstance().RemoveSyncCallback(id);
+ instance_.getEmailManager().RemoveSyncCallback(id);
}
}
static gboolean sendMessageTask(void* data) {
ScopeLogger();
-
- auto ret =
- EmailManager::getInstance().sendMessage(static_cast<MessageRecipientsCallbackData*>(data));
+ MessageRecipientsCallbackData* callback = static_cast<MessageRecipientsCallbackData*>(data);
+ auto ret = callback->getEmailManager().sendMessage(callback);
if (!ret) {
LoggerE("Error: %d - %s", ret.error_code(), ret.message().c_str());
static gboolean loadMessageBodyTask(void* data) {
ScopeLogger();
-
- EmailManager::getInstance().loadMessageBody(static_cast<MessageBodyCallbackData*>(data));
+ MessageBodyCallbackData* callback = static_cast<MessageBodyCallbackData*>(data);
+ callback->getEmailManager().loadMessageBody(callback);
return FALSE;
}
delete callback;
callback = nullptr;
} else {
- const auto ret = EmailManager::getInstance().loadMessageAttachment(callback);
+ const auto ret = callback->getEmailManager().loadMessageAttachment(callback);
if (!ret) {
LoggerE("Error: %d - %s", ret.error_code(), ret.message().c_str());
static gboolean syncTask(void* data) {
ScopeLogger();
-
- EmailManager::getInstance().sync(data);
+ SyncCallbackData* callback = static_cast<SyncCallbackData*>(data);
+ callback->getEmailManager().sync(data);
return FALSE;
}
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Callback is null");
}
- long op_id = EmailManager::getInstance().getUniqueOpId();
+ long op_id = callback->getEmailManager().getUniqueOpId();
callback->setOpId(op_id);
guint id = g_idle_add(syncTask, static_cast<void*>(callback));
static gboolean syncFolderTask(void* data) {
ScopeLogger();
-
- EmailManager::getInstance().syncFolder(static_cast<SyncFolderCallbackData*>(data));
+ SyncFolderCallbackData* callback = static_cast<SyncFolderCallbackData*>(data);
+ callback->getEmailManager().syncFolder(callback);
return FALSE;
}
return LogAndCreateResult(ErrorCode::TYPE_MISMATCH_ERR, "Message folder is null");
}
- long op_id = EmailManager::getInstance().getUniqueOpId();
+ long op_id = callback->getEmailManager().getUniqueOpId();
callback->setOpId(op_id);
guint id = g_idle_add(syncFolderTask, callback);
return FALSE;
}
- const long op_id = *(static_cast<long*>(data));
- delete static_cast<long*>(data);
- data = NULL;
- EmailManager::getInstance().stopSync(op_id);
-
+ StopSyncData* callback = static_cast<StopSyncData*>(data);
+ long op_id = callback->op_id;
+ callback->instance.getEmailManager().stopSync(op_id);
+ delete callback;
+ callback = nullptr;
return FALSE;
}
ScopeLogger();
registered_callbacks_.erase(op_id);
- long* data = new long(op_id);
+ StopSyncData* data = new StopSyncData{op_id, instance_};
guint id = g_idle_add(stopSyncTask, static_cast<void*>(data));
if (!id) {
namespace extension {
namespace messaging {
+struct StopSyncData {
+ long op_id;
+ MessagingInstance& instance;
+};
+
class MessageServiceEmail : public MessageService {
public:
- MessageServiceEmail(int id, std::string name);
+ MessageServiceEmail(int id, std::string name, MessagingInstance& instance);
virtual ~MessageServiceEmail();
virtual common::PlatformResult sendMessage(MessageRecipientsCallbackData* callback);
namespace extension {
namespace messaging {
-MessageServiceShortMsg::MessageServiceShortMsg(int id, MessageType msgType)
- : MessageService(id, msgType, MessagingUtil::messageTypeToString(msgType)) {
+MessageServiceShortMsg::MessageServiceShortMsg(int id, MessageType msgType,
+ MessagingInstance& instance)
+ : MessageService(id, msgType, MessagingUtil::messageTypeToString(msgType), instance) {
ScopeLogger();
}
static gboolean sendMessageThread(void* data) {
ScopeLogger();
- auto ret =
- ShortMsgManager::getInstance().sendMessage(static_cast<MessageRecipientsCallbackData*>(data));
+ MessageRecipientsCallbackData* callback = static_cast<MessageRecipientsCallbackData*>(data);
+ auto ret = callback->getShortMsgManager().sendMessage(callback);
if (!ret) {
LoggerE("Error: %d - %s", ret.error_code(), ret.message().c_str());
return PlatformResult(ErrorCode::NO_ERROR);
}
-MessageServiceShortMsg* MessageServiceShortMsg::GetMmsMessageService() {
+MessageServiceShortMsg* MessageServiceShortMsg::GetMmsMessageService(MessagingInstance& instance) {
ScopeLogger();
return new (std::nothrow)
- MessageServiceShortMsg(MessageServiceAccountId::MMS_ACCOUNT_ID, MessageType::MMS);
+ MessageServiceShortMsg(MessageServiceAccountId::MMS_ACCOUNT_ID, MessageType::MMS, instance);
}
-MessageServiceShortMsg* MessageServiceShortMsg::GetSmsMessageService() {
+MessageServiceShortMsg* MessageServiceShortMsg::GetSmsMessageService(MessagingInstance& instance) {
ScopeLogger();
return new (std::nothrow)
- MessageServiceShortMsg(MessageServiceAccountId::SMS_ACCOUNT_ID, MessageType::SMS);
+ MessageServiceShortMsg(MessageServiceAccountId::SMS_ACCOUNT_ID, MessageType::SMS, instance);
}
} // namespace messaging
virtual common::PlatformResult loadMessageBody(MessageBodyCallbackData* callback);
- static MessageServiceShortMsg* GetMmsMessageService();
- static MessageServiceShortMsg* GetSmsMessageService();
+ static MessageServiceShortMsg* GetMmsMessageService(MessagingInstance& instance);
+ static MessageServiceShortMsg* GetSmsMessageService(MessagingInstance& instance);
protected:
- MessageServiceShortMsg(int id, MessageType msgType);
+ MessageServiceShortMsg(int id, MessageType msgType, MessagingInstance& instance);
};
} // namespace messaging
#include "email_manager.h"
#include "message.h"
+#include "messaging_instance.h"
namespace extension {
namespace messaging {
ScopeLogger();
MessageCallbackUserData* callback = static_cast<MessageCallbackUserData*>(data);
- EmailManager::getInstance().addDraftMessage(callback);
+ callback->getEmailManager().addDraftMessage(callback);
return FALSE;
}
ScopeLogger();
MessagesCallbackUserData* callback = static_cast<MessagesCallbackUserData*>(data);
- EmailManager::getInstance().removeMessages(callback);
+ callback->getEmailManager().removeMessages(callback);
return FALSE;
}
ScopeLogger();
MessagesCallbackUserData* callback = static_cast<MessagesCallbackUserData*>(data);
- EmailManager::getInstance().updateMessages(callback);
+ callback->getEmailManager().updateMessages(callback);
return FALSE;
}
ScopeLogger();
FindMsgCallbackUserData* callback = static_cast<FindMsgCallbackUserData*>(data);
- EmailManager::getInstance().findMessages(callback);
+ callback->getEmailManager().findMessages(callback);
return FALSE;
}
ScopeLogger();
ConversationCallbackData* callback = static_cast<ConversationCallbackData*>(data);
- EmailManager::getInstance().findConversations(callback);
+ callback->getEmailManager().findConversations(callback);
return FALSE;
}
ScopeLogger();
ConversationCallbackData* callback = static_cast<ConversationCallbackData*>(data);
- EmailManager::getInstance().removeConversations(callback);
+ callback->getEmailManager().removeConversations(callback);
return FALSE;
}
ScopeLogger();
FoldersCallbackData* callback = static_cast<FoldersCallbackData*>(data);
- EmailManager::getInstance().findFolders(callback);
+ callback->getEmailManager().findFolders(callback);
return FALSE;
}
ScopeLogger();
MessageCallbackUserData* callback = static_cast<MessageCallbackUserData*>(data);
- ShortMsgManager::getInstance().addDraftMessage(callback);
+ callback->getShortMsgManager().addDraftMessage(callback);
return false;
}
ScopeLogger();
MessagesCallbackUserData* callback = static_cast<MessagesCallbackUserData*>(data);
- ShortMsgManager::getInstance().removeMessages(callback);
+ callback->getShortMsgManager().removeMessages(callback);
return false;
}
ScopeLogger();
MessagesCallbackUserData* callback = static_cast<MessagesCallbackUserData*>(data);
- ShortMsgManager::getInstance().updateMessages(callback);
+ callback->getShortMsgManager().updateMessages(callback);
return false;
}
ScopeLogger();
FindMsgCallbackUserData* callback = static_cast<FindMsgCallbackUserData*>(data);
- ShortMsgManager::getInstance().findMessages(callback);
+ callback->getShortMsgManager().findMessages(callback);
return false;
}
ScopeLogger();
ConversationCallbackData* callback = static_cast<ConversationCallbackData*>(data);
- ShortMsgManager::getInstance().findConversations(callback);
+ callback->getShortMsgManager().findConversations(callback);
return false;
}
ScopeLogger();
ConversationCallbackData* callback = static_cast<ConversationCallbackData*>(data);
- ShortMsgManager::getInstance().removeConversations(callback);
+ callback->getShortMsgManager().removeConversations(callback);
return false;
}
namespace messaging {
MessagesCallbackUserData::MessagesCallbackUserData(PostQueue& queue, long cid,
+ MessagingInstance& instance,
bool keep /* = false*/)
- : CallbackUserData(queue, cid, keep), m_service_type(UNDEFINED) {
+ : CallbackUserData(queue, cid, instance, keep), m_service_type(UNDEFINED) {
ScopeLogger();
}
class MessagesCallbackUserData : public CallbackUserData {
public:
- MessagesCallbackUserData(PostQueue& queue, long cid, bool keep = false);
+ MessagesCallbackUserData(PostQueue& queue, long cid, MessagingInstance& instance,
+ bool keep = false);
virtual ~MessagesCallbackUserData();
void addMessage(std::shared_ptr<Message> msg);
const char* MESSAGESREMOVED = "messagesremoved";
MessagesChangeCallback::MessagesChangeCallback(long cid, int service_id, MessageType service_type,
- PostQueue& queue)
- : m_callback_data(queue, cid, true),
+ PostQueue& queue, MessagingInstance& instance)
+ : m_callback_data(queue, cid, instance, true),
m_service_id(service_id),
m_msg_type(service_type),
m_is_act(true) {
public:
typedef void (MessagesChangeCallback::*Signature)(const MessagePtrVector& conversations);
- MessagesChangeCallback(long cid, int service_id, MessageType service_type, PostQueue& queue);
+ MessagesChangeCallback(long cid, int service_id, MessageType service_type, PostQueue& queue,
+ MessagingInstance& instance);
virtual ~MessagesChangeCallback();
void added(const MessagePtrVector& messages);
common::Instance* MessagingExtension::CreateInstance() {
ScopeLogger();
- PlatformResult ret = extension::messaging::EmailManager::InitializeEmailService();
+ extension::messaging::MessagingInstance* instance = new extension::messaging::MessagingInstance();
+ PlatformResult ret = instance->getEmailManager().InitializeEmailService();
if (ret.IsError()) {
LoggerE("Initializing the email service failed (%s)", ret.message().c_str());
return nullptr;
}
- return new extension::messaging::MessagingInstance();
+ return static_cast<Instance*>(instance);
}
return; \
}
+EmailManager& MessagingInstance::getEmailManager() {
+ return email_manager_;
+}
+
+ShortMsgManager& MessagingInstance::getShortMsgManager() {
+ return short_msg_manager_;
+}
+
void MessagingInstance::GetMessageServices(const picojson::value& args, picojson::object& out) {
ScopeLogger();
obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
std::shared_ptr<Message> message;
- PlatformResult ret = MessagingUtil::jsonToMessage(v_message, &message);
+ PlatformResult ret = MessagingUtil::jsonToMessage(v_message, &message, *this);
if (ret.IsError()) {
POST_AND_RETURN(ret, json, obj)
}
- MessageRecipientsCallbackData* callback = new MessageRecipientsCallbackData(queue_, callbackId);
+ MessageRecipientsCallbackData* callback =
+ new MessageRecipientsCallbackData(queue_, callbackId, *this);
long simIndex = 0;
int serviceId = 0;
obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
std::shared_ptr<Message> message;
- PlatformResult ret = MessagingUtil::jsonToMessage(json_message, &message);
+ PlatformResult ret = MessagingUtil::jsonToMessage(json_message, &message, *this);
if (ret.IsError()) {
POST_AND_RETURN(ret, json, obj)
}
- MessageBodyCallbackData* callback = new MessageBodyCallbackData(queue_, callbackId);
+ MessageBodyCallbackData* callback = new MessageBodyCallbackData(queue_, callbackId, *this);
callback->setMessage(message);
picojson::value attachment = data.at(LOAD_MESSAGE_ATTACHMENT_ARGS_ATTACHMENT);
const double callbackId = args.get(JSON_CALLBACK_ID).get<double>();
- MessageAttachmentCallbackData* callback = new MessageAttachmentCallbackData(queue_, callbackId);
+ MessageAttachmentCallbackData* callback =
+ new MessageAttachmentCallbackData(queue_, callbackId, *this);
callback->setMessageAttachment(MessagingUtil::jsonToMessageAttachment(attachment));
callback->AddToQueue();
limit = static_cast<long>(v_limit.get<double>());
}
- SyncCallbackData* callback = new SyncCallbackData(queue_, callbackId);
+ SyncCallbackData* callback = new SyncCallbackData(queue_, callbackId, *this);
callback->setAccountId(id);
callback->setLimit(limit);
limit = static_cast<long>(v_limit.get<double>());
}
- SyncFolderCallbackData* callback = new SyncFolderCallbackData(queue_, callbackId);
+ SyncFolderCallbackData* callback = new SyncFolderCallbackData(queue_, callbackId, *this);
callback->setAccountId(id);
callback->setMessageFolder(MessagingUtil::jsonToMessageFolder(v_folder));
callback->setLimit(limit);
obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
std::shared_ptr<Message> message;
- PlatformResult ret = MessagingUtil::jsonToMessage(v_message, &message);
+ PlatformResult ret = MessagingUtil::jsonToMessage(v_message, &message, *this);
if (ret.IsError()) {
POST_AND_RETURN(ret, json, obj)
}
- MessageCallbackUserData* callback = new MessageCallbackUserData(queue_, callbackId);
+ MessageCallbackUserData* callback = new MessageCallbackUserData(queue_, callbackId, *this);
callback->setMessage(message);
int serviceId = getServiceIdFromJSON(data);
int serviceId = getServiceIdFromJSON(data);
auto storage = manager_.getMessageService(serviceId)->getMsgStorage();
- FindMsgCallbackUserData* callback = new FindMsgCallbackUserData(queue_, callbackId);
+ FindMsgCallbackUserData* callback = new FindMsgCallbackUserData(queue_, callbackId, *this);
callback->setFilter(filter);
callback->setLimit(limit);
callback->setOffset(offset);
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(queue_, callbackId);
+ MessagesCallbackUserData* callback = new MessagesCallbackUserData(queue_, callbackId, *this);
- auto each = [callback](picojson::value& v) -> void {
+ auto each = [callback, this](picojson::value& v) -> void {
std::shared_ptr<Message> message;
- PlatformResult ret = MessagingUtil::jsonToMessage(v, &message);
+ PlatformResult ret = MessagingUtil::jsonToMessage(v, &message, *this);
if (ret.IsSuccess()) {
callback->addMessage(message);
}
auto pico_array = pico_messages.get<picojson::array>();
const double callbackId = args.get(JSON_CALLBACK_ID).get<double>();
- auto callback = new MessagesCallbackUserData(queue_, callbackId);
+ auto callback = new MessagesCallbackUserData(queue_, callbackId, *this);
- std::for_each(pico_array.begin(), pico_array.end(), [&callback](picojson::value& v) -> void {
- std::shared_ptr<Message> message;
- PlatformResult ret = MessagingUtil::jsonToMessage(v, &message);
- if (ret.IsSuccess()) {
- callback->addMessage(message);
- }
- });
+ std::for_each(pico_array.begin(), pico_array.end(),
+ [&callback, this](picojson::value& v) -> void {
+ std::shared_ptr<Message> message;
+ PlatformResult ret = MessagingUtil::jsonToMessage(v, &message, *this);
+ if (ret.IsSuccess()) {
+ callback->addMessage(message);
+ }
+ });
auto service = manager_.getMessageService(getServiceIdFromJSON(data));
int serviceId = getServiceIdFromJSON(data);
- ConversationCallbackData* callback = new ConversationCallbackData(queue_, callbackId);
+ ConversationCallbackData* callback = new ConversationCallbackData(queue_, callbackId, *this);
callback->setFilter(filter);
callback->setLimit(limit);
callback->setOffset(offset);
picojson::object& obj = json->get<picojson::object>();
obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
- ConversationCallbackData* callback = new ConversationCallbackData(queue_, callbackId);
+ ConversationCallbackData* callback = new ConversationCallbackData(queue_, callbackId, *this);
PlatformResult ret(ErrorCode::NO_ERROR);
for (auto it = conversations.begin(); it != conversations.end(); ++it) {
POST_AND_RETURN(ret, json, obj)
}
- FoldersCallbackData* callback = new FoldersCallbackData(queue_, callbackId);
+ FoldersCallbackData* callback = new FoldersCallbackData(queue_, callbackId, *this);
callback->setFilter(filter);
callback->AddToQueue();
auto service = manager_.getMessageService(serviceId);
- std::shared_ptr<MessagesChangeCallback> callback(
- new MessagesChangeCallback(kDumbCallbackId, serviceId, service->getMsgServiceType(), queue_));
+ std::shared_ptr<MessagesChangeCallback> callback(new MessagesChangeCallback(
+ kDumbCallbackId, serviceId, service->getMsgServiceType(), queue_, *this));
callback->setFilter(filter);
auto service = manager_.getMessageService(serviceId);
std::shared_ptr<ConversationsChangeCallback> callback(new ConversationsChangeCallback(
- static_cast<long>(-1), serviceId, service->getMsgServiceType(), queue_));
+ static_cast<long>(-1), serviceId, service->getMsgServiceType(), queue_, *this));
callback->setFilter(filter);
auto service = manager_.getMessageService(serviceId);
std::shared_ptr<FoldersChangeCallback> callback(new FoldersChangeCallback(
- static_cast<long>(-1), serviceId, service->getMsgServiceType(), queue_));
+ static_cast<long>(-1), serviceId, service->getMsgServiceType(), queue_, *this));
callback->setFilter(filter);
std::string status;
if (FUN_MESSAGE_MESSAGING_EMAIL == type) {
- status = EmailManager::getInstance().getMessageStatus(id);
+ status = email_manager_.getMessageStatus(id);
} else {
- status = ShortMsgManager::getInstance().getMessageStatus(id);
+ status = short_msg_manager_.getMessageStatus(id);
}
ReportSuccess(picojson::value(status), out);
#include "common/extension.h"
+#include "email_manager.h"
#include "messaging_manager.h"
#include "messaging_util.h"
+#include "short_message_manager.h"
namespace extension {
namespace messaging {
public:
MessagingInstance();
virtual ~MessagingInstance();
+ EmailManager& getEmailManager();
+ ShortMsgManager& getShortMsgManager();
private:
void GetMessageServices(const picojson::value& args, picojson::object& out);
void MessageGetMessageStatus(const picojson::value& args, picojson::object& out);
MessagingManager manager_;
+ ShortMsgManager short_msg_manager_;
+ EmailManager email_manager_;
PostQueue queue_;
};
if (ret != MSG_SUCCESS) {
LoggerE("Cannot get message handle: %d", ret);
} else {
- ShortMsgManager::getInstance().registerStatusCallback(m_msg_handle);
+ instance.getShortMsgManager().registerStatusCallback(m_msg_handle);
}
m_sms_service = std::make_pair(UNDEFINED_MESSAGE_SERVICE, nullptr);
delete user_data->sms_service->second;
}
- MessageService* service = MessageServiceShortMsg::GetSmsMessageService();
+ MessageService* service =
+ MessageServiceShortMsg::GetSmsMessageService(user_data->instance_);
if (!service) {
platform_result = LogAndCreateResult(ErrorCode::UNKNOWN_ERR,
delete user_data->mms_service->second;
}
- MessageService* service = MessageServiceShortMsg::GetMmsMessageService();
+ MessageService* service =
+ MessageServiceShortMsg::GetMmsMessageService(user_data->instance_);
if (!service) {
platform_result = LogAndCreateResult(ErrorCode::UNKNOWN_ERR,
LoggerD("Account[%d/%d] id: %d, name: %s", i, count, email_accounts[i].account_id,
name.c_str());
- MessageService* service = new (std::nothrow)
- MessageServiceEmail(email_accounts[i].account_id, name.c_str());
+ MessageService* service = new (std::nothrow) MessageServiceEmail(
+ email_accounts[i].account_id, name.c_str(), user_data->instance_);
if (!service) {
LoggerD("message service[%d] is NULL", i);
std::for_each(msgServices.begin(), msgServices.end(),
}
PlatformResult MessagingUtil::jsonToMessage(const picojson::value& json,
- std::shared_ptr<Message>* result_message) {
+ std::shared_ptr<Message>* result_message,
+ MessagingInstance& instance) {
ScopeLogger();
std::shared_ptr<Message> message;
picojson::object data = json.get<picojson::object>();
} else {
std::string mid = data.at(MESSAGE_ATTRIBUTE_ID).get<std::string>();
int message_id = std::atoi(mid.c_str());
- platform_result = Message::findShortMessageById(message_id, &message);
+ platform_result = Message::findShortMessageById(message_id, instance, &message);
if (!platform_result) return platform_result;
}
break;
PostQueue::~PostQueue() {
ScopeLogger("this: [%p]", this);
- EmailManager::getInstance().RemoveCallbacksByQueue(*this);
+ instance_.getEmailManager().RemoveCallbacksByQueue(*this);
}
void PostQueue::addAndResolve(const long cid, PostPriority priority, const std::string& json) {
static picojson::value conversationToJson(std::shared_ptr<MessageConversation> conversation);
static picojson::value folderToJson(std::shared_ptr<MessageFolder> folder);
static common::PlatformResult jsonToMessage(const picojson::value& json,
- std::shared_ptr<Message>* result);
+ std::shared_ptr<Message>* result,
+ MessagingInstance& instance);
static std::shared_ptr<MessageBody> jsonToMessageBody(const picojson::value& json);
static std::shared_ptr<MessageFolder> jsonToMessageFolder(const picojson::value& json);
static tizen::SortModePtr jsonToSortMode(const picojson::object& json);
namespace extension {
namespace messaging {
-ShortMsgManager& ShortMsgManager::getInstance() {
- ScopeLogger();
-
- static ShortMsgManager instance;
- return instance;
-}
-
static gboolean sendMessageCompleteCB(void* data) {
ScopeLogger("callback:%p", data);
static void sent_status_cb(msg_handle_t handle, msg_struct_t sent_status, void* data) {
ScopeLogger();
- ShortMsgManager::getInstance().sendStatusCallback(sent_status);
+ ShortMsgManager* short_msg_manager = static_cast<ShortMsgManager*>(data);
+ short_msg_manager->sendStatusCallback(sent_status);
return;
}
-PlatformResult ShortMsgManager::callProperEventMessages(
- EventMessages* event, msg_storage_change_type_t storageChangeType) {
+PlatformResult ShortMsgManager::callProperEventMessages(EventMessages* event,
+ msg_storage_change_type_t storageChangeType,
+ ShortMsgManager* shortMsgManager) {
ScopeLogger(
"event.items.size()=%d event.removed_conversations.size()=%d"
" sChangeType:%d",
eventConv->items = event->removed_conversations;
} else {
PlatformResult ret = ShortMsgManager::getConversationsForMessages(
- event->items, storageChangeType, &(eventConv->items));
+ event->items, storageChangeType, &(eventConv->items), shortMsgManager);
if (ret.IsError()) {
LoggerD("Error while getting conversations for message");
delete event;
eventMMS->service_type = MessageType::MMS;
eventMMS->service_id = MMS_ACCOUNT_ID;
+ ShortMsgManager* short_msg_manager = static_cast<ShortMsgManager*>(data);
+
if (MSG_STORAGE_CHANGE_DELETE == storageChangeType) {
- ShortMsgManager& msg_manager = ShortMsgManager::getInstance();
- std::lock_guard<std::mutex> lock(msg_manager.m_mutex);
+ std::lock_guard<std::mutex> lock(short_msg_manager->m_mutex);
std::map<int, MessagePtr>* rem_msgs[2] = {
// Recently removed messages
- &msg_manager.m_sms_removed_messages, &msg_manager.m_mms_removed_messages};
+ &short_msg_manager->m_sms_removed_messages, &short_msg_manager->m_mms_removed_messages};
std::map<int, int>* rem_convs[2] = {// Recently removed conversations
- &msg_manager.m_sms_removed_msg_id_conv_id_map,
- &msg_manager.m_mms_removed_msg_id_conv_id_map};
+ &short_msg_manager->m_sms_removed_msg_id_conv_id_map,
+ &short_msg_manager->m_mms_removed_msg_id_conv_id_map};
EventMessages* dest_event[2] = {// SMS/MMS EventMessage to be propagated
eventSMS, eventMMS};
- std::map<int, ConversationPtr>* conv_map[2] = {// Map conversationId - object
- &msg_manager.m_sms_removed_conv_id_object_map,
- &msg_manager.m_mms_removed_conv_id_object_map};
+ std::map<int, ConversationPtr>* conv_map[2] = {
+ // Map conversationId - object
+ &short_msg_manager->m_sms_removed_conv_id_object_map,
+ &short_msg_manager->m_mms_removed_conv_id_object_map};
for (int event_i = 0; event_i < 2; ++event_i) {
std::map<int, MessagePtr>& cur_rem_msgs = *(rem_msgs[event_i]);
PlatformResult ret(ErrorCode::NO_ERROR);
for (int i = 0; i < pMsgIdList->nCount; ++i) {
msg_struct_t msg;
- ret = ShortMsgManager::getInstance().getMessage(pMsgIdList->msgIdList[i], &msg);
+ ret = short_msg_manager->getMessage(pMsgIdList->msgIdList[i], &msg);
if (ret.IsError() || NULL == msg) {
LoggerE("Failed to load short message");
delete eventSMS;
}
if (!eventSMS->items.empty() || !eventSMS->removed_conversations.empty()) {
- PlatformResult ret = ShortMsgManager::callProperEventMessages(eventSMS, storageChangeType);
+ PlatformResult ret =
+ ShortMsgManager::callProperEventMessages(eventSMS, storageChangeType, short_msg_manager);
// PlatformResult could be ignored here. eventSMS is deleted in callProperEventMessages()
} else {
LoggerD("No SMS messages, not triggering eventSMS");
eventSMS = NULL;
}
if (!eventMMS->items.empty() || !eventMMS->removed_conversations.empty()) {
- PlatformResult ret = ShortMsgManager::callProperEventMessages(eventMMS, storageChangeType);
+ PlatformResult ret =
+ ShortMsgManager::callProperEventMessages(eventMMS, storageChangeType, short_msg_manager);
// PlatformResult could be ignored here. eventMMS is deleted in callProperEventMessages()
} else {
LoggerD("No MMS messages, not triggering eventMMS");
ScopeLogger();
m_msg_handle = msg_handle;
// set message sent status callback
- if (MSG_SUCCESS != msg_reg_sent_status_callback(m_msg_handle, &sent_status_cb, NULL)) {
+ if (MSG_SUCCESS !=
+ msg_reg_sent_status_callback(m_msg_handle, &sent_status_cb, static_cast<void*>(this))) {
LoggerE("sent status callback register error!!!");
}
- if (MSG_SUCCESS != msg_reg_storage_change_callback(m_msg_handle, &storage_change_cb, NULL)) {
+ if (MSG_SUCCESS !=
+ msg_reg_storage_change_callback(m_msg_handle, &storage_change_cb, static_cast<void*>(this))) {
LoggerE("storage change callback register error!");
}
}
PlatformResult ShortMsgManager::getConversationsForMessages(
MessagePtrVector messages, msg_storage_change_type_t storageChangeType,
- ConversationPtrVector* result) {
+ ConversationPtrVector* result, ShortMsgManager* shortMsgManager) {
ScopeLogger("messages.size()=%d storageChangeType=%d", messages.size(), storageChangeType);
std::unordered_set<int> unique_conv_ids;
unique_conv_ids.insert(conv_id);
ConversationPtr conv;
PlatformResult ret = MessageConversation::convertMsgConversationToObject(
- conv_id, ShortMsgManager::getInstance().m_msg_handle, &conv);
+ conv_id, shortMsgManager->m_msg_handle, &conv);
if (ret.IsError()) {
LoggerD("Convert msg conversation to object failed (%s)", ret.message().c_str());
return ret;
class ShortMsgManager {
public:
- static ShortMsgManager& getInstance();
+ ShortMsgManager();
+ virtual ~ShortMsgManager();
common::PlatformResult sendMessage(MessageRecipientsCallbackData* callback);
void sendStatusCallback(msg_struct_t sent_status);
std::string getMessageStatus(int id);
private:
- ShortMsgManager();
- ShortMsgManager(const ShortMsgManager&);
- void operator=(const ShortMsgManager&);
- virtual ~ShortMsgManager();
-
/**
* Listener for msg storage changes. Calls callbacks from ChangeListenerContainer.
* @param handle
*/
static common::PlatformResult getConversationsForMessages(
MessagePtrVector messages, msg_storage_change_type_t storageChangeType,
- ConversationPtrVector* result);
- static common::PlatformResult callProperEventMessages(
- EventMessages* event, msg_storage_change_type_t storageChangeType);
+ ConversationPtrVector* result, ShortMsgManager* shortMsgManager);
+ static common::PlatformResult callProperEventMessages(EventMessages* event,
+ msg_storage_change_type_t storageChangeType,
+ ShortMsgManager* shortMsgManager);
typedef std::map<msg_request_id_t, MessageRecipientsCallbackData*> SendReqMap;
SendReqMap m_sendRequests;
msg_handle_t m_msg_handle;