result
+_AppArg::Construct(const _AppMessageImpl& msg, const String& oId, const String* pUri, const String* pMime)
+{
+ __pBundle = bundle_dup(const_cast<bundle*>(msg.GetBundle()));
+ SysTryReturnResult(NID_APP, __pBundle != null, E_OUT_OF_MEMORY, "Bundle creation failure.");
+
+ return CreateAppControlArg(__pBundle, oId, pUri, pMime, null);
+}
+
+
+result
_AppArg::Construct(const _SqlDataControlImpl& dc, _DataControlRequestType requestType, const IList* pList)
{
__pBundle = bundle_create();
return null;
}
- ArrayList* pList = _AppMessageImpl::GetValueArray(__pBundle, OSP_K_ARG);
+ ArrayList* pList = _AppMessageImpl::GetValueArrayN(__pBundle, OSP_K_ARG);
if (pList)
{
pHashMap->Add(new (std::nothrow) String(TIZEN_APPCONTROL_DATA_LEGACY), pList);
result
-_AppArg::CreateAppControlArg(bundle* b, const _AppControlImpl& ac, const String* pUriData, const String* pMimeType, const IMap* pList)
+_AppArg::CreateAppControlArg(bundle* b, const _AppControlImpl& ac, const String* pUriData, const String* pMimeType, const IMap* pMap)
+{
+ return CreateAppControlArg(b, ac._opId, pUriData, pMimeType, pMap);
+}
+
+
+result
+_AppArg::CreateAppControlArg(bundle* b, const String& oId, const String* pUriData, const String* pMimeType, const IMap* pMap)
{
SysAssertf(b != null, "Valid bundle should be supplied");
bundle* pb = b;
- std::unique_ptr<char[]> pOperation(_StringConverter::CopyToCharArrayN(ac._opId));
+ std::unique_ptr<char[]> pOperation(_StringConverter::CopyToCharArrayN(oId));
if (pOperation.get())
{
appsvc_set_operation(pb, pOperation.get());
}
}
- AddStrMap(pb, pList);
+ AddStrMap(pb, pMap);
bundle_add(pb, OSP_K_LAUNCH_TYPE, OSP_V_LAUNCH_TYPE_APPCONTROL);
std::unique_ptr<char[]> pId(_StringConverter::CopyToCharArrayN(appId));
SysTryReturnVoidResult(NID_APP, pId != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Converting %ls failed.", appId.GetPointer());
- bundle_add(b, OSP_K_APPID, pId.get());
+ int res = bundle_add(b, OSP_K_APPID, pId.get());
+ if (res < 0 && errno == EPERM) // key exists
+ {
+ bundle_del(b, OSP_K_APPID);
+ bundle_add(b, OSP_K_APPID, pId.get());
+ }
appsvc_set_appid(b, pId.get());
}
char buffer[32] = {0, };
snprintf(buffer, 32, "%d", reqId);
- bundle_add(pBundle, OSP_K_REQUEST_ID, buffer);
+ int res = bundle_add(pBundle, OSP_K_REQUEST_ID, buffer);
+ if (res < 0 && errno == EPERM) // key exists
+ {
+ bundle_del(pBundle, OSP_K_REQUEST_ID);
+ bundle_add(pBundle, OSP_K_REQUEST_ID, buffer);
+ }
}
+void
+_AppArg::UpdateKeyValue(bundle* pBundle, const char* pKey, const String& value)
+{
+ SysTryReturnVoidResult(NID_APP, pBundle != null, E_INVALID_STATE, "[E_INVALID_STATE] Improper bundle state.");
+
+ char pBuffer[128] = {0, };
+ snprintf(pBuffer, 128, "%ls", value.GetPointer());
+ int res = bundle_add(pBundle, pKey, pBuffer);
+ if (res < 0 && errno == EPERM) // key exists
+ {
+ bundle_del(pBundle, pKey);
+ bundle_add(pBundle, pKey, pBuffer);
+ }
+}
int
_AppArg::GetRequestIdFromBundle(bundle* pBundle)