4 * Copyright (c) 2000 - 2014 Samsung Electronics Co., Ltd. All rights reserved
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
26 #include "MsgUtilFile.h"
27 #include "MsgException.h"
28 #include "MsgCppTypes.h"
29 //#include "MsgSoundPlayer.h"
30 #include "MsgUtilFunction.h"
31 #include "MsgStorageHandler.h"
32 #include "MsgPluginManager.h"
33 #include "MsgTransManager.h"
34 #include "MsgContact.h"
35 #include "MsgCmdHandler.h"
37 #define DB_MSG_SERVICE_GROUPE 6011
39 /*==================================================================================================
40 FUNCTION IMPLEMENTATION
41 ==================================================================================================*/
42 int MsgAddMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
44 msg_error_t err = MSG_SUCCESS;
46 char* encodedData = NULL;
47 AutoPtr<char> buf(&encodedData);
49 int dataSize = 0, eventSize = 0;
52 MSG_MESSAGE_INFO_S* pMsgInfo = (MSG_MESSAGE_INFO_S*)pCmd->cmdData;
55 MSG_SENDINGOPT_INFO_S* pSendOptInfo = (MSG_SENDINGOPT_INFO_S*)(pCmd->cmdData + sizeof(MSG_MESSAGE_INFO_S));
58 err = MsgStoAddMessage(pMsgInfo, pSendOptInfo);
60 if (err == MSG_SUCCESS) {
61 MSG_DEBUG("Command Handle Success : MsgStoAddMessage()");
63 // Encoding Message ID
64 dataSize = MsgEncodeMsgId(&(pMsgInfo->msgId), &encodedData);
66 MSG_DEBUG("Command Handle Fail : MsgStoAddMessage()");
69 // Delete Temp File for Message Data
70 if (pMsgInfo->bTextSms == false)
71 MsgDeleteFile(pMsgInfo->msgData); //ipc
74 msg_id_list_s msgIdList;
75 msg_message_id_t msgIds[1];
76 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
79 msgIds[0] = pMsgInfo->msgId;
80 msgIdList.msgIdList = msgIds;
82 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_INSERT, &msgIdList);
85 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_ADD_MSG, err, (void**)ppEvent);
91 int MsgAddSyncMLMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
93 msg_error_t err = MSG_SUCCESS;
97 int extId = 0, pinCode = 0;
99 MSG_MESSAGE_INFO_S msgInfo = {};
101 memcpy(&extId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(int));
102 memcpy(&pinCode, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(int)), sizeof(int));
103 memcpy(&msgInfo, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(int)+sizeof(int)), sizeof(MSG_MESSAGE_INFO_S));
106 err = MsgStoAddSyncMLMessage(&msgInfo, extId, pinCode);
108 if (err == MSG_SUCCESS)
110 MSG_DEBUG("Command Handle Success : MsgStoAddSyncMLMessage()");
112 // broadcast to listener threads, here
113 MsgTransactionManager::instance()->broadcastIncomingMsgCB(err, &msgInfo);
115 msg_id_list_s msgIdList;
116 msg_message_id_t msgIds[1];
117 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
119 msgIdList.nCount = 1;
120 msgIds[0] = msgInfo.msgId;
121 msgIdList.msgIdList = msgIds;
123 MsgTransactionManager::instance()->broadcastStorageChangeCB(err, MSG_STORAGE_CHANGE_INSERT, &msgIdList);
127 MSG_DEBUG("Command Handle Fail : MsgStoAddSyncMLMessage()");
131 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_ADD_SYNCML_MSG, err, (void**)ppEvent);
137 int MsgUpdateMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
139 msg_error_t err = MSG_SUCCESS;
144 MSG_MESSAGE_INFO_S* pMsgInfo = (MSG_MESSAGE_INFO_S*)pCmd->cmdData;
146 // Get Sending Option
147 MSG_SENDINGOPT_INFO_S* pSendOptInfo = (MSG_SENDINGOPT_INFO_S*)(pCmd->cmdData + sizeof(MSG_MESSAGE_INFO_S));
150 err = MsgStoUpdateMessage(pMsgInfo, pSendOptInfo);
152 if (err == MSG_SUCCESS)
153 MSG_DEBUG("Command Handle Success : MsgStoUpdateMessage()");
155 MSG_DEBUG("Command Handle Fail : MsgStoUpdateMessage()");
157 // Delete Temp File for Message Data
158 if (pMsgInfo->bTextSms == false)
159 MsgDeleteFile(pMsgInfo->msgData); //ipc
162 msg_id_list_s msgIdList;
163 msg_message_id_t msgIds[1];
164 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
166 msgIdList.nCount = 1;
167 msgIds[0] = pMsgInfo->msgId;
168 msgIdList.msgIdList = msgIds;
170 MsgTransactionManager::instance()->broadcastStorageChangeCB(err, MSG_STORAGE_CHANGE_UPDATE, &msgIdList);
173 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_MSG, err, (void**)ppEvent);
179 int MsgUpdateReadStatusHandler(const MSG_CMD_S *pCmd, char **ppEvent)
181 msg_error_t err = MSG_SUCCESS;
185 msg_message_id_t msgId;
188 memcpy(&msgId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_message_id_t));
189 memcpy(&readStatus, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_message_id_t)), sizeof(bool));
191 // Update Read Status
192 err = MsgStoUpdateReadStatus(msgId, readStatus);
194 if (err == MSG_SUCCESS)
196 MSG_DEBUG("Command Handle Success : MsgStoUpdateReadStatus()");
200 MSG_DEBUG("Command Handle Fail : MsgStoUpdateReadStatus()");
204 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_READ, err, (void**)ppEvent);
210 int MsgUpdateThreadReadStatusHandler(const MSG_CMD_S *pCmd, char **ppEvent)
212 msg_error_t err = MSG_SUCCESS;
216 msg_thread_id_t threadId;
219 memcpy(&threadId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_thread_id_t));
221 MsgStoGetThreadUnreadCnt(threadId, &unReadCnt);
223 MSG_DEBUG("unReadCnt [%d]", unReadCnt);
227 err = MsgStoUpdateThreadReadStatus(threadId);
229 if (err == MSG_SUCCESS)
230 MSG_DEBUG("Command Handle Success : MsgStoUpdateThreadReadStatus()");
232 MSG_DEBUG("Command Handle Fail : MsgStoUpdateThreadReadStatus()");
236 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_THREAD_READ, err, (void**)ppEvent);
243 int MsgUpdateProtectedStatusHandler(const MSG_CMD_S *pCmd, char **ppEvent)
245 msg_error_t err = MSG_SUCCESS;
249 msg_message_id_t msgId;
250 bool protectedStatus;
252 memcpy(&msgId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_message_id_t));
253 memcpy(&protectedStatus, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_message_id_t)), sizeof(bool));
255 // Update Protected Status
256 err = MsgStoUpdateProtectedStatus(msgId, protectedStatus);
258 if (err == MSG_SUCCESS)
260 MSG_DEBUG("Command Handle Success : MsgStoUpdateProtectedStatus()");
264 MSG_DEBUG("Command Handle Fail : MsgStoUpdateProtectedStatus()");
268 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_PROTECTED, err, (void**)ppEvent);
274 int MsgDeleteMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
276 msg_error_t err = MSG_SUCCESS;
282 msg_message_id_t* msgId = (msg_message_id_t*)pCmd->cmdData;
284 MsgStoGetSyncMLExtId(*msgId, &extId);
287 err = MsgStoDeleteMessage(*msgId, true);
289 if (err == MSG_SUCCESS) {
290 MSG_DEBUG("Command Handle Success : MsgStoDeleteMessage()");
293 // broadcast to listener threads, here
294 MsgTransactionManager::instance()->broadcastSyncMLMsgOperationCB(err, -1, extId);
297 msg_id_list_s msgIdList;
298 msg_message_id_t msgIds[1];
299 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
301 msgIdList.nCount = 1;
303 msgIdList.msgIdList = msgIds;
305 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_DELETE, &msgIdList);
307 MSG_DEBUG("Command Handle Fail : MsgStoDeleteMessage()");
311 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELETE_MSG, err, (void**)ppEvent);
317 int MsgDeleteAllMessageInFolderHandler(const MSG_CMD_S *pCmd, char **ppEvent)
319 msg_error_t err = MSG_SUCCESS;
323 msg_folder_id_t* folderId = (msg_folder_id_t*)pCmd->cmdData;
326 memcpy(&bOnlyDB, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_folder_id_t)), sizeof(bool));
329 msg_id_list_s msgIdList;
330 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
333 err = MsgStoDeleteAllMessageInFolder(*folderId, bOnlyDB, &msgIdList);
335 if (err == MSG_SUCCESS) {
336 MSG_DEBUG("Command Handle Success : MsgStoDeleteAllMessageInFolder()");
337 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_DELETE, &msgIdList);
338 if(msgIdList.msgIdList != NULL)
339 delete [] (char*)msgIdList.msgIdList;
341 MSG_DEBUG("Command Handle Fail : MsgStoDeleteAllMessageInFolder()");
345 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELALL_MSGINFOLDER, err, (void**)ppEvent);
352 int MsgDeleteMessageByListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
354 msg_error_t err = MSG_SUCCESS;
358 msg_id_list_s msgIdList;
359 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
361 msgIdList.nCount = *((int *)pCmd->cmdData);
363 MSG_DEBUG("msgIdList.nCount [%d]", msgIdList.nCount);
365 msg_message_id_t msgIds[msgIdList.nCount];
366 memset(msgIds, 0x00, sizeof(msgIds));
368 msgIdList.msgIdList = msgIds;
370 for (int i=0; i<msgIdList.nCount; i++) {
371 msgIds[i] = *(msg_message_id_t *)(((char*)pCmd->cmdData) + (sizeof(int)*(i+1)));
375 err = MsgStoDeleteMessageByList(&msgIdList);
377 if (err == MSG_SUCCESS) {
378 MSG_DEBUG("Command Handle Success : MsgStoDeleteMessageByList()");
379 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_DELETE, &msgIdList);
381 MSG_DEBUG("Command Handle Fail : MsgStoDeleteMessageByList()");
385 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELETE_MESSAGE_BY_LIST, err, (void**)ppEvent);
391 int MsgMoveMessageToFolderHandler(const MSG_CMD_S *pCmd, char **ppEvent)
393 msg_error_t err = MSG_SUCCESS;
397 msg_message_id_t msgId;
398 msg_folder_id_t folderId;
400 memcpy(&msgId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_message_id_t));
401 memcpy(&folderId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_message_id_t)), sizeof(msg_folder_id_t));
404 err = MsgStoMoveMessageToFolder(msgId, folderId);
406 if (err == MSG_SUCCESS) {
407 MSG_DEBUG("Command Handle Success : MsgStoMoveMessageToFolder()");
409 msg_id_list_s msgIdList;
410 msg_message_id_t msgIds[1];
411 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
413 msgIdList.nCount = 1;
415 msgIdList.msgIdList = msgIds;
417 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_UPDATE, &msgIdList);
419 MSG_DEBUG("Command Handle Fail : MsgStoMoveMessageToFolder()");
423 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_MOVE_MSGTOFOLDER, err, (void**)ppEvent);
429 int MsgMoveMessageToStorageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
431 msg_error_t err = MSG_SUCCESS;
435 msg_message_id_t msgId;
436 msg_storage_id_t storageId;
438 memcpy(&msgId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_message_id_t));
439 memcpy(&storageId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_message_id_t)), sizeof(msg_storage_id_t));
442 err = MsgStoMoveMessageToStorage(msgId, storageId);
444 if (err == MSG_SUCCESS)
446 MSG_DEBUG("Command Handle Success : MsgStoMoveMessageToStorage()");
450 MSG_DEBUG("Command Handle Fail : MsgStoMoveMessageToStorage()");
454 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_MOVE_MSGTOSTORAGE, err, (void**)ppEvent);
460 int MsgCountMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
462 msg_error_t err = MSG_SUCCESS;
464 char* encodedData = NULL;
465 AutoPtr<char> buf(&encodedData);
467 int dataSize = 0, eventSize = 0;
470 msg_folder_id_t* folderId = (msg_folder_id_t*)pCmd->cmdData;
473 MSG_COUNT_INFO_S countInfo;
475 err = MsgStoCountMessage(*folderId, &countInfo);
477 if (err == MSG_SUCCESS)
479 MSG_DEBUG("Command Handle Success : MsgStoCountMessage()");
481 // Encoding Messaging Count Data
482 dataSize = MsgEncodeCountInfo(&countInfo, &encodedData);
486 MSG_DEBUG("Command Handle Fail : MsgStoCountMessage()");
490 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_COUNT_MSG, err, (void**)ppEvent);
496 int MsgCountMsgByTypeHandler(const MSG_CMD_S *pCmd, char **ppEvent)
498 msg_error_t err = MSG_SUCCESS;
500 char* encodedData = NULL;
501 AutoPtr<char> buf(&encodedData);
503 int dataSize = 0, eventSize = 0;
506 MSG_MESSAGE_TYPE_S* pMsgType = (MSG_MESSAGE_TYPE_S*)pCmd->cmdData;
511 err = MsgStoCountMsgByType(pMsgType, &nMsgCnt);
513 if (err == MSG_SUCCESS)
515 MSG_DEBUG("Command Handle Success : MsgStoCountMsgByType()");
517 // Encoding Messaging Count Data
518 dataSize = MsgEncodeCountByMsgType(nMsgCnt, &encodedData);
522 MSG_DEBUG("Command Handle Fail : MsgStoCountMsgByType()");
526 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_COUNT_BY_MSGTYPE, err, (void**)ppEvent);
532 int MsgGetMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
534 msg_error_t err = MSG_SUCCESS;
537 msg_message_id_t* msgId = (msg_message_id_t*)pCmd->cmdData;
539 char* encodedData = NULL;
540 AutoPtr<char> buf(&encodedData);
542 int dataSize = 0, eventSize = 0;
545 MSG_MESSAGE_INFO_S msgInfo;
546 MSG_SENDINGOPT_INFO_S sendOptInfo;
548 memset(&msgInfo, 0x00, sizeof(MSG_MESSAGE_INFO_S));
549 memset(&sendOptInfo, 0x00, sizeof(MSG_SENDINGOPT_INFO_S));
551 err = MsgStoGetMessage(*msgId, &msgInfo, &sendOptInfo);
553 if (err == MSG_SUCCESS)
555 MSG_DEBUG("Command Handle Success : MsgStoGetMessage()");
557 // Encoding Message Info Data
558 dataSize = MsgEncodeMsgInfo(&msgInfo, &sendOptInfo, &encodedData);
562 MSG_DEBUG("Command Handle Fail : MsgStoGetMessage()");
565 // MsgSoundPlayStop();
568 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_MSG, err, (void**)ppEvent);
574 int MsgGetFolderViewListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
576 msg_error_t err = MSG_SUCCESS;
579 msg_folder_id_t folderId;
580 MSG_SORT_RULE_S sortRule;
582 memcpy(&folderId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_folder_id_t));
583 memcpy(&sortRule, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_folder_id_t)), sizeof(MSG_SORT_RULE_S));
585 char* encodedData = NULL;
586 AutoPtr<char> buf(&encodedData);
588 int dataSize = 0, eventSize = 0;
590 // Get Message Common Info
591 msg_struct_list_s folderViewList;
593 err = MsgStoGetFolderViewList(folderId, &sortRule, &folderViewList);
595 if (err == MSG_SUCCESS)
597 MSG_DEBUG("Command Handle Success : MsgStoGetFolderViewList()");
599 // Encoding Folder View List Data
600 // dataSize = MsgEncodeFolderViewList(&folderViewList, &encodedData);
602 MSG_DEBUG("dataSize [%d]", dataSize);
604 if (folderViewList.msg_struct_info != NULL)
606 delete [] folderViewList.msg_struct_info;
607 folderViewList.msg_struct_info = NULL;
612 MSG_DEBUG("Command Handle Fail : MsgStoGetFolderViewList()");
617 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_FOLDERVIEWLIST, MSG_SUCCESS, (void**)ppEvent);
623 int MsgAddFolderHandler(const MSG_CMD_S *pCmd, char **ppEvent)
625 msg_error_t err = MSG_SUCCESS;
630 MSG_FOLDER_INFO_S* pFolderInfo = (MSG_FOLDER_INFO_S*)pCmd->cmdData;
633 err = MsgStoAddFolder(pFolderInfo);
635 if (err == MSG_SUCCESS)
637 MSG_DEBUG("Command Handle Success : MsgStoAddFolder()");
641 MSG_DEBUG("Command Handle Fail : MsgStoAddFolder()");
645 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_ADD_FOLDER, err, (void**)ppEvent);
651 int MsgUpdateFolderHandler(const MSG_CMD_S *pCmd, char **ppEvent)
653 msg_error_t err = MSG_SUCCESS;
658 MSG_FOLDER_INFO_S* pFolderInfo = (MSG_FOLDER_INFO_S*)pCmd->cmdData;
661 err = MsgStoUpdateFolder(pFolderInfo);
663 if (err == MSG_SUCCESS)
665 MSG_DEBUG("Command Handle Success : MsgStoUpdateFolder()");
669 MSG_DEBUG("Command Handle Fail : MsgStoUpdateFolder()");
673 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_FOLDER, err, (void**)ppEvent);
679 int MsgDeleteFolderHandler(const MSG_CMD_S *pCmd, char **ppEvent)
681 msg_error_t err = MSG_SUCCESS;
686 msg_folder_id_t* pFolderInfo = (msg_folder_id_t*)pCmd->cmdData;
689 err = MsgStoDeleteFolder(*pFolderInfo);
691 if (err == MSG_SUCCESS)
693 MSG_DEBUG("Command Handle Success : MsgStoDeleteFolder()");
697 MSG_DEBUG("Command Handle Fail : MsgStoDeleteFolder()");
701 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELETE_FOLDER, err, (void**)ppEvent);
707 int MsgGetFolderListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
709 msg_error_t err = MSG_SUCCESS;
711 char* encodedData = NULL;
712 AutoPtr<char> buf(&encodedData);
714 int dataSize = 0, eventSize = 0;
717 msg_struct_list_s folderList;
719 err = MsgStoGetFolderList(&folderList);
721 if (err == MSG_SUCCESS)
723 MSG_DEBUG("Command Handle Success : MsgStoGetFolderList()");
725 // Encoding Folder List Data
726 dataSize = MsgEncodeFolderList(&folderList, &encodedData);
728 delete [] folderList.msg_struct_info;
732 MSG_DEBUG("Command Handle Fail : MsgStoGetFolderList()");
736 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_FOLDERLIST, err, (void**)ppEvent);
742 int MsgInitSimBySatHandler(const MSG_CMD_S *pCmd, char **ppEvent)
744 msg_error_t err = MSG_SUCCESS;
752 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_PLG_INIT_SIM_BY_SAT, err, (void**)ppEvent);
758 int MsgGetMsgTypeHandler(const MSG_CMD_S *pCmd, char **ppEvent)
760 msg_error_t err = MSG_SUCCESS;
762 char* encodedData = NULL;
763 AutoPtr<char> buf(&encodedData);
766 int dataSize = 0, eventSize = 0;
769 msg_message_id_t msgId;
771 memcpy(&msgId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_message_id_t));
774 MSG_MESSAGE_TYPE_S msgType;
776 err = MsgStoGetMsgType(msgId, &msgType);
778 if (err == MSG_SUCCESS)
780 MSG_DEBUG("Command Handle Success : MsgStoGetMsgType()");
782 // Encoding Storage List Data
783 dataSize = MsgEncodeMsgType(&msgType, &encodedData);
788 MSG_DEBUG("Command Handle Fail : MsgStoGetMsgType()");
792 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_MSG_TYPE, err, (void**)ppEvent);
798 int MsgGetThreadViewListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
800 msg_error_t err = MSG_SUCCESS;
802 MSG_SORT_RULE_S sortRule = {0};
804 memcpy(&sortRule, pCmd->cmdData, sizeof(MSG_SORT_RULE_S));
806 char* encodedData = NULL;
807 AutoPtr<char> buf(&encodedData);
809 int dataSize = 0, eventSize = 0;
811 // Get Thread View List
812 msg_struct_list_s msgThreadViewList;
814 err = MsgStoGetThreadViewList(&sortRule, &msgThreadViewList);
816 if (err == MSG_SUCCESS)
818 MSG_DEBUG("Command Handle Success : MsgStoGetThreadViewList()");
820 // Encoding Folder View List Data
821 dataSize = MsgEncodeThreadViewList(&msgThreadViewList, &encodedData);
823 MSG_DEBUG("dataSize [%d]", dataSize);
825 if (msgThreadViewList.msg_struct_info != NULL)
827 delete [] msgThreadViewList.msg_struct_info;
828 msgThreadViewList.msg_struct_info = NULL;
833 MSG_DEBUG("Command Handle Fail : MsgStoGetThreadViewList()");
838 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_THREADVIEWLIST, err, (void**)ppEvent);
844 int MsgGetConversationViewListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
846 msg_error_t err = MSG_SUCCESS;
848 msg_thread_id_t threadId;
850 memcpy(&threadId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_thread_id_t));
852 char* encodedData = NULL;
853 AutoPtr<char> buf(&encodedData);
855 int dataSize = 0, eventSize = 0;
857 msg_struct_list_s convViewList;
859 err = MsgStoGetConversationViewList(threadId, &convViewList);
861 if (err == MSG_SUCCESS)
863 MSG_DEBUG("Command Handle Success : MsgStoGetConversationViewList()");
865 // Encoding Folder View List Data
866 dataSize = MsgEncodeConversationViewList(&convViewList, &encodedData);
868 MSG_DEBUG("dataSize [%d]", dataSize);
870 if (convViewList.msg_struct_info != NULL)
872 delete [] convViewList.msg_struct_info;
873 convViewList.msg_struct_info = NULL;
878 MSG_DEBUG("Command Handle Fail : MsgStoGetConversationViewList()");
882 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_CONVERSATIONVIEWLIST, err, (void**)ppEvent);
888 int MsgDeleteThreadMessageListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
890 msg_error_t err = MSG_SUCCESS;
892 msg_thread_id_t threadId;
893 bool bIncludeProtect = false;
894 bool isSyncMLMsg = false;
896 memcpy(&threadId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_thread_id_t));
897 memcpy(&bIncludeProtect, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_thread_id_t)), sizeof(bool));
901 isSyncMLMsg = MsgStoCheckSyncMLMsgInThread(threadId);
903 msg_id_list_s msgIdList;
904 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
906 err = MsgStoDeleteThreadMessageList(threadId, bIncludeProtect, &msgIdList);
908 if (err == MSG_SUCCESS) {
909 MSG_DEBUG("Command Handle Success : MsgStoDeleteThreadMessageList()");
911 if(isSyncMLMsg == true) {
912 // broadcast to listener threads, here
913 MsgTransactionManager::instance()->broadcastSyncMLMsgOperationCB(err, -1, -1);
916 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_DELETE, &msgIdList);
917 if(msgIdList.msgIdList != NULL)
918 delete [] (char*)msgIdList.msgIdList;
922 MSG_DEBUG("Command Handle Fail : MsgStoDeleteThreadMessageList()");
923 if(msgIdList.msgIdList != NULL)
924 delete [] (char*)msgIdList.msgIdList;
928 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELETE_THREADMESSAGELIST, err, (void**)ppEvent);
934 int MsgCountMsgByContactHandler(const MSG_CMD_S *pCmd, char **ppEvent)
936 msg_error_t err = MSG_SUCCESS;
939 MSG_THREAD_LIST_INDEX_S addrInfo;
941 memcpy(&addrInfo, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(MSG_THREAD_LIST_INDEX_S));
943 char* encodedData = NULL;
944 AutoPtr<char> buf(&encodedData);
946 int dataSize = 0, eventSize = 0;
948 // Get Message Common Info
949 MSG_THREAD_COUNT_INFO_S threadCountInfo = {0};
951 err = MsgStoCountMsgByContact(&addrInfo, &threadCountInfo);
953 if (err == MSG_SUCCESS)
955 MSG_DEBUG("Command Handle Success : MsgStoCountMsgByContact()");
957 // Encoding Folder View List Data
958 dataSize = MsgEncodeMsgGetContactCount(&threadCountInfo, &encodedData);
960 MSG_DEBUG("dataSize [%d]", dataSize);
964 MSG_DEBUG("Command Handle Fail : MsgStoCountMsgByContact()");
968 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_CONTACT_COUNT, err, (void**)ppEvent);
974 int MsgGetQuickPanelDataHandler(const MSG_CMD_S *pCmd, char **ppEvent)
976 msg_error_t err = MSG_SUCCESS;
979 msg_quickpanel_type_t* type = (msg_quickpanel_type_t*)pCmd->cmdData;
981 char* encodedData = NULL;
982 AutoPtr<char> buf(&encodedData);
984 int dataSize = 0, eventSize = 0;
987 MSG_MESSAGE_INFO_S msgInfo;
989 memset(&msgInfo, 0x00, sizeof(MSG_MESSAGE_INFO_S));
991 err = MsgStoGetQuickPanelData(*type, &msgInfo);
993 if (err == MSG_SUCCESS)
995 MSG_DEBUG("Command Handle Success : MsgStoGetQuickPanelData()");
997 // Encoding Message Info Data
998 dataSize = MsgEncodeMsgInfo(&msgInfo, &encodedData);
1002 MSG_DEBUG("Command Handle Fail : MsgStoGetQuickPanelData()");
1006 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_QUICKPANEL_DATA, err, (void**)ppEvent);
1012 int MsgResetDatabaseHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1014 msg_error_t err = MSG_SUCCESS;
1019 err = MsgStoResetDatabase();
1021 if (err == MSG_SUCCESS)
1022 MSG_DEBUG("Command Handle Success : MsgStoResetDatabase()");
1024 MSG_DEBUG("Command Handle Fail : MsgStoResetDatabase()");
1027 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_RESET_DB, err, (void**)ppEvent);
1033 int MsgGetMemSizeHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1035 msg_error_t err = MSG_SUCCESS;
1039 char* encodedData = NULL;
1040 AutoPtr<char> buf(&encodedData);
1042 int dataSize = 0, eventSize = 0;
1045 unsigned int memsize = 0;
1047 ret = stat(MSG_DATA_ROOT_PATH, &sts);
1048 if (ret == -1 && errno == ENOENT){
1049 mkdir(MSG_DATA_ROOT_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
1050 fd = creat(MSG_DATA_ROOT_PATH, 0755);
1052 ret = fchown(fd, -1, DB_MSG_SERVICE_GROUPE);
1054 MSG_DEBUG("Failed to fchown on %s",MSG_DATA_ROOT_PATH);
1060 memsize = MsgDu(MSG_DATA_ROOT_PATH);
1062 dataSize = MsgEncodeMemSize(&memsize, &encodedData);
1065 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_MEMSIZE, err, (void**)ppEvent);
1071 int MsgBackupMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1073 msg_error_t err = MSG_SUCCESS;
1076 char path[MSG_FILEPATH_LEN_MAX+1] = {0,};
1077 msg_message_backup_type_t type;
1079 memcpy(&type, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_message_backup_type_t));
1080 memcpy(&path, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_message_backup_type_t)), sizeof(path));
1082 MSG_DEBUG("type = %d, path = %s", type, path);
1084 err = MsgStoBackupMessage(type, path);
1085 if (err == MSG_SUCCESS)
1086 MSG_DEBUG("Command Handle Success : MsgBackupMessageHandler()");
1088 MSG_DEBUG("Command Handle Fail : MsgBackupMessageHandler()");
1091 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_BACKUP_MESSAGE, err, (void**)ppEvent);
1097 int MsgRestoreMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1099 msg_error_t err = MSG_SUCCESS;
1102 char path[MSG_FILEPATH_LEN_MAX+1] = {0,};
1103 memcpy(&path, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(path));
1104 MSG_DEBUG("path = %s", path);
1106 err = MsgStoRestoreMessage(path);
1108 if (err == MSG_SUCCESS)
1109 MSG_DEBUG("Command Handle Success : MsgStoRestoreMessage()");
1111 MSG_DEBUG("Command Handle Fail : MsgStoRestoreMessage()");
1114 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_RESTORE_MESSAGE, err, (void**)ppEvent);
1120 int MsgGetReportStatusHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1122 msg_error_t err = MSG_SUCCESS;
1125 msg_message_id_t* msgId = (msg_message_id_t*)pCmd->cmdData;
1127 char* encodedData = NULL;
1128 AutoPtr<char> buf(&encodedData);
1130 int dataSize = 0, eventSize = 0;
1132 MSG_REPORT_STATUS_INFO_S *reportStatus = NULL;
1133 int report_count = 0;
1135 err = MsgStoGetReportStatus(*msgId, &report_count, &reportStatus);
1137 if (err == MSG_SUCCESS)
1139 MSG_DEBUG("Command Handle Success : MsgGetReportStatusHandler()");
1141 // Encoding Report Status Data
1142 dataSize = MsgEncodeReportStatus(reportStatus, report_count, &encodedData);
1146 MSG_DEBUG("Command Handle Fail : MsgGetReportStatusHandler()");
1150 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_REPORT_STATUS, err, (void**)ppEvent);
1156 int MsgGetThreadIdByAddressHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1158 msg_error_t err = MSG_SUCCESS;
1160 MSG_MESSAGE_INFO_S msgInfo;
1161 memset(&msgInfo, 0x00, sizeof(MSG_MESSAGE_INFO_S));
1163 int *addrCnt = (int *)pCmd->cmdData;
1164 MSG_DEBUG("*addrCnt [%d]", *addrCnt);
1166 msgInfo.nAddressCnt = *addrCnt;
1167 for(int i=0; i<msgInfo.nAddressCnt; i++)
1168 memcpy(&msgInfo.addressList[i], (MSG_ADDRESS_INFO_S *)(pCmd->cmdData+sizeof(int)+(sizeof(MSG_ADDRESS_INFO_S)*i)), sizeof(MSG_ADDRESS_INFO_S));
1170 char* encodedData = NULL;
1171 AutoPtr<char> buf(&encodedData);
1173 int dataSize = 0, eventSize = 0;
1175 msg_thread_id_t threadId;
1177 err = MsgStoGetThreadIdByAddress(&msgInfo, &threadId);
1179 if (err == MSG_SUCCESS)
1181 MSG_DEBUG("threadId [%d]", threadId);
1182 MSG_DEBUG("Command Handle Success : MsgGetThreadIdByAddressHandler()");
1184 // Encoding threadId Data
1185 dataSize = MsgEncodeThreadId(&threadId, &encodedData);
1189 MSG_DEBUG("Command Handle Fail : MsgGetThreadIdByAddressHandler()");
1193 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_THREAD_ID_BY_ADDRESS, err, (void**)ppEvent);
1199 int MsgGetThreadInfoHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1201 msg_error_t err = MSG_SUCCESS;
1203 char* encodedData = NULL;
1204 AutoPtr<char> buf(&encodedData);
1209 msg_thread_id_t threadId;
1211 memcpy(&threadId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_thread_id_t));
1213 MSG_THREAD_VIEW_S threadInfo;
1214 memset(&threadInfo, 0x00, sizeof(threadInfo));
1216 err = MsgStoGetThreadInfo(threadId, &threadInfo);
1218 if (err == MSG_SUCCESS) {
1219 MSG_DEBUG("Command Handle Success : MsgStoGetThreadInfo()");
1221 // Encoding thread Info Data
1222 dataSize = MsgEncodeThreadInfo(&threadInfo, &encodedData);
1224 MSG_DEBUG("Command Handle Fail : MsgStoGetThreadInfo()");
1228 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_THREAD_INFO, err, (void**)ppEvent);
1234 #ifdef MMS_REPORT_OPERATIONS
1235 int MsgCheckReadReportRequestedHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1238 msg_error_t err = MSG_SUCCESS;
1240 char* encodedData = NULL;
1241 AutoPtr<char> buf(&encodedData);
1243 int dataSize = 0, eventSize = 0;
1246 msg_message_id_t* MsgId = (msg_message_id_t*)pCmd->cmdData;
1248 // Check ReadReport Is Requested
1249 bool bReadReportRequested;
1251 bReadReportRequested = MsgStoCheckReadReportRequested(*MsgId);
1252 if (err == MSG_SUCCESS)
1254 MSG_DEBUG("Command Handle Success : MsgStoCheckSendReadReport()");
1256 // Encoding ReadReportIsSent Data
1257 dataSize = MsgEncodeReadReportRequested(bReadReportRequested, &encodedData);
1261 MSG_DEBUG("Command Handle Fail : MsgStoCheckReadReportIsSent()");
1265 eventSize = MsgMakeStorageEvent(encodedData, dataSize, MSG_EVENT_PLG_CHECK_READ_REPORT_REQUESTED, err, (void**)ppEvent);
1271 int MsgCheckReadReportIsSentHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1274 msg_error_t err = MSG_SUCCESS;
1276 char* encodedData = NULL;
1277 AutoPtr<char> buf(&encodedData);
1279 int dataSize = 0, eventSize = 0;
1282 msg_message_id_t* MsgId = (msg_message_id_t*)pCmd->cmdData;
1284 // Check ReadReport Is Sent
1285 bool bReadReportIsSent;
1287 MSG_DEBUG("#### MSGID = %d ####", *MsgId);
1289 bReadReportIsSent = MsgStoCheckReadReportIsSent(*MsgId);
1290 MSG_DEBUG("######## 1. bReadStatusIsSent = %d #######", bReadReportIsSent);
1291 if (err == MSG_SUCCESS)
1293 MSG_DEBUG("Command Handle Success : MsgStoCheckReadReportIsSent()");
1295 // Encoding ReadReportIsSent Data
1296 dataSize = MsgEncodeReadReportIsSent(bReadReportIsSent, &encodedData);
1300 MSG_DEBUG("Command Handle Fail : MsgStoCheckReadReportIsSent()");
1304 eventSize = MsgMakeStorageEvent(encodedData, dataSize, MSG_EVENT_PLG_CHECK_READ_REPORT_IS_SENT, err, (void**)ppEvent);
1310 int MsgSetReadReportSendStatusHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1313 msg_error_t err = MSG_SUCCESS;
1315 char* encodedData = NULL;
1316 AutoPtr<char> buf(&encodedData);
1318 int dataSize = 0, eventSize = 0;
1321 msg_message_id_t msgId;
1322 int readReportSendStatus;
1324 memcpy(&msgId, (char*)pCmd + sizeof(MSG_CMD_TYPE_T), sizeof(msg_message_id_t));
1325 memcpy(&readReportSendStatus, (char*)pCmd + sizeof(MSG_CMD_TYPE_T) + sizeof(msg_message_id_t), sizeof(int));
1327 // Set Read Report Send Status
1328 err = MsgStoSetReadReportSendStatus(msgId, readReportSendStatus);
1330 if (err == MSG_SUCCESS)
1332 MSG_DEBUG("Command Handle Success : MsgStoUpdateReadStatus()");
1336 MSG_DEBUG("Command Handle Fail : MsgStoUpdateReadStatus()");
1340 eventSize = MsgMakeStorageEvent(encodedData, dataSize, MSG_EVENT_PLG_SET_READ_REPORT_SEND_STATUS, err, (void**)ppEvent);
1346 int MsgGetMmsVersionHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1349 msg_error_t err = MSG_SUCCESS;
1351 char* encodedData = NULL;
1352 AutoPtr<char> buf(&encodedData);
1354 int dataSize = 0, eventSize = 0;
1357 msg_message_id_t* MsgId = (msg_message_id_t*)pCmd->cmdData;
1359 // Check ReadReport Is Sent
1362 MSG_DEBUG("#### MSGID = %d ####", *MsgId);
1364 version = MsgStoGetMmsVersion(*MsgId);
1365 MSG_DEBUG("######## 1. version = %x #######", version);
1366 if (err == MSG_SUCCESS)
1368 MSG_DEBUG("Command Handle Success : MsgStoCheckReadReportIsSent()");
1370 // Encoding ReadReportIsSent Data
1371 dataSize = MsgEncodeMmsVersion(version, &encodedData);
1375 MSG_DEBUG("Command Handle Fail : MsgStoCheckReadReportIsSent()");
1379 eventSize = MsgMakeStorageEvent(encodedData, dataSize, MSG_EVENT_PLG_GET_MMS_VERSION, err, (void**)ppEvent);
1385 int MsgGetMmsStatusInfoHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1388 msg_error_t err = MSG_SUCCESS;
1390 char* encodedData = NULL;
1391 AutoPtr<char> buf(&encodedData);
1393 int dataSize = 0, eventSize = 0;
1396 msg_message_id_t* MsgId = (msg_message_id_t*)pCmd->cmdData;
1398 MMS_STATUS_INFO_S mmsStatusInfo;
1400 MSG_DEBUG("#### MSGID = %d ####", *MsgId);
1402 err = MsgStoGetMmsStatusInfo(*MsgId,&mmsStatusInfo);
1403 if (err == MSG_SUCCESS)
1405 MSG_DEBUG("Command Handle Success : MsgGetMmsStatusInfoHandler()");
1407 // Encoding ReadReportIsSent Data
1408 dataSize = MsgEncodeMmsStatusInfo(&mmsStatusInfo, &encodedData);
1412 MSG_DEBUG("Command Handle Fail : MsgGetMmsStatusInfoHandler()");
1416 eventSize = MsgMakeStorageEvent(encodedData, dataSize, MSG_EVENT_PLG_GET_MMS_STATUS_INFO, err, (void**)ppEvent);
1423 int MsgAddPushEventHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1425 msg_error_t err = MSG_SUCCESS;
1430 MSG_PUSH_EVENT_INFO_S* pPushEvent = (MSG_PUSH_EVENT_INFO_S*)pCmd->cmdData;
1433 err = MsgStoAddPushEvent(pPushEvent);
1435 if (err == MSG_SUCCESS) {
1436 MSG_DEBUG("Command Handle Success : MsgStoAddPushEvent()");
1438 MSG_DEBUG("Command Handle Fail : MsgStoAddMessage()");
1442 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_ADD_PUSH_EVENT, err, (void**)ppEvent);
1447 int MsgDeletePushEventHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1449 msg_error_t err = MSG_SUCCESS;
1454 MSG_PUSH_EVENT_INFO_S* pPushEvent = (MSG_PUSH_EVENT_INFO_S*)pCmd->cmdData;
1457 err = MsgStoDeletePushEvent(pPushEvent);
1459 if (err == MSG_SUCCESS) {
1460 MSG_DEBUG("Command Handle Success : MsgStoDeletePushEvent()");
1462 MSG_DEBUG("Command Handle Fail : MsgStoDeletePushEvent()");
1466 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELETE_PUSH_EVENT, err, (void**)ppEvent);
1471 int MsgUpdatePushEventHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1473 msg_error_t err = MSG_SUCCESS;
1479 MSG_PUSH_EVENT_INFO_S* pSrc = (MSG_PUSH_EVENT_INFO_S*)pCmd->cmdData;
1480 MSG_PUSH_EVENT_INFO_S* pDst = (MSG_PUSH_EVENT_INFO_S*)(pCmd->cmdData + sizeof(MSG_PUSH_EVENT_INFO_S));
1483 err = MsgStoUpdatePushEvent(pSrc, pDst);
1485 if (err == MSG_SUCCESS) {
1486 MSG_DEBUG("Command Handle Success : MsgStoUpdatePushEvent()");
1488 MSG_DEBUG("Command Handle Fail : MsgStoUpdatePushEvent()");
1492 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_PUSH_EVENT, err, (void**)ppEvent);
1498 int MsgContactSyncEventHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1500 msg_error_t err = MSG_SUCCESS;
1508 eventSize = MsgMakeEvent(NULL, 0, MSG_EVNET_CONTACT_SYNC, err, (void**)ppEvent);