#include "FApp_Aul.h"
#include "FApp_AppArg.h"
#include "FApp_AppImpl.h"
+#include "FApp_AppInfo.h"
#include "FApp_AppControlManager.h"
#include "FApp_AppControlProviderManagerImpl.h"
_AppArg resArg;
result r = resArg.ConstructResult(arg, pResultList);
- SysTryReturn(NID_APP, !IsFailed(r), r, r, "[%s] Propagating.", GetErrorMessage(r));
+ if (IsFailed(r))
+ {
+ // erase _AppArg after sending the result back to the caller
+ pAppMgr->__resultManager.RemoveItem(reqId);
+
+ SysPropagate(NID_APP, r);
+ return r;
+ }
- //resArg.Print();
- r = _Aul::SendResult(resArg.GetBundle(), static_cast<appsvc_result_val>(0));
- SysLog(NID_APP, "Sent AppControl event for %d.", reqId);
+ r = SendAppControlResultPrimitive(reqId, resArg, 0);
// erase _AppArg after sending the result back to the caller
pAppMgr->__resultManager.RemoveItem(reqId);
_AppArg resArg;
result r = resArg.ConstructResult(arg, pResultMap);
- SysTryReturn(NID_APP, !IsFailed(r), r, r, "[%s] Propagating.", GetErrorMessage(r));
+ if (IsFailed(r))
+ {
+ // erase _AppArg after sending the result back to the caller
+ pAppMgr->__resultManager.RemoveItem(reqId);
+
+ SysPropagate(NID_APP, r);
+ return r;
+ }
const int code = appControlResult;
int res = APPSVC_RES_NOT_OK;
break;
}
- //resArg.Print();
- r = _Aul::SendResult(resArg.GetBundle(), static_cast<appsvc_result_val>(res));
- SysLog(NID_APP, "Sent AppControl event for %d.", reqId);
+ r = SendAppControlResultPrimitive(reqId, resArg, res);
// erase _AppArg after sending the result back to the caller
pAppMgr->__resultManager.RemoveItem(reqId);
return r;
}
+
+result
+_AppControlProviderManagerImpl::SendAppControlResultPrimitive(RequestId reqId, _AppArg& arg, int ret)
+{
+ static bool firstRequestSent = false;
+
+ if (reqId == 0 && firstRequestSent)
+ {
+ SysLog(NID_APP, "Sent main AppControl request already.");
+
+ return E_SUCCESS;
+ }
+ else
+ {
+ if (reqId == 0)
+ {
+ firstRequestSent = true;
+ }
+
+ const bool isService = _AppInfo::GetAppType() & _APP_TYPE_SERVICE_APP;
+
+ //resArg.Print();
+ result r = _Aul::SendResult(arg.GetBundle(), static_cast<appsvc_result_val>(ret), _AppInfo::IsSubMode(), isService);
+ SysLog(NID_APP, "Sent AppControl event for %d.", reqId);
+
+ return r;
+ }
+}
+
+
AppId
_AppControlProviderManagerImpl::GetClientAppId(RequestId reqId) const
{