Refactory SettingService.
authorHokwon Song <hokwon.song@samsung.com>
Thu, 26 Sep 2013 01:39:03 +0000 (10:39 +0900)
committerHokwon Song <hokwon.song@samsung.com>
Thu, 26 Sep 2013 01:39:03 +0000 (10:39 +0900)
Change-Id: Ic4c96fb49b4c7d68b22d6b4d12edac6eedabf295
Signed-off-by: Hokwon Song <hokwon.song@samsung.com>
src/system/FSys_SettingService.cpp
src/system/FSys_SettingService.h

index 879c09f..1be84e5 100644 (file)
@@ -82,47 +82,59 @@ _SettingService::_SettingService()
        , __eventList(SingleObjectDeleter)
        , __eventListForInternal(SingleObjectDeleter)
 {
-       result r = E_SUCCESS;
+}
+
+_SettingService::~_SettingService()
+{
+       __pSettingInfo->RemoveSettingEventListener(*this);
+       __pSettingInfo = null;
+       result r = __ipcServer.Stop();
+       __responseMessage.RemoveAll(true);
+       SysTryReturnVoidResult(NID_SYS, r == E_SUCCESS, r, "It is failed to stop IPC server.");
+}
+
+
+result
+_SettingService::Construct(void)
+{
+        result r = E_SUCCESS;
 
-       r = __ipcServer.Construct(__serviceId, *this, true);
-       SysTryReturnVoidResult(NID_SYS, r == E_SUCCESS, r, "It is failed to construct IPC server.");
+        r = __ipcServer.Construct(__serviceId, *this, true);
+        SysTryReturnResult(NID_SYS, r == E_SUCCESS, r, "It is failed to construct IPC server.");
 
-       __pSettingInfo = _SettingInfo::GetInstance();
-       SysTryCatch(NID_SYS, __pSettingInfo != null, r = E_SYSTEM, E_SYSTEM, "It is failed to get instance of _SettingInfo.");
+        __pSettingInfo = _SettingInfo::GetInstance();
+        SysTryCatch(NID_SYS, __pSettingInfo != null, r = E_SYSTEM, E_SYSTEM, "It is failed to get instance of _SettingInfo.");
 
-       __pSettingInfo->AddSettingEventListener(*this);
-       r = __asyncList.Construct();
-       SysTryCatch(NID_SYS, r == E_SUCCESS, , r, "It is failed to construct async list.");
+        __pSettingInfo->AddSettingEventListener(*this);
+        r = __asyncList.Construct();
+        SysTryCatch(NID_SYS, r == E_SUCCESS, , r, "It is failed to construct async list.");
 
-       r = __eventList.Construct();
-       SysTryCatch(NID_SYS, r == E_SUCCESS, , r, "It is failed to construct event list.");
+        r = __eventList.Construct();
+        SysTryCatch(NID_SYS, r == E_SUCCESS, , r, "It is failed to construct event list.");
 
-       r = __eventListForInternal.Construct();
-       SysTryCatch(NID_SYS, r == E_SUCCESS, , r, "It is failed to construct event list for internal.");
+        r = __eventListForInternal.Construct();
+        SysTryCatch(NID_SYS, r == E_SUCCESS, , r, "It is failed to construct event list for internal.");
 
-       r = __ipcServer.Start();
-       SysTryCatch(NID_SYS, r == E_SUCCESS, , r, "It is failed to start IPC server.");
+        r = __ipcServer.Start();
+        SysTryCatch(NID_SYS, r == E_SUCCESS, , r, "It is failed to start IPC server.");
 
-       r = __responseMessage.Construct();
-       SysTryCatch(NID_SYS, r == E_SUCCESS, , r, "It is failed to create response message container.");
+        r = __responseMessage.Construct();
+        SysTryCatch(NID_SYS, r == E_SUCCESS, , r, "It is failed to create response message container.");
 
 CATCH:
-       if(r != E_SUCCESS)
-       {
-               __pSettingInfo = null;
-               SysLogException(NID_SYS, r, "It is failed to construct _SettingService.");
-               __ipcServer.Stop();
-       }
+        if(r != E_SUCCESS)
+        {
+               if (__pSettingInfo != null)
+               {
+                       __pSettingInfo->RemoveSettingEventListener(*this);
+                       __pSettingInfo = null;
+               }
+                SysLogException(NID_SYS, r, "It is failed to construct _SettingService.");
+                __ipcServer.Stop();
+        }
+       return r;
 }
 
-_SettingService::~_SettingService()
-{
-       __pSettingInfo->RemoveSettingEventListener(*this);
-       __pSettingInfo = null;
-       result r = __ipcServer.Stop();
-       __responseMessage.RemoveAll(true);
-       SysTryReturnVoidResult(NID_SYS, r == E_SUCCESS, r, "It is failed to stop IPC server.");
-}
 
 _SettingService*
 _SettingService::GetInstance(void)
@@ -137,11 +149,12 @@ _SettingService::GetInstance(void)
 
 void
 _SettingService::InitSingleton(void)
-{
-       _SettingService* pSettingService = new (nothrow) _SettingService();
+{      
+       std::unique_ptr<_SettingService> pSettingService(new (nothrow) _SettingService());
        SysTryReturnVoidResult(NID_SYS, pSettingService != null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
-
-       __pSettingService = pSettingService;
+       result r = pSettingService->Construct();
+       SysTryReturnVoidResult(NID_SYS, r == E_SUCCESS, r, "It is failed to init Setting service [%s].", GetErrorMessage(r));
+       __pSettingService = pSettingService.release();
        atexit(DestroySingleton);
 }
 
index bbf2aa4..1262ec5 100644 (file)
@@ -49,13 +49,13 @@ class _SettingService
        , public Tizen::System::ISettingEventListener
 {
 private:
-       _SettingService();
-       ~_SettingService();
-
        static void InitSingleton(void);
        static void DestroySingleton(void);
 
 public:
+       _SettingService();
+        ~_SettingService();
+       result Construct(void);
        static _SettingService* GetInstance(void);
 
 private: