- Check the from and to id of CBS data
authorByounghui <byounghui.lim@samsung.com>
Wed, 1 May 2013 05:08:05 +0000 (14:08 +0900)
committerByounghui <byounghui.lim@samsung.com>
Thu, 2 May 2013 02:16:50 +0000 (11:16 +0900)
- Create the SMS instance inspite of failed cbs construct.

Change-Id: Iad03c5396bd6cc7b0e779cebce46ffc88ad02beb
Signed-off-by: Byounghui <byounghui.lim@samsung.com>
src/FMsg_SmsManagerImpl.cpp
src/FMsg_SmsMmsCallbackHandler.cpp

index b6f52cd..0c7d9f0 100644 (file)
@@ -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;
index 6344102..7df373a 100644 (file)
@@ -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