From fadb3ae1280a0ac1fd661b6899acd5765de72402 Mon Sep 17 00:00:00 2001 From: Hyunbin Lee Date: Wed, 10 Apr 2013 16:48:52 +0900 Subject: [PATCH] Refactor DataControl request list (3rd) Change-Id: Ia123a2f13784d40b18fc72227b5e3759eb462247 Signed-off-by: Hyunbin Lee --- src/app/FApp_DataControlProviderManagerImpl.cpp | 1 + src/app/FApp_MapDataControlImpl.cpp | 12 ++++-- src/app/FApp_SqlDataControlImpl.cpp | 12 ++++-- src/io/FIo_DataControlResultSetImpl.cpp | 53 ++++++++++++------------- 4 files changed, 45 insertions(+), 33 deletions(-) diff --git a/src/app/FApp_DataControlProviderManagerImpl.cpp b/src/app/FApp_DataControlProviderManagerImpl.cpp index d890672..b0d431d 100644 --- a/src/app/FApp_DataControlProviderManagerImpl.cpp +++ b/src/app/FApp_DataControlProviderManagerImpl.cpp @@ -135,6 +135,7 @@ _DataControlProviderManagerImpl::SendDataControlResult(RequestId reqId, _DataCon // list-based request pList = _AppArg::GetListN(arg.GetBundle(), OSP_K_ARG); SysTryCatch(NID_APP, pList, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid result object"); + pDataId = dynamic_cast< String* >(pList->GetAt(0)); // request list[0] SysTryCatch(NID_APP, pDataId, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid result object"); diff --git a/src/app/FApp_MapDataControlImpl.cpp b/src/app/FApp_MapDataControlImpl.cpp index 9ac9ab2..5382812 100644 --- a/src/app/FApp_MapDataControlImpl.cpp +++ b/src/app/FApp_MapDataControlImpl.cpp @@ -292,11 +292,13 @@ _MapDataControlImpl::MapDataControlCallback(void* data, _AppArg* pArg, _AppArg* int resultCount = 0; int requestType = 0; int reqId = 0; + int launchReqId = 0; int providerRes = 0; bool providerResult = true; //bundle* origBundle = null; bundle* resBundle = null; _MapDataControlEventArg* pEventArg = null; + const char* p = null; result r = E_SUCCESS; SysTryReturnResult(NID_APP, pResArg != null, E_INVALID_ARG, "Empty result callback."); @@ -305,7 +307,7 @@ _MapDataControlImpl::MapDataControlCallback(void* data, _AppArg* pArg, _AppArg* resBundle = pResArg->GetBundle(); if (resBundle) { - const char* p = appsvc_get_data(resBundle, OSP_K_REQUEST_ID); + p = appsvc_get_data(resBundle, OSP_K_REQUEST_ID); SysTryCatch(NID_APP, p, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid bundle"); reqId = atoi(p); Integer key(reqId); @@ -440,9 +442,13 @@ _MapDataControlImpl::MapDataControlCallback(void* data, _AppArg* pArg, _AppArg* } } + p = appsvc_get_data(pArg->GetBundle(), OSP_K_REQUEST_ID); + SysTryCatch(NID_APP, p, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid bundle"); + launchReqId = atoi(p); + // Remove the request count - SysLog(NID_APP, "Remove a launch request: reqId: %d", reqId); - _AppControlManager::GetInstance()->RemoveLaunchRequest(reqId); + SysLog(NID_APP, "Remove a launch request: reqId: %d", launchReqId); + _AppControlManager::GetInstance()->RemoveLaunchRequest(launchReqId); return E_SUCCESS; diff --git a/src/app/FApp_SqlDataControlImpl.cpp b/src/app/FApp_SqlDataControlImpl.cpp index d7bb7d9..2da0dec 100644 --- a/src/app/FApp_SqlDataControlImpl.cpp +++ b/src/app/FApp_SqlDataControlImpl.cpp @@ -339,11 +339,13 @@ _SqlDataControlImpl::SqlDataControlCallback(void* data, _AppArg* pArg, _AppArg* _DataControlResultSetEnumerator* pResultSetEnum = null; int requestType = 0; int reqId = 0; + int launchReqId = 0; int providerRes = 0; bool providerResult = true; //bundle* origBundle = null; bundle* resBundle = null; _SqlDataControlEventArg* pEventArg = null; + const char* p = null; result r = E_SUCCESS; SysTryReturnResult(NID_APP, pResArg != null, E_INVALID_ARG, "Empty result callback."); @@ -352,7 +354,7 @@ _SqlDataControlImpl::SqlDataControlCallback(void* data, _AppArg* pArg, _AppArg* resBundle = pResArg->GetBundle(); if (resBundle) { - const char* p = appsvc_get_data(resBundle, OSP_K_REQUEST_ID); + p = appsvc_get_data(resBundle, OSP_K_REQUEST_ID); SysTryCatch(NID_APP, p, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid bundle"); reqId = atoi(p); Integer key(reqId); @@ -488,9 +490,13 @@ _SqlDataControlImpl::SqlDataControlCallback(void* data, _AppArg* pArg, _AppArg* } } + p = appsvc_get_data(pArg->GetBundle(), OSP_K_REQUEST_ID); + SysTryCatch(NID_APP, p, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid bundle"); + launchReqId = atoi(p); + // Remove the request count - SysLog(NID_APP, "Remove a launch request: reqId: %d", reqId); - _AppControlManager::GetInstance()->RemoveLaunchRequest(reqId); + SysLog(NID_APP, "Remove a launch request: reqId: %d", launchReqId); + _AppControlManager::GetInstance()->RemoveLaunchRequest(launchReqId); return E_SUCCESS; diff --git a/src/io/FIo_DataControlResultSetImpl.cpp b/src/io/FIo_DataControlResultSetImpl.cpp index b6f7f26..8b84873 100644 --- a/src/io/FIo_DataControlResultSetImpl.cpp +++ b/src/io/FIo_DataControlResultSetImpl.cpp @@ -55,6 +55,8 @@ const char* _DATACONTROL_RESULTSET_DIR = "/tmp/osp/DataControlResultSet/\0"; namespace Tizen { namespace Io { +static const int _DATACONTROL_PACKET_INDEX_COLUMNCOUNT = 1; + _DataControlResultSetImpl::_DataControlResultSetImpl(RequestId reqId) : __constructed(true) , __pageNo(1) @@ -88,9 +90,9 @@ _DataControlResultSetImpl::FillWith(IDbEnumerator* pDbEnum) { String tempFilePath(_DATACONTROL_RESULTSET_DIR); String columnName; - String* pAppId = null; - String* pRequestType = null; - String* pReqId = null; + String appId; + String reqType; + String callerReqId; String* pNo = null; String* pCount = null; String* pColumnCount = null; @@ -110,50 +112,47 @@ _DataControlResultSetImpl::FillWith(IDbEnumerator* pDbEnum) SysAssertf(__constructed == true, "Not yet constructed. Construct() should be called before use.\n\n"); _AppControlManager* pAppMgr = _AppControlManager::GetInstance(); - SysTryReturnResult(NID_APP, pAppMgr, E_SYSTEM, "Failed to get instance."); + SysTryReturnResult(NID_IO, pAppMgr, E_SYSTEM, "Failed to get instance."); - _ResultInfo* pResultInfo = pAppMgr->__resultManager.FindItem(static_cast< int >(__reqId)); - SysTryReturnResult(NID_APP, pResultInfo, E_OBJ_NOT_FOUND, + _ResultInfo* pResultInfo = pAppMgr->__resultManager.FindItem(static_cast< int >(__reqId)); // provider reqId + SysTryReturnResult(NID_IO, pResultInfo, E_OBJ_NOT_FOUND, "The data control request specified with the reqId (%ld) did not exist.", __reqId); const _AppArg& arg = pResultInfo->arg; - std::unique_ptr pList(arg.GetArgListN(0)); - SysTryReturnResult(NID_APP, pList, E_SYSTEM, "Invalid result object."); - // key-based request - pAppId = dynamic_cast< String* >(pList->GetAt(0)); // key[0] - SysTryReturnResult(NID_APP, pAppId, E_SYSTEM, "Invalid request."); - - pRequestType = dynamic_cast< String* >(pList->GetAt(1)); // key[1] - SysTryReturnResult(NID_APP, pRequestType, E_SYSTEM, "Invalid request."); - Integer::Parse(*pRequestType, type); + reqType = arg.GetValue(OSP_K_DATACONTROL_REQUEST_TYPE); + Integer::Parse(reqType, type); requestType = static_cast< _DataControlRequestType >(type); - SysTryReturnResult(NID_APP, requestType == _DATACONTROL_REQUEST_TYPE_SQL_QUERY, E_INVALID_ARG, + SysTryReturnResult(NID_IO, requestType == _DATACONTROL_REQUEST_TYPE_SQL_QUERY, E_INVALID_ARG, "The reqId should be for the data control query request."); - pReqId = dynamic_cast< String* >(pList->GetAt(2)); // key[2] - SysTryReturnResult(NID_APP, pReqId, E_SYSTEM, "Invalid request."); + appId = arg.GetCallerAppId(); + callerReqId = arg.GetValue(OSP_K_REQUEST_ID); // list-based request - pColumnCount = dynamic_cast< String* >(pList->GetAt(5)); - SysTryReturnResult(NID_APP, pColumnCount, E_SYSTEM, "Invalid result object."); + std::unique_ptr< ArrayList, AllElementsDeleter > pList(_AppArg::GetListN(arg.GetBundle(), OSP_K_ARG)); + SysTryReturnResult(NID_IO, pList, E_SYSTEM, "Invalid result object."); + + pColumnCount = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_COLUMNCOUNT)); + SysTryReturnResult(NID_IO, pColumnCount, E_SYSTEM, "Invalid result object."); Integer::Parse(*pColumnCount, columnCount); - pageNoIndex = 5 + columnCount + 2 + 1; + pageNoIndex = _DATACONTROL_PACKET_INDEX_COLUMNCOUNT + columnCount + 2 + 1; pNo = dynamic_cast< String* >(pList->GetAt(pageNoIndex)); - SysTryReturnResult(NID_APP, pNo, E_SYSTEM, "Invalid result object."); + SysTryReturnResult(NID_IO, pNo, E_SYSTEM, "Invalid result object."); Integer::Parse(*pNo, pageNo); pCount = dynamic_cast< String* >(pList->GetAt(pageNoIndex + 1)); - SysTryReturnResult(NID_APP, pCount, E_SYSTEM, "Invalid result object."); + SysTryReturnResult(NID_IO, pCount, E_SYSTEM, "Invalid result object."); Integer::Parse(*pCount, countPerPage); this->SetCapacity(pageNo, countPerPage); - tempFilePath.Append(*pAppId); - tempFilePath.Append(*pReqId); + tempFilePath.Append(appId); + tempFilePath.Append(callerReqId); __tmpPath = tempFilePath; + SysLog(NID_IO, "[DC_PROV_SEND] temp file path: %ls", tempFilePath.GetPointer()); // initialize r = pDbEnum->Reset(); @@ -167,7 +166,7 @@ _DataControlResultSetImpl::FillWith(IDbEnumerator* pDbEnum) if (r == E_OUT_OF_RANGE) // the previous pages do not exist { __result = E_OUT_OF_RANGE; - SysTryReturnResult(NID_APP, false, E_SUCCESS, "Out of range error."); + SysTryReturnResult(NID_IO, false, E_SUCCESS, "Out of range error."); } SysTryReturnResult(NID_IO, !IsFailed(r), E_DATABASE, "The database engine has failed to enumerator result set."); @@ -178,7 +177,7 @@ _DataControlResultSetImpl::FillWith(IDbEnumerator* pDbEnum) if (r == E_OUT_OF_RANGE) // the specific page is empty { __result = E_OUT_OF_RANGE; - SysTryReturnResult(NID_APP, false, E_SUCCESS, "Out of range error."); + SysTryReturnResult(NID_IO, false, E_SUCCESS, "Out of range error."); } SysTryReturnResult(NID_IO, !IsFailed(r), E_DATABASE, "The database engine has failed to enumerate the result set."); -- 2.7.4