From 6e73d01b0300eb04db9dc473b279e18c2db19e65 Mon Sep 17 00:00:00 2001 From: Keebum Kim Date: Mon, 22 Apr 2013 17:09:34 +0900 Subject: [PATCH] Remove THROW exception in sms submit request & remove lock and wait in get remote FD. Change-Id: Ife3a1cb69fe5dbc39e014ea4460ff493d9bd4078 --- framework/submit-handler/MsgSubmitHandler.cpp | 6 ++- packaging/msg-service.spec | 2 +- proxy/MsgHandleStorage.cpp | 7 +++- proxy/MsgHandleTransport.cpp | 56 +++++++++++++++++++++++---- proxy/MsgProxyListener.cpp | 9 +---- 5 files changed, 60 insertions(+), 20 deletions(-) diff --git a/framework/submit-handler/MsgSubmitHandler.cpp b/framework/submit-handler/MsgSubmitHandler.cpp index f739065..12ba9fb 100755 --- a/framework/submit-handler/MsgSubmitHandler.cpp +++ b/framework/submit-handler/MsgSubmitHandler.cpp @@ -82,8 +82,10 @@ msg_error_t MsgSubmitReqSMS(MSG_REQUEST_INFO_S *pReqInfo) MSG_MAIN_TYPE_T mainType = pReqInfo->msgInfo.msgType.mainType; MsgPlugin* plg = MsgPluginManager::instance()->getPlugin(mainType); - if (plg == NULL) - THROW(MsgException::PLUGIN_ERROR, "No plugin for %d type", mainType); + if (plg == NULL) { + MSG_DEBUG("No Plugin for %d type", mainType); + return MSG_ERR_UNKNOWN; + } // If MSG ID > 0 -> MSG in DRAFT // Move Folder to OUTBOX diff --git a/packaging/msg-service.spec b/packaging/msg-service.spec index fa21820..b722c7e 100755 --- a/packaging/msg-service.spec +++ b/packaging/msg-service.spec @@ -1,6 +1,6 @@ Name: msg-service Version: 0.9.2 -Release: 2 +Release: 3 License: Samsung Summary: Messaging Framework Library Group: System/Libraries diff --git a/proxy/MsgHandleStorage.cpp b/proxy/MsgHandleStorage.cpp index b530d35..47f8ddf 100755 --- a/proxy/MsgHandleStorage.cpp +++ b/proxy/MsgHandleStorage.cpp @@ -1258,6 +1258,11 @@ msg_error_t MsgHandle::regStorageChangeCallback(msg_storage_change_cb onStorageC eventListener->start(); + int clientFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + + if (clientFd < 0) + return MSG_ERR_TRANSPORT_ERROR; + if (eventListener->regStorageChangeEventCB(this, onStorageChange, pUserParam) == false) // callback was already registered, just return SUCCESS return MSG_SUCCESS; @@ -1273,7 +1278,7 @@ msg_error_t MsgHandle::regStorageChangeCallback(msg_storage_change_cb onStorageC // Copy Cookie memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN); - int listenerFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + int listenerFd = clientFd; MSG_DEBUG("remote fd %d", listenerFd); diff --git a/proxy/MsgHandleTransport.cpp b/proxy/MsgHandleTransport.cpp index 16039f3..5082e5e 100755 --- a/proxy/MsgHandleTransport.cpp +++ b/proxy/MsgHandleTransport.cpp @@ -218,6 +218,11 @@ msg_error_t MsgHandle::regSentStatusCallback(msg_sent_status_cb onStatusChanged, eventListener->start(); + int clientFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + + if (clientFd < 0) + return MSG_ERR_TRANSPORT_ERROR; + if (eventListener->regSentStatusEventCB(this, onStatusChanged, pUserParam) == false) // callback was already registered, just return SUCCESS return MSG_SUCCESS; @@ -233,7 +238,7 @@ msg_error_t MsgHandle::regSentStatusCallback(msg_sent_status_cb onStatusChanged, // Copy Cookie memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN); - int listenerFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + int listenerFd = clientFd; MSG_DEBUG("remote fd %d", listenerFd); @@ -268,6 +273,11 @@ msg_error_t MsgHandle::regSmsMessageCallback(msg_sms_incoming_cb onMsgIncoming, eventListener->start(); + int clientFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + + if (clientFd < 0) + return MSG_ERR_TRANSPORT_ERROR; + if (eventListener->regMessageIncomingEventCB(this, onMsgIncoming, port, pUserParam) == false) // callback was already registered, just return SUCCESS return MSG_SUCCESS; @@ -287,7 +297,7 @@ msg_error_t MsgHandle::regSmsMessageCallback(msg_sms_incoming_cb onMsgIncoming, MSG_CMD_REG_INCOMING_MSG_CB_S cmdParam = {0}; - cmdParam.listenerFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + cmdParam.listenerFd = clientFd; cmdParam.msgType = MSG_SMS_TYPE; cmdParam.port = port; @@ -323,6 +333,11 @@ msg_error_t MsgHandle::regMmsConfMessageCallback(msg_mms_conf_msg_incoming_cb on eventListener->start(); + int clientFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + + if (clientFd < 0) + return MSG_ERR_TRANSPORT_ERROR; + if (eventListener->regMMSConfMessageIncomingEventCB(this, onMMSConfMsgIncoming, pAppId, pUserParam) == false) // callback was already registered, just return SUCCESS return MSG_SUCCESS; @@ -342,7 +357,7 @@ msg_error_t MsgHandle::regMmsConfMessageCallback(msg_mms_conf_msg_incoming_cb on MSG_CMD_REG_INCOMING_MMS_CONF_MSG_CB_S cmdParam = {0}; - cmdParam.listenerFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + cmdParam.listenerFd = clientFd; cmdParam.msgType = MSG_MMS_TYPE; if (pAppId) @@ -380,6 +395,11 @@ msg_error_t MsgHandle::regSyncMLMessageCallback(msg_syncml_msg_incoming_cb onSyn eventListener->start(); + int clientFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + + if (clientFd < 0) + return MSG_ERR_TRANSPORT_ERROR; + if (eventListener->regSyncMLMessageIncomingEventCB(this, onSyncMLMsgIncoming, pUserParam) == false) // callback was already registered, just return SUCCESS return MSG_SUCCESS; @@ -399,7 +419,7 @@ msg_error_t MsgHandle::regSyncMLMessageCallback(msg_syncml_msg_incoming_cb onSyn MSG_CMD_REG_INCOMING_SYNCML_MSG_CB_S cmdParam = {0}; - cmdParam.listenerFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + cmdParam.listenerFd = clientFd; cmdParam.msgType = MSG_SMS_TYPE; memcpy((void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), &cmdParam, sizeof(cmdParam)); @@ -433,6 +453,11 @@ msg_error_t MsgHandle::regLBSMessageCallback(msg_lbs_msg_incoming_cb onLBSMsgInc eventListener->start(); + int clientFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + + if (clientFd < 0) + return MSG_ERR_TRANSPORT_ERROR; + if (eventListener->regLBSMessageIncomingEventCB(this, onLBSMsgIncoming, pUserParam) == false) // callback was already registered, just return SUCCESS return MSG_SUCCESS; @@ -450,7 +475,7 @@ msg_error_t MsgHandle::regLBSMessageCallback(msg_lbs_msg_incoming_cb onLBSMsgInc MSG_CMD_REG_INCOMING_LBS_MSG_CB_S cmdParam = {0}; - cmdParam.listenerFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + cmdParam.listenerFd = clientFd; cmdParam.msgType = MSG_SMS_TYPE; memcpy((void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), &cmdParam, sizeof(cmdParam)); @@ -485,6 +510,11 @@ msg_error_t MsgHandle::regSyncMLMessageOperationCallback(msg_syncml_msg_operatio eventListener->start(); + int clientFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + + if (clientFd < 0) + return MSG_ERR_TRANSPORT_ERROR; + if (eventListener->regSyncMLMessageOperationEventCB(this, onSyncMLMsgOperation, pUserParam) == false) // callback was already registered, just return SUCCESS return MSG_SUCCESS; @@ -504,7 +534,7 @@ msg_error_t MsgHandle::regSyncMLMessageOperationCallback(msg_syncml_msg_operatio MSG_CMD_REG_SYNCML_MSG_OPERATION_CB_S cmdParam = {0}; - cmdParam.listenerFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + cmdParam.listenerFd = clientFd; cmdParam.msgType = MSG_SMS_TYPE; memcpy((void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), &cmdParam, sizeof(cmdParam)); @@ -538,6 +568,11 @@ msg_error_t MsgHandle::regPushMessageCallback(msg_push_msg_incoming_cb onPushMsg eventListener->start(); + int clientFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + + if (clientFd < 0) + return MSG_ERR_TRANSPORT_ERROR; + if (eventListener->regPushMessageIncomingEventCB(this, onPushMsgIncoming, pAppId, pUserParam) == false) // callback was already registered, just return SUCCESS return MSG_SUCCESS; @@ -557,7 +592,7 @@ msg_error_t MsgHandle::regPushMessageCallback(msg_push_msg_incoming_cb onPushMsg MSG_CMD_REG_INCOMING_PUSH_MSG_CB_S cmdParam = {0}; - cmdParam.listenerFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + cmdParam.listenerFd = clientFd; cmdParam.msgType = MSG_SMS_TYPE; if (pAppId) @@ -594,6 +629,11 @@ msg_error_t MsgHandle::regCBMessageCallback(msg_cb_incoming_cb onCBIncoming, boo eventListener->start(); + int clientFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + + if (clientFd < 0) + return MSG_ERR_TRANSPORT_ERROR; + if (eventListener->regCBMessageIncomingEventCB(this, onCBIncoming, bSave, pUserParam) == false) // callback was already registered, just return SUCCESS return MSG_SUCCESS; @@ -613,7 +653,7 @@ msg_error_t MsgHandle::regCBMessageCallback(msg_cb_incoming_cb onCBIncoming, boo MSG_CMD_REG_CB_INCOMING_MSG_CB_S cmdParam = {0}; - cmdParam.listenerFd = eventListener->getRemoteFd(); // fd that is reserved to the "listener thread" by msgfw daemon + cmdParam.listenerFd = clientFd; // fd that is reserved to the "listener thread" by msgfw daemon cmdParam.msgType = MSG_SMS_TYPE; cmdParam.bsave = bSave; diff --git a/proxy/MsgProxyListener.cpp b/proxy/MsgProxyListener.cpp index 931034e..b8993c7 100755 --- a/proxy/MsgProxyListener.cpp +++ b/proxy/MsgProxyListener.cpp @@ -975,18 +975,11 @@ void MsgProxyListener::handleEvent(const MSG_EVENT_S* pMsgEvent) int MsgProxyListener::getRemoteFd() { - MutexLocker lock(mx); - int tmpFd = cliSock.getRemoteFd(); MSG_DEBUG("listener fd [%d]", tmpFd); - if( tmpFd == -1 ) - { - cv.wait(mx.pMutex()); - } - - return cliSock.getRemoteFd(); + return tmpFd; } -- 2.7.4