2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.tizenopensource.org/license
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 #include "MsgUtilFile.h"
21 #include "MsgException.h"
22 #include "MsgCppTypes.h"
23 //#include "MsgSoundPlayer.h"
24 #include "MsgUtilFunction.h"
25 #include "MsgStorageHandler.h"
26 #include "MsgPluginManager.h"
27 #include "MsgTransManager.h"
28 #include "MsgCmdHandler.h"
31 /*==================================================================================================
32 FUNCTION IMPLEMENTATION
33 ==================================================================================================*/
34 int MsgAddMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
36 msg_error_t err = MSG_SUCCESS;
38 char* encodedData = NULL;
39 AutoPtr<char> buf(&encodedData);
41 int dataSize = 0, eventSize = 0;
44 MSG_MESSAGE_INFO_S* pMsgInfo = (MSG_MESSAGE_INFO_S*)pCmd->cmdData;
47 MSG_SENDINGOPT_INFO_S* pSendOptInfo = (MSG_SENDINGOPT_INFO_S*)(pCmd->cmdData + sizeof(MSG_MESSAGE_INFO_S));
50 err = MsgStoAddMessage(pMsgInfo, pSendOptInfo);
52 if (err == MSG_SUCCESS) {
53 MSG_DEBUG("Command Handle Success : MsgStoAddMessage()");
55 // Encoding Message ID
56 dataSize = MsgEncodeMsgId(&(pMsgInfo->msgId), &encodedData);
58 MSG_DEBUG("Command Handle Fail : MsgStoAddMessage()");
61 // Delete Temp File for Message Data
62 if (pMsgInfo->bTextSms == false)
63 MsgDeleteFile(pMsgInfo->msgData); //ipc
66 msg_id_list_s msgIdList;
67 msg_message_id_t msgIds[1];
68 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
71 msgIds[0] = pMsgInfo->msgId;
72 msgIdList.msgIdList = msgIds;
74 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_INSERT, &msgIdList);
77 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_ADD_MSG, err, (void**)ppEvent);
83 int MsgAddSyncMLMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
85 msg_error_t err = MSG_SUCCESS;
89 int extId = 0, pinCode = 0;
91 MSG_MESSAGE_INFO_S msgInfo = {};
93 memcpy(&extId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(int));
94 memcpy(&pinCode, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(int)), sizeof(int));
95 memcpy(&msgInfo, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(int)+sizeof(int)), sizeof(MSG_MESSAGE_INFO_S));
98 err = MsgStoAddSyncMLMessage(&msgInfo, extId, pinCode);
100 if (err == MSG_SUCCESS)
102 MSG_DEBUG("Command Handle Success : MsgStoAddSyncMLMessage()");
104 // broadcast to listener threads, here
105 MsgTransactionManager::instance()->broadcastIncomingMsgCB(err, &msgInfo);
107 msg_id_list_s msgIdList;
108 msg_message_id_t msgIds[1];
109 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
111 msgIdList.nCount = 1;
112 msgIds[0] = msgInfo.msgId;
113 msgIdList.msgIdList = msgIds;
115 MsgTransactionManager::instance()->broadcastStorageChangeCB(err, MSG_STORAGE_CHANGE_INSERT, &msgIdList);
119 MSG_DEBUG("Command Handle Fail : MsgStoAddSyncMLMessage()");
123 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_ADD_SYNCML_MSG, err, (void**)ppEvent);
129 int MsgUpdateMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
131 msg_error_t err = MSG_SUCCESS;
136 MSG_MESSAGE_INFO_S* pMsgInfo = (MSG_MESSAGE_INFO_S*)pCmd->cmdData;
138 // Get Sending Option
139 MSG_SENDINGOPT_INFO_S* pSendOptInfo = (MSG_SENDINGOPT_INFO_S*)(pCmd->cmdData + sizeof(MSG_MESSAGE_INFO_S));
142 err = MsgStoUpdateMessage(pMsgInfo, pSendOptInfo);
144 if (err == MSG_SUCCESS)
145 MSG_DEBUG("Command Handle Success : MsgStoUpdateMessage()");
147 MSG_DEBUG("Command Handle Fail : MsgStoUpdateMessage()");
149 // Delete Temp File for Message Data
150 if (pMsgInfo->bTextSms == false)
151 MsgDeleteFile(pMsgInfo->msgData); //ipc
154 msg_id_list_s msgIdList;
155 msg_message_id_t msgIds[1];
156 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
158 msgIdList.nCount = 1;
159 msgIds[0] = pMsgInfo->msgId;
160 msgIdList.msgIdList = msgIds;
162 MsgTransactionManager::instance()->broadcastStorageChangeCB(err, MSG_STORAGE_CHANGE_UPDATE, &msgIdList);
165 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_MSG, err, (void**)ppEvent);
171 int MsgUpdateReadStatusHandler(const MSG_CMD_S *pCmd, char **ppEvent)
173 msg_error_t err = MSG_SUCCESS;
177 msg_message_id_t msgId;
180 memcpy(&msgId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_message_id_t));
181 memcpy(&readStatus, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_message_id_t)), sizeof(bool));
183 // Update Read Status
184 err = MsgStoUpdateReadStatus(msgId, readStatus);
186 if (err == MSG_SUCCESS)
188 MSG_DEBUG("Command Handle Success : MsgStoUpdateReadStatus()");
192 MSG_DEBUG("Command Handle Fail : MsgStoUpdateReadStatus()");
196 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_READ, err, (void**)ppEvent);
202 int MsgUpdateThreadReadStatusHandler(const MSG_CMD_S *pCmd, char **ppEvent)
204 msg_error_t err = MSG_SUCCESS;
208 msg_thread_id_t threadId;
211 memcpy(&threadId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_thread_id_t));
213 MsgStoGetThreadUnreadCnt(threadId, &unReadCnt);
215 MSG_DEBUG("unReadCnt [%d]", unReadCnt);
219 err = MsgStoUpdateThreadReadStatus(threadId);
221 if (err == MSG_SUCCESS)
222 MSG_DEBUG("Command Handle Success : MsgStoUpdateThreadReadStatus()");
224 MSG_DEBUG("Command Handle Fail : MsgStoUpdateThreadReadStatus()");
228 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_THREAD_READ, err, (void**)ppEvent);
235 int MsgUpdateProtectedStatusHandler(const MSG_CMD_S *pCmd, char **ppEvent)
237 msg_error_t err = MSG_SUCCESS;
241 msg_message_id_t msgId;
242 bool protectedStatus;
244 memcpy(&msgId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_message_id_t));
245 memcpy(&protectedStatus, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_message_id_t)), sizeof(bool));
247 // Update Protected Status
248 err = MsgStoUpdateProtectedStatus(msgId, protectedStatus);
250 if (err == MSG_SUCCESS)
252 MSG_DEBUG("Command Handle Success : MsgStoUpdateProtectedStatus()");
256 MSG_DEBUG("Command Handle Fail : MsgStoUpdateProtectedStatus()");
260 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_PROTECTED, err, (void**)ppEvent);
266 int MsgDeleteMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
268 msg_error_t err = MSG_SUCCESS;
274 msg_message_id_t* msgId = (msg_message_id_t*)pCmd->cmdData;
276 MsgStoGetSyncMLExtId(*msgId, &extId);
279 err = MsgStoDeleteMessage(*msgId, true);
281 if (err == MSG_SUCCESS) {
282 MSG_DEBUG("Command Handle Success : MsgStoDeleteMessage()");
285 // broadcast to listener threads, here
286 MsgTransactionManager::instance()->broadcastSyncMLMsgOperationCB(err, -1, extId);
289 msg_id_list_s msgIdList;
290 msg_message_id_t msgIds[1];
291 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
293 msgIdList.nCount = 1;
295 msgIdList.msgIdList = msgIds;
297 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_DELETE, &msgIdList);
299 MSG_DEBUG("Command Handle Fail : MsgStoDeleteMessage()");
303 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELETE_MSG, err, (void**)ppEvent);
309 int MsgDeleteAllMessageInFolderHandler(const MSG_CMD_S *pCmd, char **ppEvent)
311 msg_error_t err = MSG_SUCCESS;
315 msg_folder_id_t* folderId = (msg_folder_id_t*)pCmd->cmdData;
318 memcpy(&bOnlyDB, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_folder_id_t)), sizeof(bool));
321 msg_id_list_s msgIdList;
322 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
325 err = MsgStoDeleteAllMessageInFolder(*folderId, bOnlyDB, &msgIdList);
327 if (err == MSG_SUCCESS) {
328 MSG_DEBUG("Command Handle Success : MsgStoDeleteAllMessageInFolder()");
329 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_DELETE, &msgIdList);
330 if(msgIdList.msgIdList != NULL)
331 delete [] (char*)msgIdList.msgIdList;
333 MSG_DEBUG("Command Handle Fail : MsgStoDeleteAllMessageInFolder()");
337 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELALL_MSGINFOLDER, err, (void**)ppEvent);
344 int MsgDeleteMessageByListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
346 msg_error_t err = MSG_SUCCESS;
350 msg_id_list_s msgIdList;
351 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
353 msgIdList.nCount = *((int *)pCmd->cmdData);
355 MSG_DEBUG("msgIdList.nCount [%d]", msgIdList.nCount);
357 msg_message_id_t msgIds[msgIdList.nCount];
358 memset(msgIds, 0x00, sizeof(msgIds));
360 msgIdList.msgIdList = msgIds;
362 for (int i=0; i<msgIdList.nCount; i++) {
363 msgIds[i] = *(msg_message_id_t *)(((char*)pCmd->cmdData) + (sizeof(int)*(i+1)));
367 err = MsgStoDeleteMessageByList(&msgIdList);
369 if (err == MSG_SUCCESS) {
370 MSG_DEBUG("Command Handle Success : MsgStoDeleteMessageByList()");
371 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_DELETE, &msgIdList);
373 MSG_DEBUG("Command Handle Fail : MsgStoDeleteMessageByList()");
377 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELETE_MESSAGE_BY_LIST, err, (void**)ppEvent);
383 int MsgMoveMessageToFolderHandler(const MSG_CMD_S *pCmd, char **ppEvent)
385 msg_error_t err = MSG_SUCCESS;
389 msg_message_id_t msgId;
390 msg_folder_id_t folderId;
392 memcpy(&msgId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_message_id_t));
393 memcpy(&folderId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_message_id_t)), sizeof(msg_folder_id_t));
396 err = MsgStoMoveMessageToFolder(msgId, folderId);
398 if (err == MSG_SUCCESS) {
399 MSG_DEBUG("Command Handle Success : MsgStoMoveMessageToFolder()");
401 msg_id_list_s msgIdList;
402 msg_message_id_t msgIds[1];
403 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
405 msgIdList.nCount = 1;
407 msgIdList.msgIdList = msgIds;
409 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_UPDATE, &msgIdList);
411 MSG_DEBUG("Command Handle Fail : MsgStoMoveMessageToFolder()");
415 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_MOVE_MSGTOFOLDER, err, (void**)ppEvent);
421 int MsgMoveMessageToStorageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
423 msg_error_t err = MSG_SUCCESS;
427 msg_message_id_t msgId;
428 msg_storage_id_t storageId;
430 memcpy(&msgId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_message_id_t));
431 memcpy(&storageId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_message_id_t)), sizeof(msg_storage_id_t));
434 err = MsgStoMoveMessageToStorage(msgId, storageId);
436 if (err == MSG_SUCCESS)
438 MSG_DEBUG("Command Handle Success : MsgStoMoveMessageToStorage()");
442 MSG_DEBUG("Command Handle Fail : MsgStoMoveMessageToStorage()");
446 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_MOVE_MSGTOSTORAGE, err, (void**)ppEvent);
452 int MsgCountMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
454 msg_error_t err = MSG_SUCCESS;
456 char* encodedData = NULL;
457 AutoPtr<char> buf(&encodedData);
459 int dataSize = 0, eventSize = 0;
462 msg_folder_id_t* folderId = (msg_folder_id_t*)pCmd->cmdData;
465 MSG_COUNT_INFO_S countInfo;
467 err = MsgStoCountMessage(*folderId, &countInfo);
469 if (err == MSG_SUCCESS)
471 MSG_DEBUG("Command Handle Success : MsgStoCountMessage()");
473 // Encoding Messaging Count Data
474 dataSize = MsgEncodeCountInfo(&countInfo, &encodedData);
478 MSG_DEBUG("Command Handle Fail : MsgStoCountMessage()");
482 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_COUNT_MSG, err, (void**)ppEvent);
488 int MsgCountMsgByTypeHandler(const MSG_CMD_S *pCmd, char **ppEvent)
490 msg_error_t err = MSG_SUCCESS;
492 char* encodedData = NULL;
493 AutoPtr<char> buf(&encodedData);
495 int dataSize = 0, eventSize = 0;
498 MSG_MESSAGE_TYPE_S* pMsgType = (MSG_MESSAGE_TYPE_S*)pCmd->cmdData;
503 err = MsgStoCountMsgByType(pMsgType, &nMsgCnt);
505 if (err == MSG_SUCCESS)
507 MSG_DEBUG("Command Handle Success : MsgStoCountMsgByType()");
509 // Encoding Messaging Count Data
510 dataSize = MsgEncodeCountByMsgType(nMsgCnt, &encodedData);
514 MSG_DEBUG("Command Handle Fail : MsgStoCountMsgByType()");
518 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_COUNT_BY_MSGTYPE, err, (void**)ppEvent);
524 int MsgGetMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
526 msg_error_t err = MSG_SUCCESS;
529 msg_message_id_t* msgId = (msg_message_id_t*)pCmd->cmdData;
531 char* encodedData = NULL;
532 AutoPtr<char> buf(&encodedData);
534 int dataSize = 0, eventSize = 0;
537 MSG_MESSAGE_INFO_S msgInfo;
538 MSG_SENDINGOPT_INFO_S sendOptInfo;
540 memset(&msgInfo, 0x00, sizeof(MSG_MESSAGE_INFO_S));
541 memset(&sendOptInfo, 0x00, sizeof(MSG_SENDINGOPT_INFO_S));
543 err = MsgStoGetMessage(*msgId, &msgInfo, &sendOptInfo);
545 if (err == MSG_SUCCESS)
547 MSG_DEBUG("Command Handle Success : MsgStoGetMessage()");
549 // Encoding Message Info Data
550 dataSize = MsgEncodeMsgInfo(&msgInfo, &sendOptInfo, &encodedData);
554 MSG_DEBUG("Command Handle Fail : MsgStoGetMessage()");
557 // MsgSoundPlayStop();
560 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_MSG, err, (void**)ppEvent);
566 int MsgGetFolderViewListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
568 msg_error_t err = MSG_SUCCESS;
571 msg_folder_id_t folderId;
572 MSG_SORT_RULE_S sortRule;
574 memcpy(&folderId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_folder_id_t));
575 memcpy(&sortRule, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_folder_id_t)), sizeof(MSG_SORT_RULE_S));
577 char* encodedData = NULL;
578 AutoPtr<char> buf(&encodedData);
580 int dataSize = 0, eventSize = 0;
582 // Get Message Common Info
583 msg_struct_list_s folderViewList;
585 err = MsgStoGetFolderViewList(folderId, &sortRule, &folderViewList);
587 if (err == MSG_SUCCESS)
589 MSG_DEBUG("Command Handle Success : MsgStoGetFolderViewList()");
591 // Encoding Folder View List Data
592 // dataSize = MsgEncodeFolderViewList(&folderViewList, &encodedData);
594 MSG_DEBUG("dataSize [%d]", dataSize);
596 if (folderViewList.msg_struct_info != NULL)
598 delete [] folderViewList.msg_struct_info;
599 folderViewList.msg_struct_info = NULL;
604 MSG_DEBUG("Command Handle Fail : MsgStoGetFolderViewList()");
609 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_FOLDERVIEWLIST, MSG_SUCCESS, (void**)ppEvent);
615 int MsgAddFolderHandler(const MSG_CMD_S *pCmd, char **ppEvent)
617 msg_error_t err = MSG_SUCCESS;
622 MSG_FOLDER_INFO_S* pFolderInfo = (MSG_FOLDER_INFO_S*)pCmd->cmdData;
625 err = MsgStoAddFolder(pFolderInfo);
627 if (err == MSG_SUCCESS)
629 MSG_DEBUG("Command Handle Success : MsgStoAddFolder()");
633 MSG_DEBUG("Command Handle Fail : MsgStoAddFolder()");
637 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_ADD_FOLDER, err, (void**)ppEvent);
643 int MsgUpdateFolderHandler(const MSG_CMD_S *pCmd, char **ppEvent)
645 msg_error_t err = MSG_SUCCESS;
650 MSG_FOLDER_INFO_S* pFolderInfo = (MSG_FOLDER_INFO_S*)pCmd->cmdData;
653 err = MsgStoUpdateFolder(pFolderInfo);
655 if (err == MSG_SUCCESS)
657 MSG_DEBUG("Command Handle Success : MsgStoUpdateFolder()");
661 MSG_DEBUG("Command Handle Fail : MsgStoUpdateFolder()");
665 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_FOLDER, err, (void**)ppEvent);
671 int MsgDeleteFolderHandler(const MSG_CMD_S *pCmd, char **ppEvent)
673 msg_error_t err = MSG_SUCCESS;
678 msg_folder_id_t* pFolderInfo = (msg_folder_id_t*)pCmd->cmdData;
681 err = MsgStoDeleteFolder(*pFolderInfo);
683 if (err == MSG_SUCCESS)
685 MSG_DEBUG("Command Handle Success : MsgStoDeleteFolder()");
689 MSG_DEBUG("Command Handle Fail : MsgStoDeleteFolder()");
693 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELETE_FOLDER, err, (void**)ppEvent);
699 int MsgGetFolderListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
701 msg_error_t err = MSG_SUCCESS;
703 char* encodedData = NULL;
704 AutoPtr<char> buf(&encodedData);
706 int dataSize = 0, eventSize = 0;
709 msg_struct_list_s folderList;
711 err = MsgStoGetFolderList(&folderList);
713 if (err == MSG_SUCCESS)
715 MSG_DEBUG("Command Handle Success : MsgStoGetFolderList()");
717 // Encoding Folder List Data
718 dataSize = MsgEncodeFolderList(&folderList, &encodedData);
720 delete [] folderList.msg_struct_info;
724 MSG_DEBUG("Command Handle Fail : MsgStoGetFolderList()");
728 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_FOLDERLIST, err, (void**)ppEvent);
734 int MsgInitSimBySatHandler(const MSG_CMD_S *pCmd, char **ppEvent)
736 msg_error_t err = MSG_SUCCESS;
744 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_PLG_INIT_SIM_BY_SAT, err, (void**)ppEvent);
750 int MsgGetMsgTypeHandler(const MSG_CMD_S *pCmd, char **ppEvent)
752 msg_error_t err = MSG_SUCCESS;
754 char* encodedData = NULL;
755 AutoPtr<char> buf(&encodedData);
758 int dataSize = 0, eventSize = 0;
761 msg_message_id_t msgId;
763 memcpy(&msgId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_message_id_t));
766 MSG_MESSAGE_TYPE_S msgType;
768 err = MsgStoGetMsgType(msgId, &msgType);
770 if (err == MSG_SUCCESS)
772 MSG_DEBUG("Command Handle Success : MsgStoGetMsgType()");
774 // Encoding Storage List Data
775 dataSize = MsgEncodeMsgType(&msgType, &encodedData);
780 MSG_DEBUG("Command Handle Fail : MsgStoGetMsgType()");
784 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_MSG_TYPE, err, (void**)ppEvent);
790 int MsgGetThreadViewListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
792 msg_error_t err = MSG_SUCCESS;
794 MSG_SORT_RULE_S sortRule = {0};
796 memcpy(&sortRule, pCmd->cmdData, sizeof(MSG_SORT_RULE_S));
798 char* encodedData = NULL;
799 AutoPtr<char> buf(&encodedData);
801 int dataSize = 0, eventSize = 0;
803 // Get Thread View List
804 msg_struct_list_s msgThreadViewList;
806 err = MsgStoGetThreadViewList(&sortRule, &msgThreadViewList);
808 if (err == MSG_SUCCESS)
810 MSG_DEBUG("Command Handle Success : MsgStoGetThreadViewList()");
812 // Encoding Folder View List Data
813 dataSize = MsgEncodeThreadViewList(&msgThreadViewList, &encodedData);
815 MSG_DEBUG("dataSize [%d]", dataSize);
817 if (msgThreadViewList.msg_struct_info != NULL)
819 delete [] msgThreadViewList.msg_struct_info;
820 msgThreadViewList.msg_struct_info = NULL;
825 MSG_DEBUG("Command Handle Fail : MsgStoGetThreadViewList()");
830 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_THREADVIEWLIST, err, (void**)ppEvent);
836 int MsgGetConversationViewListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
838 msg_error_t err = MSG_SUCCESS;
840 msg_thread_id_t threadId;
842 memcpy(&threadId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_thread_id_t));
844 char* encodedData = NULL;
845 AutoPtr<char> buf(&encodedData);
847 int dataSize = 0, eventSize = 0;
849 msg_struct_list_s convViewList;
851 err = MsgStoGetConversationViewList(threadId, &convViewList);
853 if (err == MSG_SUCCESS)
855 MSG_DEBUG("Command Handle Success : MsgStoGetConversationViewList()");
857 // Encoding Folder View List Data
858 dataSize = MsgEncodeConversationViewList(&convViewList, &encodedData);
860 MSG_DEBUG("dataSize [%d]", dataSize);
862 if (convViewList.msg_struct_info != NULL)
864 delete [] convViewList.msg_struct_info;
865 convViewList.msg_struct_info = NULL;
870 MSG_DEBUG("Command Handle Fail : MsgStoGetConversationViewList()");
874 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_CONVERSATIONVIEWLIST, err, (void**)ppEvent);
880 int MsgDeleteThreadMessageListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
882 msg_error_t err = MSG_SUCCESS;
884 msg_thread_id_t threadId;
885 bool bIncludeProtect = false;
886 bool isSyncMLMsg = false;
888 memcpy(&threadId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_thread_id_t));
889 memcpy(&bIncludeProtect, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_thread_id_t)), sizeof(bool));
893 isSyncMLMsg = MsgStoCheckSyncMLMsgInThread(threadId);
895 msg_id_list_s msgIdList;
896 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
898 err = MsgStoDeleteThreadMessageList(threadId, bIncludeProtect, &msgIdList);
900 if (err == MSG_SUCCESS) {
901 MSG_DEBUG("Command Handle Success : MsgStoDeleteThreadMessageList()");
903 if(isSyncMLMsg == true) {
904 // broadcast to listener threads, here
905 MsgTransactionManager::instance()->broadcastSyncMLMsgOperationCB(err, -1, -1);
908 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_DELETE, &msgIdList);
909 if(msgIdList.msgIdList != NULL)
910 delete [] (char*)msgIdList.msgIdList;
914 MSG_DEBUG("Command Handle Fail : MsgStoDeleteThreadMessageList()");
915 if(msgIdList.msgIdList != NULL)
916 delete [] (char*)msgIdList.msgIdList;
920 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELETE_THREADMESSAGELIST, err, (void**)ppEvent);
926 int MsgCountMsgByContactHandler(const MSG_CMD_S *pCmd, char **ppEvent)
928 msg_error_t err = MSG_SUCCESS;
931 MSG_THREAD_LIST_INDEX_S addrInfo;
933 memcpy(&addrInfo, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(MSG_THREAD_LIST_INDEX_S));
935 char* encodedData = NULL;
936 AutoPtr<char> buf(&encodedData);
938 int dataSize = 0, eventSize = 0;
940 // Get Message Common Info
941 MSG_THREAD_COUNT_INFO_S threadCountInfo = {0};
943 err = MsgStoCountMsgByContact(&addrInfo, &threadCountInfo);
945 if (err == MSG_SUCCESS)
947 MSG_DEBUG("Command Handle Success : MsgStoCountMsgByContact()");
949 // Encoding Folder View List Data
950 dataSize = MsgEncodeMsgGetContactCount(&threadCountInfo, &encodedData);
952 MSG_DEBUG("dataSize [%d]", dataSize);
956 MSG_DEBUG("Command Handle Fail : MsgStoCountMsgByContact()");
960 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_CONTACT_COUNT, err, (void**)ppEvent);
966 int MsgGetQuickPanelDataHandler(const MSG_CMD_S *pCmd, char **ppEvent)
968 msg_error_t err = MSG_SUCCESS;
971 msg_quickpanel_type_t* type = (msg_quickpanel_type_t*)pCmd->cmdData;
973 char* encodedData = NULL;
974 AutoPtr<char> buf(&encodedData);
976 int dataSize = 0, eventSize = 0;
979 MSG_MESSAGE_INFO_S msgInfo;
981 memset(&msgInfo, 0x00, sizeof(MSG_MESSAGE_INFO_S));
983 err = MsgStoGetQuickPanelData(*type, &msgInfo);
985 if (err == MSG_SUCCESS)
987 MSG_DEBUG("Command Handle Success : MsgStoGetQuickPanelData()");
989 // Encoding Message Info Data
990 dataSize = MsgEncodeMsgInfo(&msgInfo, &encodedData);
994 MSG_DEBUG("Command Handle Fail : MsgStoGetQuickPanelData()");
998 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_QUICKPANEL_DATA, err, (void**)ppEvent);
1004 int MsgResetDatabaseHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1006 msg_error_t err = MSG_SUCCESS;
1011 err = MsgStoResetDatabase();
1013 if (err == MSG_SUCCESS)
1014 MSG_DEBUG("Command Handle Success : MsgStoResetDatabase()");
1016 MSG_DEBUG("Command Handle Fail : MsgStoResetDatabase()");
1019 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_RESET_DB, err, (void**)ppEvent);
1025 int MsgGetMemSizeHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1027 msg_error_t err = MSG_SUCCESS;
1029 char* encodedData = NULL;
1030 AutoPtr<char> buf(&encodedData);
1032 int dataSize = 0, eventSize = 0;
1035 unsigned int memsize = 0;
1037 memsize = MsgDu(MSG_DATA_ROOT_PATH);
1039 dataSize = MsgEncodeMemSize(&memsize, &encodedData);
1042 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_MEMSIZE, err, (void**)ppEvent);
1048 int MsgBackupMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1050 msg_error_t err = MSG_SUCCESS;
1053 char path[MSG_FILEPATH_LEN_MAX+1] = {0,};
1054 msg_message_backup_type_t type;
1056 memcpy(&type, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_message_backup_type_t));
1057 memcpy(&path, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_message_backup_type_t)), sizeof(path));
1059 MSG_DEBUG("type = %d, path = %s", type, path);
1061 err = MsgStoBackupMessage(type, path);
1062 if (err == MSG_SUCCESS)
1063 MSG_DEBUG("Command Handle Success : MsgBackupMessageHandler()");
1065 MSG_DEBUG("Command Handle Fail : MsgBackupMessageHandler()");
1068 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_BACKUP_MESSAGE, err, (void**)ppEvent);
1074 int MsgRestoreMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1076 msg_error_t err = MSG_SUCCESS;
1079 char path[MSG_FILEPATH_LEN_MAX+1] = {0,};
1080 memcpy(&path, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(path));
1081 MSG_DEBUG("path = %s", path);
1083 err = MsgStoRestoreMessage(path);
1085 if (err == MSG_SUCCESS)
1086 MSG_DEBUG("Command Handle Success : MsgStoRestoreMessage()");
1088 MSG_DEBUG("Command Handle Fail : MsgStoRestoreMessage()");
1091 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_RESTORE_MESSAGE, err, (void**)ppEvent);
1097 int MsgGetReportStatusHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1099 msg_error_t err = MSG_SUCCESS;
1102 msg_message_id_t* msgId = (msg_message_id_t*)pCmd->cmdData;
1104 char* encodedData = NULL;
1105 AutoPtr<char> buf(&encodedData);
1107 int dataSize = 0, eventSize = 0;
1109 MSG_REPORT_STATUS_INFO_S *reportStatus = NULL;
1110 int report_count = 0;
1112 err = MsgStoGetReportStatus(*msgId, &report_count, &reportStatus);
1114 if (err == MSG_SUCCESS)
1116 MSG_DEBUG("Command Handle Success : MsgGetReportStatusHandler()");
1118 // Encoding Report Status Data
1119 dataSize = MsgEncodeReportStatus(reportStatus, report_count, &encodedData);
1123 MSG_DEBUG("Command Handle Fail : MsgGetReportStatusHandler()");
1127 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_REPORT_STATUS, err, (void**)ppEvent);
1133 int MsgGetThreadIdByAddressHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1135 msg_error_t err = MSG_SUCCESS;
1137 MSG_MESSAGE_INFO_S msgInfo;
1138 memset(&msgInfo, 0x00, sizeof(MSG_MESSAGE_INFO_S));
1140 int *addrCnt = (int *)pCmd->cmdData;
1141 MSG_DEBUG("*addrCnt [%d]", *addrCnt);
1143 msgInfo.nAddressCnt = *addrCnt;
1144 for(int i=0; i<msgInfo.nAddressCnt; i++)
1145 memcpy(&msgInfo.addressList[i], (MSG_ADDRESS_INFO_S *)(pCmd->cmdData+sizeof(int)+(sizeof(MSG_ADDRESS_INFO_S)*i)), sizeof(MSG_ADDRESS_INFO_S));
1147 char* encodedData = NULL;
1148 AutoPtr<char> buf(&encodedData);
1150 int dataSize = 0, eventSize = 0;
1152 msg_thread_id_t threadId;
1154 err = MsgStoGetThreadIdByAddress(&msgInfo, &threadId);
1156 if (err == MSG_SUCCESS)
1158 MSG_DEBUG("threadId [%d]", threadId);
1159 MSG_DEBUG("Command Handle Success : MsgGetThreadIdByAddressHandler()");
1161 // Encoding threadId Data
1162 dataSize = MsgEncodeThreadId(&threadId, &encodedData);
1166 MSG_DEBUG("Command Handle Fail : MsgGetThreadIdByAddressHandler()");
1170 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_THREAD_ID_BY_ADDRESS, err, (void**)ppEvent);
1176 int MsgGetThreadInfoHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1178 msg_error_t err = MSG_SUCCESS;
1180 char* encodedData = NULL;
1181 AutoPtr<char> buf(&encodedData);
1186 msg_thread_id_t threadId;
1188 memcpy(&threadId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_thread_id_t));
1190 MSG_THREAD_VIEW_S threadInfo;
1191 memset(&threadInfo, 0x00, sizeof(threadInfo));
1193 err = MsgStoGetThreadInfo(threadId, &threadInfo);
1195 if (err == MSG_SUCCESS) {
1196 MSG_DEBUG("Command Handle Success : MsgStoGetThreadInfo()");
1198 // Encoding thread Info Data
1199 dataSize = MsgEncodeThreadInfo(&threadInfo, &encodedData);
1201 MSG_DEBUG("Command Handle Fail : MsgStoGetThreadInfo()");
1205 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_THREAD_INFO, err, (void**)ppEvent);
1211 #ifdef MMS_REPORT_OPERATIONS
1212 int MsgCheckReadReportRequestedHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1215 msg_error_t err = MSG_SUCCESS;
1217 char* encodedData = NULL;
1218 AutoPtr<char> buf(&encodedData);
1220 int dataSize = 0, eventSize = 0;
1223 msg_message_id_t* MsgId = (msg_message_id_t*)pCmd->cmdData;
1225 // Check ReadReport Is Requested
1226 bool bReadReportRequested;
1228 bReadReportRequested = MsgStoCheckReadReportRequested(*MsgId);
1229 if (err == MSG_SUCCESS)
1231 MSG_DEBUG("Command Handle Success : MsgStoCheckSendReadReport()");
1233 // Encoding ReadReportIsSent Data
1234 dataSize = MsgEncodeReadReportRequested(bReadReportRequested, &encodedData);
1238 MSG_DEBUG("Command Handle Fail : MsgStoCheckReadReportIsSent()");
1242 eventSize = MsgMakeStorageEvent(encodedData, dataSize, MSG_EVENT_PLG_CHECK_READ_REPORT_REQUESTED, err, (void**)ppEvent);
1248 int MsgCheckReadReportIsSentHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1251 msg_error_t err = MSG_SUCCESS;
1253 char* encodedData = NULL;
1254 AutoPtr<char> buf(&encodedData);
1256 int dataSize = 0, eventSize = 0;
1259 msg_message_id_t* MsgId = (msg_message_id_t*)pCmd->cmdData;
1261 // Check ReadReport Is Sent
1262 bool bReadReportIsSent;
1264 MSG_DEBUG("#### MSGID = %d ####", *MsgId);
1266 bReadReportIsSent = MsgStoCheckReadReportIsSent(*MsgId);
1267 MSG_DEBUG("######## 1. bReadStatusIsSent = %d #######", bReadReportIsSent);
1268 if (err == MSG_SUCCESS)
1270 MSG_DEBUG("Command Handle Success : MsgStoCheckReadReportIsSent()");
1272 // Encoding ReadReportIsSent Data
1273 dataSize = MsgEncodeReadReportIsSent(bReadReportIsSent, &encodedData);
1277 MSG_DEBUG("Command Handle Fail : MsgStoCheckReadReportIsSent()");
1281 eventSize = MsgMakeStorageEvent(encodedData, dataSize, MSG_EVENT_PLG_CHECK_READ_REPORT_IS_SENT, err, (void**)ppEvent);
1287 int MsgSetReadReportSendStatusHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1290 msg_error_t err = MSG_SUCCESS;
1292 char* encodedData = NULL;
1293 AutoPtr<char> buf(&encodedData);
1295 int dataSize = 0, eventSize = 0;
1298 msg_message_id_t msgId;
1299 int readReportSendStatus;
1301 memcpy(&msgId, (char*)pCmd + sizeof(MSG_CMD_TYPE_T), sizeof(msg_message_id_t));
1302 memcpy(&readReportSendStatus, (char*)pCmd + sizeof(MSG_CMD_TYPE_T) + sizeof(msg_message_id_t), sizeof(int));
1304 // Set Read Report Send Status
1305 err = MsgStoSetReadReportSendStatus(msgId, readReportSendStatus);
1307 if (err == MSG_SUCCESS)
1309 MSG_DEBUG("Command Handle Success : MsgStoUpdateReadStatus()");
1313 MSG_DEBUG("Command Handle Fail : MsgStoUpdateReadStatus()");
1317 eventSize = MsgMakeStorageEvent(encodedData, dataSize, MSG_EVENT_PLG_SET_READ_REPORT_SEND_STATUS, err, (void**)ppEvent);
1323 int MsgGetMmsVersionHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1326 msg_error_t err = MSG_SUCCESS;
1328 char* encodedData = NULL;
1329 AutoPtr<char> buf(&encodedData);
1331 int dataSize = 0, eventSize = 0;
1334 msg_message_id_t* MsgId = (msg_message_id_t*)pCmd->cmdData;
1336 // Check ReadReport Is Sent
1339 MSG_DEBUG("#### MSGID = %d ####", *MsgId);
1341 version = MsgStoGetMmsVersion(*MsgId);
1342 MSG_DEBUG("######## 1. version = %x #######", version);
1343 if (err == MSG_SUCCESS)
1345 MSG_DEBUG("Command Handle Success : MsgStoCheckReadReportIsSent()");
1347 // Encoding ReadReportIsSent Data
1348 dataSize = MsgEncodeMmsVersion(version, &encodedData);
1352 MSG_DEBUG("Command Handle Fail : MsgStoCheckReadReportIsSent()");
1356 eventSize = MsgMakeStorageEvent(encodedData, dataSize, MSG_EVENT_PLG_GET_MMS_VERSION, err, (void**)ppEvent);
1362 int MsgGetMmsStatusInfoHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1365 msg_error_t err = MSG_SUCCESS;
1367 char* encodedData = NULL;
1368 AutoPtr<char> buf(&encodedData);
1370 int dataSize = 0, eventSize = 0;
1373 msg_message_id_t* MsgId = (msg_message_id_t*)pCmd->cmdData;
1375 MMS_STATUS_INFO_S mmsStatusInfo;
1377 MSG_DEBUG("#### MSGID = %d ####", *MsgId);
1379 err = MsgStoGetMmsStatusInfo(*MsgId,&mmsStatusInfo);
1380 if (err == MSG_SUCCESS)
1382 MSG_DEBUG("Command Handle Success : MsgGetMmsStatusInfoHandler()");
1384 // Encoding ReadReportIsSent Data
1385 dataSize = MsgEncodeMmsStatusInfo(&mmsStatusInfo, &encodedData);
1389 MSG_DEBUG("Command Handle Fail : MsgGetMmsStatusInfoHandler()");
1393 eventSize = MsgMakeStorageEvent(encodedData, dataSize, MSG_EVENT_PLG_GET_MMS_STATUS_INFO, err, (void**)ppEvent);
1400 int MsgAddPushEventHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1402 msg_error_t err = MSG_SUCCESS;
1407 MSG_PUSH_EVENT_INFO_S* pPushEvent = (MSG_PUSH_EVENT_INFO_S*)pCmd->cmdData;
1410 err = MsgStoAddPushEvent(pPushEvent);
1412 if (err == MSG_SUCCESS) {
1413 MSG_DEBUG("Command Handle Success : MsgStoAddPushEvent()");
1415 MSG_DEBUG("Command Handle Fail : MsgStoAddMessage()");
1419 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_ADD_PUSH_EVENT, err, (void**)ppEvent);
1424 int MsgDeletePushEventHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1426 msg_error_t err = MSG_SUCCESS;
1431 MSG_PUSH_EVENT_INFO_S* pPushEvent = (MSG_PUSH_EVENT_INFO_S*)pCmd->cmdData;
1434 err = MsgStoDeletePushEvent(pPushEvent);
1436 if (err == MSG_SUCCESS) {
1437 MSG_DEBUG("Command Handle Success : MsgStoDeletePushEvent()");
1439 MSG_DEBUG("Command Handle Fail : MsgStoDeletePushEvent()");
1443 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELETE_PUSH_EVENT, err, (void**)ppEvent);
1448 int MsgUpdatePushEventHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1450 msg_error_t err = MSG_SUCCESS;
1456 MSG_PUSH_EVENT_INFO_S* pSrc = (MSG_PUSH_EVENT_INFO_S*)pCmd->cmdData;
1457 MSG_PUSH_EVENT_INFO_S* pDst = (MSG_PUSH_EVENT_INFO_S*)(pCmd->cmdData + sizeof(MSG_PUSH_EVENT_INFO_S));
1460 err = MsgStoUpdatePushEvent(pSrc, pDst);
1462 if (err == MSG_SUCCESS) {
1463 MSG_DEBUG("Command Handle Success : MsgStoUpdatePushEvent()");
1465 MSG_DEBUG("Command Handle Fail : MsgStoUpdatePushEvent()");
1469 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_PUSH_EVENT, err, (void**)ppEvent);