Fix : The exception handling according to the situation 37/13237/1
authorSunwook Bae <sunwook45.bae@samsung.com>
Mon, 9 Sep 2013 06:23:59 +0000 (15:23 +0900)
committerSeokpil Park <seokpil.park@samsung.com>
Fri, 29 Nov 2013 11:22:36 +0000 (20:22 +0900)
Change-Id: Ia415f1ba974168307dc475c368bae7fc442c2e85
Signed-off-by: Sunwook Bae <sunwook45.bae@samsung.com>
Signed-off-by: Seokpil Park <seokpil.park@samsung.com>
src/FCnt_DownloadManagerImpl.cpp
src/inc/FCnt_DownloadManagerImpl.h

index f8cae5d..2d8df1e 100644 (file)
@@ -435,8 +435,8 @@ _DownloadManagerImpl::Start(const DownloadRequest& request, RequestId& reqId)
        }
 
        // Set the callback functions
-       r = RegisterCallback((long)download_id);
-       SysTryReturnResult(NID_CNT, r == E_SUCCESS, E_SYSTEM, "The internal system service is not available.");
+       ret = RegisterCallback((long)download_id);
+       SysTryReturnResult(NID_CNT, ret >= 0, E_SYSTEM, "The internal system service is not available. %d", ret);
 
        // Start the download request
        ret = download_start(download_id);
@@ -473,19 +473,27 @@ result
 _DownloadManagerImpl::Resume(RequestId reqId)
 {
        int ret = 0;
+       result r = E_SUCCESS;
 
        // Set the callback functions
-       result r = RegisterCallback((int)reqId);
-       SysTryReturnResult(NID_CNT, r == E_SUCCESS, E_SYSTEM, "The internal system service is not available.");
-
-       // Resume the download request
-       ret = download_start((int)reqId);
+       ret = RegisterCallback((int)reqId);
        SysTryReturnResult(NID_CNT, ret != DOWNLOAD_ERROR_INVALID_PARAMETER, E_INVALID_ARG, "There is no download request for the request.");
        SysTryReturnResult(NID_CNT, ret != DOWNLOAD_ERROR_ID_NOT_FOUND, E_INVALID_ARG, "The request ID is not valid.");
-       SysTryReturnResult(NID_CNT, ret != DOWNLOAD_ERROR_INVALID_STATE, E_INVALID_OPERATION, "The current download state is not paused or has failed.");
        SysTryReturnResult(NID_CNT, ret >= 0, E_SYSTEM, "The internal system service is not available. %d", ret);
 
+       // Resume the download request
+       ret = download_start((int)reqId);
+       SysTryCatch(NID_CNT, ret != DOWNLOAD_ERROR_INVALID_PARAMETER, r = E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] There is no download request for the request.");
+       SysTryCatch(NID_CNT, ret != DOWNLOAD_ERROR_ID_NOT_FOUND, r = E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The request ID is not valid.");
+       SysTryCatch(NID_CNT, ret != DOWNLOAD_ERROR_INVALID_STATE, r = E_INVALID_OPERATION, E_INVALID_OPERATION, "[E_INVALID_OPERATION] The current download state is not paused or has failed.");
+       SysTryCatch(NID_CNT, ret >= 0, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] The internal system service is not available. %d", ret);
+
        return E_SUCCESS;
+
+CATCH:
+       UnregisterCallback((int)reqId);
+
+       return r;
 }
 
 result
@@ -678,23 +686,23 @@ _DownloadManagerImpl::DestroyResources(RequestId reqId)
        SysTryLog(NID_CNT, ret >= 0, "url_download_destory fails %d", ret);
 }
 
-result
+int
 _DownloadManagerImpl::RegisterCallback(RequestId reqId)
 {
        int ret = 0;
 
        ret = download_set_state_changed_cb(reqId, OnStateChanged, this);
-       SysTryCatch(NID_CNT, ret >= 0, , E_SYSTEM, "[E_SYSTEM] Fails to set state_changed_cb: %d, id = %d", ret, reqId);
+       SysTryCatch(NID_CNT, ret >= 0, , E_INVALID_ARG, "[E_INVALID_ARG] Fails to set state_changed_cb: %d, id = %d", ret, reqId);
 
        ret = download_set_progress_cb(reqId, OnProgress, this);
-       SysTryCatch(NID_CNT, ret >= 0, , E_SYSTEM, "[E_SYSTEM] Fails to set progress_cb: %d, id = %d", ret, reqId);
+       SysTryCatch(NID_CNT, ret >= 0, , E_INVALID_ARG, "[E_INVALID_ARG] Fails to set progress_cb: %d, id = %d", ret, reqId);
 
-       return E_SUCCESS;
+       return DOWNLOAD_ERROR_NONE;
 
 CATCH:
        UnregisterCallback(reqId);
 
-       return E_SYSTEM;
+       return ret;
 }
 
 void
index d68e06a..7f38335 100644 (file)
@@ -84,7 +84,7 @@ private:
        static void InitSingleton(void);
        static void DestroySingleton(void);
 
-       result RegisterCallback(RequestId reqId);
+       int RegisterCallback(RequestId reqId);
        void UnregisterCallback(RequestId reqId);
 
 private: