From: Jaemin Ahn Date: Tue, 30 Apr 2013 00:12:45 +0000 (+0900) Subject: Unregister event callback when the initialization has failed. X-Git-Tag: submit/tizen_2.1/20130514.054318~2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fframework%2Fnative%2Ftelephony.git;a=commitdiff_plain;h=ffca9714d82e56e926eb98410c4efda2d9b9a0c1 Unregister event callback when the initialization has failed. Change-Id: Id5f87c30aefc73a9afe87a7b8c1f6b789057b1bb Signed-off-by: Jaemin Ahn --- diff --git a/src/FTel_NetworkManagerImpl.cpp b/src/FTel_NetworkManagerImpl.cpp index 8521d1f..f906bfc 100755 --- a/src/FTel_NetworkManagerImpl.cpp +++ b/src/FTel_NetworkManagerImpl.cpp @@ -85,29 +85,40 @@ _NetworkManagerImpl::Construct(ITelephonyNetworkEventListener* pListener) if (pListener != null) { + unique_ptr<_NetworkManagerEvent> pNetworkManagerEvent(new (std::nothrow) _NetworkManagerEvent); + SysTryReturnResult(NID_TEL, pNetworkManagerEvent != null, E_OUT_OF_MEMORY, "Memory allocation failed."); + + result r = pNetworkManagerEvent->Construct(); + SysTryReturnResult(NID_TEL, r != E_OUT_OF_MEMORY, r, "Propagating."); + SysTryReturnResult(NID_TEL, r == E_SUCCESS, E_SYSTEM, "A system error has occurred. Failed to construct of the _NetworkManagerEvent."); + // Register data service state changed event err = connection_set_type_changed_cb(pConnectionHandle.get(),(connection_type_changed_cb)_NetworkManagerImpl::OnDataServiceStateChangedCallback, this); SysLog(NID_TEL, "The return value of connection_set_type_changed_cb() is 0x%x", err); - SysTryReturnResult(NID_TEL, err == 0, E_SYSTEM, "A system error has occurred. Failed to register the callback function to received the data service state changed event."); + SysTryReturnResult(NID_TEL, err == CONNECTION_ERROR_NONE, E_SYSTEM, "A system error has occurred. Failed to register the callback function to received the data service state changed event."); // Register call service state changed event err = network_info_set_service_state_changed_cb((network_info_service_state_changed_cb) _NetworkManagerImpl::OnCallServiceStateChangedCallback, this); SysLog(NID_TEL, "The return value of network_info_set_service_state_changed_cb() is 0x%x", err); - SysTryReturnResult(NID_TEL, err == NETWORK_INFO_ERROR_NONE, E_SYSTEM, - "A system error has occurred. Failed to register the callback function to received the call service state changed event."); + if (err != NETWORK_INFO_ERROR_NONE) + { + SysLogException(NID_TEL, E_SYSTEM, "[E_SYSTEM] A system error has occurred. Failed to register the callback function to received the call service state changed event."); + connection_unset_type_changed_cb(pConnectionHandle.get()); + + return E_SYSTEM; + } // Register roaming state changed event err = network_info_set_roaming_state_changed_cb((network_info_roaming_state_changed_cb)_NetworkManagerImpl::OnRoamingStateChangedCallback, this); SysLog(NID_TEL, "The return value of network_info_set_roaming_state_changed_cb() is 0x%x", err); - SysTryReturnResult(NID_TEL, err == NETWORK_INFO_ERROR_NONE, E_SYSTEM, - "A system error has occurred. Failed to register the callback function to received the roaming state changed event."); - - unique_ptr<_NetworkManagerEvent> pNetworkManagerEvent(new (std::nothrow) _NetworkManagerEvent); - SysTryReturnResult(NID_TEL, pNetworkManagerEvent != null, E_OUT_OF_MEMORY, "Memory allocation failed."); - - result r = pNetworkManagerEvent->Construct(); - SysTryReturnResult(NID_TEL, r != E_OUT_OF_MEMORY, r, "Propagating."); - SysTryReturnResult(NID_TEL, r == E_SUCCESS, E_SYSTEM, "A system error has occurred. Failed to construct of the _NetworkManagerEvent."); + if (err != NETWORK_INFO_ERROR_NONE) + { + SysLogException(NID_TEL, E_SYSTEM, "[E_SYSTEM] A system error has occurred. Failed to register the callback function to received the roaming state changed event."); + connection_unset_type_changed_cb(pConnectionHandle.get()); + network_info_unset_service_state_changed_cb(); + + return E_SYSTEM; + } pNetworkManagerEvent->AddListener(*pListener, true);