fix not to retry, when osp-appwidget-service isn't running nor system isn't initializing.
authorjungmin76.park <jungmin76.park@samsung.com>
Wed, 10 Jul 2013 13:51:02 +0000 (22:51 +0900)
committerjungmin76.park <jungmin76.park@samsung.com>
Thu, 11 Jul 2013 04:37:02 +0000 (13:37 +0900)
Change-Id: Ibd315baa18a67e34bfe9a6f8d69e8b9353f34cb5
Signed-off-by: jungmin76.park <jungmin76.park@samsung.com>
src/FShell_AppWidgetManagerProxy.cpp
src/FShell_AppWidgetProviderManagerImpl.cpp

index 3dda585..0df926d 100644 (file)
@@ -24,6 +24,8 @@
 #include <FBaseDouble.h>
 #include <FBaseColHashMap.h>
 #include <FShellTypes.h>
+#include <FAppAppManager.h>
+#include <FSysRuntimeInfo.h>
 #include <FIo_IpcClient.h>
 #include <FShell_AppWidgetManagerIpcMessage.h>
 #include "FShell_AppWidgetProviderManagerImpl.h"
@@ -33,7 +35,8 @@ namespace Tizen { namespace Shell {
 
 namespace
 {
-const char IPC_SERVER_NAME[] = "osp.shell.ipcserver.appwidgetmanager";
+static const wchar_t _APPID_OSP_APPWIDGET_SERVICE[] = L"gi2qxenosh.osp-appwidget-service";
+static const char IPC_SERVER_NAME[] = "osp.shell.ipcserver.appwidgetmanager";
 };
 
 using namespace Tizen::Io;
@@ -80,34 +83,42 @@ _AppWidgetManagerProxy::GetInstance()
        return __pAppWidgetProxy.get();
 }
 
+bool IsSystemInitializing(void)
+{
+       static const wchar_t _BOOT_STATUS_KEY[] = L"http://tizen.org/runtime/system.status";
+       static const wchar_t _BOOT_STATUS_INITIALIZING[] = L"initializing";
+
+       String status;
+       Tizen::System::RuntimeInfo::GetValue(_BOOT_STATUS_KEY, status);
+
+       if (status == _BOOT_STATUS_INITIALIZING)
+       {
+               return true;
+       }
+
+       return false;
+}
+
 result
 _AppWidgetManagerProxy::Construct(void)
 {
-       SysLog(NID_SHELL, "Enter.");
+       bool isServiceRunning = Tizen::App::AppManager::GetInstance()->IsRunning(_APPID_OSP_APPWIDGET_SERVICE);
+       bool canConstruct = ( isServiceRunning || IsSystemInitializing() ) ? true : false;
+       if (canConstruct == false)
+       {
+               SysLog(NID_SHELL, "%ls is not running.", _APPID_OSP_APPWIDGET_SERVICE);
+               return E_SYSTEM;
+       }
 
        std::unique_ptr<_IpcClient> pIpcClient(new (std::nothrow) _IpcClient() );
        SysTryReturnResult(NID_SHELL, pIpcClient, E_OUT_OF_MEMORY, "_IpcClient creation failed.");
 
-       const int MAX_TRY_COUNT = 2;
-       const int TRY_SLEEP_TIME = 65;
+       result r = pIpcClient->Construct(IPC_SERVER_NAME, this);
+       SysTryReturnResult(NID_SHELL, !IsFailed(r), E_SYSTEM, "[%s] Failed to connect service.(%s)", GetErrorMessage(r), IPC_SERVER_NAME);
 
-       int count = 0;
-       while (true)
-       {
-               result r = pIpcClient->Construct(IPC_SERVER_NAME, this);
-               if (r == E_SUCCESS)
-               {
-                       SysLog(NID_APP, "Succeeded in connecting service(%s)", IPC_SERVER_NAME);
-                       __pIpcClient = pIpcClient.release();
-                       return E_SUCCESS;
-               }
+       __pIpcClient = pIpcClient.release();
 
-               SysTryReturn(NID_APP, ++count < MAX_TRY_COUNT, E_SYSTEM, r, "[%s] Failed to connect service.(%s)", GetErrorMessage(r), IPC_SERVER_NAME);
-
-               Tizen::Base::Runtime::Thread::Sleep(TRY_SLEEP_TIME);
-       }
-
-       SysLog(NID_SHELL, "Exit.");
+       SysLog(NID_SHELL, "Succeeded in connecting service(%s)", IPC_SERVER_NAME);
        return E_SUCCESS;
 }
 
index 75a29fc..28bd420 100644 (file)
@@ -198,10 +198,10 @@ _AppWidgetProviderManagerImpl::IsPackagedWithTPK(const AppId& appId)
 {
        String packageId = _PackageManagerImpl::GetPackageIdByAppId(appId);
        std::unique_ptr<PackageInfo> pInfo( _PackageManagerImpl::GetInstance()->GetPackageInfoN(packageId) );
-       SysTryReturn(NID_APP, pInfo != null, false, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()) );
+       SysTryReturn(NID_SHELL, pInfo != null, false, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()) );
 
        const _PackageInfoImpl* pPkgInfo = _PackageInfoImpl::GetInstance(pInfo.get());
-       SysTryReturn(NID_APP, pPkgInfo != null, false, E_SYSTEM, "Invalid PackageInfo instance.");
+       SysTryReturn(NID_SHELL, pPkgInfo != null, false, E_SYSTEM, "Invalid PackageInfo instance.");
 
        static const String TPK_TYPE = L"tpk";
        if( pPkgInfo && pPkgInfo->GetAppType() == TPK_TYPE )
@@ -727,8 +727,7 @@ _AppWidgetProviderManagerImpl::RemoveAppWidget(const String& instanceId, int pro
 
        AppWidgetProvider* pAppWidgetProvider = null;
        __appwidgetProviders.GetValue(instanceId, pAppWidgetProvider);
-       result r = __appwidgetProviders.Remove(instanceId);
-       SysLog(NID_SHELL,       "%s", GetErrorMessage(r) );
+       __appwidgetProviders.Remove(instanceId);
 
        if (pAppWidgetProvider != null)
        {
@@ -1094,10 +1093,10 @@ void
 _AppWidgetManagerEvent::FireImpl(Tizen::Base::Runtime::IEventListener& listener, const Tizen::Base::Runtime::IEventArg& arg)
 {
        _AppWidgetManagerEventListener* pListener = dynamic_cast<_AppWidgetManagerEventListener*>(&listener);
-       SysTryReturnVoidResult(NID_APP, pListener != null, E_INVALID_STATE, "Invalid listener : listener(0x%x), arg(0x%x)", &listener, &arg);
+       SysTryReturnVoidResult(NID_SHELL, pListener != null, E_INVALID_STATE, "Invalid listener : listener(0x%x), arg(0x%x)", &listener, &arg);
 
        const _AppWidgetManagerEventArg* pEventArg = dynamic_cast<const _AppWidgetManagerEventArg*>(&arg);
-       SysTryReturnVoidResult(NID_APP, pEventArg != null, E_INVALID_STATE, "Invalid arg : listener(0x%x), arg(0x%x)", &listener, &arg);
+       SysTryReturnVoidResult(NID_SHELL, pEventArg != null, E_INVALID_STATE, "Invalid arg : listener(0x%x), arg(0x%x)", &listener, &arg);
 
        pListener->OnAppWidgetManagerEventRecieved(pEventArg->GetOperation(), pEventArg->GetExtra());