#include <appsvc/appsvc.h>
#include <FBaseSysLog.h>
+#include <FBaseColHashMap.h>
#include <FAppAppControl.h>
#include <FBase_StringConverter.h>
#include <FApp_AppControlManager.h>
#include <FApp_AppMessageImpl.h>
+#include <FApp_AppArg.h>
using namespace Tizen::App;
result _OSP_EXPORT_ StartAppControl(int req, const String&, const String&, const String*, const String*, const IMap*);
result _OSP_EXPORT_ TerminateAppControl(int req);
+static void OnAppControlResult(void*, int, service_result_e, void*);
+static int __req = -1;
result
StartAppControl(int req, const String& aId, const String& operationId, const String* pUri, const String* pMime, const IMap* pMap)
const String& package = _AppControlManager::GetAliasAppId(aId);
SysLog(NID_APP, "Actual packageId is %ls.", package.GetPointer());
- int pid = _AppControlManager::GetInstance()->LaunchPkg(msg, package, operationId, pActualUri, pMime, NULL, 0);
+ __req = req;
+ int pid = _AppControlManager::GetInstance()->LaunchPkg(msg, package, operationId, pActualUri, pMime, OnAppControlResult, 0);
if (pid <= 0)
{
r = GetLastResult();
return E_SUCCESS;
}
+void
+OnAppControlResult(void* b, int requestCode, service_result_e res, void* userData)
+{
+ SysLog(NID_APP, "Received request %d.", requestCode);
+
+ result r = E_SYSTEM;
+ bundle* pBundle = static_cast<bundle*>(b);
+
+ HashMap* pResult = new (std::nothrow) HashMap();
+ SysTryCatch(NID_APP, pResult != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Allocation failure.");
+
+ r = pResult->Construct();
+
+ _AppArg::SetArgMap(pBundle, pResult);
+
+ _AppControlManager::GetInstance()->FinishAppControl(__req, res, pResult);
+
+CATCH:
+ __req = -1;
+}
#ifdef __cplusplus
}
result _OSP_EXPORT_ TerminateAppControl(int req);
static void OnAppControlResult(void*, int, service_result_e, void*);
+static int __req = -1;
static int __processId = -1;
static const char __allowedAppControlMessageTable[][2][96] =
}
const String& package = _AppControlManager::GetAliasAppId(aId);
- __processId = _AppControlManager::GetInstance()->Launch(msg, package, oId, pUri, pMime, NULL, reinterpret_cast<void*>(req));
+
+ __req = req;
+ __processId = _AppControlManager::GetInstance()->Launch(msg, package, oId, pUri, pMime, OnAppControlResult, 0);
SysTryReturnResult(NID_APP, __processId >= 0, E_SYSTEM, "StartAppControl: Launching Email AppControl is failed.");
SysLog(NID_APP, "StartAppControl: Launching Message AppControl succeeded.");
}
const String& package = _AppControlManager::GetAliasAppId(aId);
- __processId = _AppControlManager::GetInstance()->Launch(msg, package, oId, pUri, pMime, OnAppControlResult, reinterpret_cast<void*>(req));
+
+ __req = req;
+ __processId = _AppControlManager::GetInstance()->Launch(msg, package, oId, pUri, pMime, OnAppControlResult, 0);
SysTryReturnResult(NID_APP, __processId >= 0, E_SYSTEM, "StartAppControl: Launching Email AppControl is failed.");
SysLog(NID_APP, "StartAppControl: Launching Email AppControl succeeded.");
_AppArg::SetArgMap(pBundle, pResult);
- req = reinterpret_cast<int>(userData);
- _AppControlManager::GetInstance()->FinishAppControl(req, res, pResult);
+ _AppControlManager::GetInstance()->FinishAppControl(__req, res, pResult);
CATCH:
__processId = -1;
+ __req = -1;
}