From 018b25902ba161912bcbb22390ab070bd954209a Mon Sep 17 00:00:00 2001 From: Byounghui Date: Wed, 1 May 2013 14:08:05 +0900 Subject: [PATCH] - Check the from and to id of CBS data - Create the SMS instance inspite of failed cbs construct. Change-Id: Iad03c5396bd6cc7b0e779cebce46ffc88ad02beb Signed-off-by: Byounghui --- src/FMsg_SmsManagerImpl.cpp | 4 +-- src/FMsg_SmsMmsCallbackHandler.cpp | 56 ++++++++++++++++++++------------------ 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/src/FMsg_SmsManagerImpl.cpp b/src/FMsg_SmsManagerImpl.cpp index b6f52cd..0c7d9f0 100644 --- a/src/FMsg_SmsManagerImpl.cpp +++ b/src/FMsg_SmsManagerImpl.cpp @@ -96,7 +96,6 @@ _SmsManagerImpl::~_SmsManagerImpl(void) if (_SmsMmsCallbackHandler::GetInstance()) { _SmsMmsCallbackHandler::GetInstance()->CloseMessageHandle(); - _SmsMmsCallbackHandler::GetInstance()->CloseCbsSettingsHandle(); } __isConstructed = false; @@ -159,8 +158,7 @@ _SmsManagerImpl::Construct(const ISmsListener& listener) } // load cbs settings - r = _SmsMmsCallbackHandler::GetInstance()->LoadCbsSettings(); - SysTryReturn(NID_MSG, r == E_SUCCESS, r, r, "Failed to load cbs message settings."); + _SmsMmsCallbackHandler::GetInstance()->LoadCbsSettings(); __pSmsEvent = move(pSmsEvent); __isConstructed = true; diff --git a/src/FMsg_SmsMmsCallbackHandler.cpp b/src/FMsg_SmsMmsCallbackHandler.cpp index 6344102..7df373a 100644 --- a/src/FMsg_SmsMmsCallbackHandler.cpp +++ b/src/FMsg_SmsMmsCallbackHandler.cpp @@ -72,6 +72,11 @@ _SmsMmsCallbackHandler::Construct() r = __msgMutex.Create(); } + __pTempCbsChannelList = new (std::nothrow) ArrayList(); + SysTryReturnResult(NID_MSG, __pTempCbsChannelList != null, E_OUT_OF_MEMORY, "memory allocation failed"); + r = __pTempCbsChannelList->Construct(); + SysTryReturnResult(NID_MSG, r == E_SUCCESS, r, "Failed to construct an ArrayList"); + return r; } @@ -109,12 +114,12 @@ _SmsMmsCallbackHandler* _SmsMmsCallbackHandler::GetInstance(void) { result r = E_SUCCESS; - + if (!__pMessageCallbackHandler) { __pMessageCallbackHandler = new (std::nothrow) _SmsMmsCallbackHandler(); SysTryReturn(NID_MSG, __pMessageCallbackHandler != NULL, null, E_SYSTEM, "failed to create instance"); - + if (__pMessageCallbackHandler) { r = __pMessageCallbackHandler->Construct(); @@ -380,6 +385,7 @@ _SmsMmsCallbackHandler::SaveCbsSettings() SysTryReturn(NID_MSG, __pTempCbsChannelList != null, r = E_SYSTEM, E_SYSTEM, "Failed to save the channel."); err = msg_get_list_handle(__cbsSettingsHandle, MSG_CB_CHANNEL_LIST_STRUCT, (void **)&__pCbsChannelList); SysTryReturn(NID_MSG, err == MSG_SUCCESS, r = E_SYSTEM, E_SYSTEM, "Failed to get the channel handle."); + SysLog(NID_MSG, "SaveCbsSettings Count %d, %d ",__pCbsChannelList->nCount,__pTempCbsChannelList->GetCount()); __pCbsChannelList->nCount = __pTempCbsChannelList->GetCount(); // save Channel List @@ -412,6 +418,7 @@ _SmsMmsCallbackHandler::SaveCbsSettings() err = msg_set_cb_opt(__msgHandle, __cbsSettingsHandle); r = ConvertException(err); + SysTryReturnResult(NID_MSG, r == E_SUCCESS, r, "Failed to save the channel.[%d] ",err); return r; } @@ -426,17 +433,19 @@ _SmsMmsCallbackHandler::LoadCbsSettings() bool isChannelActive = false; char channelName[CB_CHANNEL_NAME_MAX + 1] = {0,}; - __pTempCbsChannelList = new (std::nothrow) ArrayList(); - SysTryCatch(NID_MSG, __pTempCbsChannelList != null, r = E_OUT_OF_MEMORY, r, "memory allocation failed"); + if (__pTempCbsChannelList->GetCount() > 0) + { + __pTempCbsChannelList->RemoveAll(true); + } - // make a list - r = __pTempCbsChannelList->Construct(); - SysTryCatch(NID_MSG, r == E_SUCCESS, , r, "Failed to construct an ArrayList"); if (__cbsSettingsHandle) { // Load Channel List err = msg_get_list_handle(__cbsSettingsHandle, MSG_CB_CHANNEL_LIST_STRUCT, (void **)&__pCbsChannelList); + r = ConvertException(err); + SysTryReturnResult(NID_MSG, r == E_SUCCESS, r, "Failed to open cbs Settings Handle"); + for (int index = 0; index < __pCbsChannelList->nCount; index++) { msg_get_bool_value(__pCbsChannelList->msg_struct_info[index], MSG_CB_CHANNEL_ACTIVATE_BOOL, &isChannelActive); @@ -444,32 +453,27 @@ _SmsMmsCallbackHandler::LoadCbsSettings() msg_get_int_value(__pCbsChannelList->msg_struct_info[index], MSG_CB_CHANNEL_ID_TO_INT, &toId); msg_get_str_value(__pCbsChannelList->msg_struct_info[index], MSG_CB_CHANNEL_NAME_STR, channelName,CB_CHANNEL_NAME_MAX); - - pCbsChannel = _CbsChannelImpl::GetCbsChannelN(fromId, toId, String(channelName)); - SysTryCatch(NID_MSG, pCbsChannel != null, r = E_SYSTEM, r, "Failed to get the channel."); - if (isChannelActive) + if((toId >= 0) && (fromId >= 0) && (toId >= fromId) && (toId <= MAX_CBS_CHANNEL_LIMIT) && ((toId - fromId) <= MAX_CBS_CHANNEL_RANGE)) { - _CbsChannelImpl::GetInstance(*pCbsChannel)->SetCbsChannelState(isChannelActive); + + pCbsChannel = _CbsChannelImpl::GetCbsChannelN(fromId, toId, String(channelName)); + SysTryReturnResult(NID_MSG, pCbsChannel != null, E_SYSTEM, "Failed to get the channel."); + if (isChannelActive) + { + _CbsChannelImpl::GetInstance(*pCbsChannel)->SetCbsChannelState(isChannelActive); + } + __pTempCbsChannelList->Add(*pCbsChannel); } - __pTempCbsChannelList->Add(*pCbsChannel); - } - } - - r = ConvertException(err); - return r; + else + { + SysLog(NID_MSG, "Load CBS Error: From[%d] To[%d] ",fromId, toId); -CATCH: - if (__pTempCbsChannelList) - { - if (__pTempCbsChannelList->GetCount() > 0) - { - __pTempCbsChannelList->RemoveAll(true); + } } - delete __pTempCbsChannelList; - __pTempCbsChannelList = null; } return r; + } int -- 2.7.4