Refactor DataControl request list (2nd)
authorHyunbin Lee <hyunbin.lee@samsung.com>
Tue, 9 Apr 2013 09:12:17 +0000 (18:12 +0900)
committerHyunbin Lee <hyunbin.lee@samsung.com>
Wed, 10 Apr 2013 08:12:40 +0000 (17:12 +0900)
Change-Id: If46950d3e2b8a56608a1e6c1a5015b9cdc1b91c9
Signed-off-by: Hyunbin Lee <hyunbin.lee@samsung.com>
src/app/FApp_AppImpl.cpp
src/app/FApp_DataControlManager.cpp
src/app/FApp_DataControlManager.h
src/app/FApp_DataControlProviderManagerImpl.cpp
src/app/FApp_MapDataControlImpl.cpp
src/app/FApp_SqlDataControlImpl.cpp

index d942872..0d2e32f 100644 (file)
@@ -80,16 +80,19 @@ namespace Tizen { namespace App
 
 _AppImpl* _AppImpl::__pAppImpl = null;
 bool _AppImpl::__isTerminationRequested = false;
+#if 0
 static const int _DATACONTROL_PACKET_INDEX_APPID = 0;
 static const int _DATACONTROL_PACKET_INDEX_REQUESTTYPE = 1;
 static const int _DATACONTROL_PACKET_INDEX_REQID = 2;
 static const int _DATACONTROL_PACKET_INDEX_PROVIDERID = 3;
-static const int _DATACONTROL_PACKET_INDEX_DATAID = 4;
-static const int _DATACONTROL_PACKET_INDEX_COLUMNCOUNT = 5;
-static const int _DATACONTROL_PACKET_INDEX_DELETEWHERE = 5;
-static const int _DATACONTROL_PACKET_INDEX_COLUMNLIST = 6;
-static const int _DATACONTROL_PACKET_INDEX_INSERTMAP = 6;
-static const int _DATACONTROL_PACKET_INDEX_UPDATEMAP = 6;
+#endif
+static const int _DATACONTROL_PACKET_INDEX_DATAID = 0;
+static const int _DATACONTROL_PACKET_INDEX_COLUMNCOUNT = 1;
+static const int _DATACONTROL_PACKET_INDEX_DELETEWHERE = 1;
+static const int _DATACONTROL_PACKET_INDEX_MAPKEY = 1;
+static const int _DATACONTROL_PACKET_INDEX_COLUMNLIST = 2;
+static const int _DATACONTROL_PACKET_INDEX_INSERTMAP = 2;
+static const int _DATACONTROL_PACKET_INDEX_UPDATEMAP = 2;
 
 struct charDeleter
 {
@@ -746,11 +749,11 @@ _AppImpl::OnDataControlRequestReceived(const _AppArg& arg, RequestId reqId)
        ArrayList* pColumnList = null;
        HashMap* pInsertMap = null;
        HashMap* pUpdateMap = null;
-       String* pAppId = null;
-       String* pRequestType = null;
-       String* pProviderId = null;
+       String appId;
+       String reqType;
+       String providerId;
        String* pDataId = null;
-       String* pReqId = null;
+       String callerReqId;
        String* pColumnCount = null;
        String* pColumn = null;
        String* pValue = null;
@@ -760,13 +763,6 @@ _AppImpl::OnDataControlRequestReceived(const _AppArg& arg, RequestId reqId)
        String* pNo = null;
        String* pCount = null;
        String empty(L"NULL");
-#if 0
-       _DataControlResultSetImpl* pResultSetImpl = null;
-       String* pResult = null;
-       String* pObject = null;
-       String* pTempObject = null;
-       String* pTempFilePath = null;
-#endif
        _AppArg resultArg;
        int type = 0;
        _DataControlRequestType requestType = _DATACONTROL_REQUEST_TYPE_UNDEFINED;
@@ -775,41 +771,31 @@ _AppImpl::OnDataControlRequestReceived(const _AppArg& arg, RequestId reqId)
        int countPerPage = 0;
        int i = 0;
        int index = 0;
-       //ArrayList* pResultArgList = null;
        result r = E_SUCCESS;
        result res = E_SUCCESS;
        ArrayList* pList = null;
        String* pKey = null;
        String* pNewValue = null;
        String* pOldValue = null;
-#if 0
-       String* pResultCount = null;
-       String* pResultValue = null;
-#endif
-
-       SysLog(NID_APP, "[DC_PROVIDER] Data control request is received.");
-       //arg.Print();
 
-       pList = arg.GetArgListN(0);
-       SysTryCatch(NID_APP, pList, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
+       SysLog(NID_APP, "[DC_PROV_RECV] Data control request is received.");
+       //arg.Print(); // request info
 
-       // key-based
-       pAppId = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_APPID)); // key(0)
-       SysTryCatch(NID_APP, pAppId, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
+       // key-based request
+       appId = arg.GetCallerAppId();
 
-       pRequestType = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_REQUESTTYPE)); // key(1)
-       SysTryCatch(NID_APP, pRequestType, r = E_SYSTEM, E_SYSTEM, "[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);
 
-       pReqId = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_REQID)); // key(2)
-       SysTryCatch(NID_APP, pReqId, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
+       callerReqId = arg.GetValue(OSP_K_REQUEST_ID);
+       providerId = arg.GetValue(OSP_K_DATACONTROL_PROVIDER);
 
-       pProviderId = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_PROVIDERID)); // key(3)
-       SysTryCatch(NID_APP, pProviderId, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
+       // 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");
 
-       // list-based
-       pDataId = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_DATAID));// list(0): data ID
+       pDataId = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_DATAID));// request list[0]: data ID
        SysTryCatch(NID_APP, pDataId, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
 
        if (requestType >= _DATACONTROL_REQUEST_TYPE_SQL_QUERY && requestType <= _DATACONTROL_REQUEST_TYPE_SQL_DELETE)
@@ -819,7 +805,7 @@ _AppImpl::OnDataControlRequestReceived(const _AppArg& arg, RequestId reqId)
        }
        else if (requestType >= _DATACONTROL_REQUEST_TYPE_MAP_QUERY && requestType <= _DATACONTROL_REQUEST_TYPE_MAP_DELETE)
        {
-               pKey = dynamic_cast< String* >(pList->GetAt(5)); // list[1]
+               pKey = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_MAPKEY)); // request list[1]
                SysTryCatch(NID_APP, pKey, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
 
                pMapListener = __pMapDataControlProviderEventListener;
@@ -834,9 +820,9 @@ _AppImpl::OnDataControlRequestReceived(const _AppArg& arg, RequestId reqId)
        switch (requestType)
        {
        case _DATACONTROL_REQUEST_TYPE_SQL_QUERY:
-               SysLog(NID_APP, "[DC_PROVIDER] SqlDataControl SELECT");
+               SysLog(NID_APP, "[DC_PROV_RECV] SqlDataControl SELECT");
 
-               // list(1): selected column count
+               // request list[1]: selected column count
                pColumnCount = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_COLUMNCOUNT));
                SysTryCatch(NID_APP, pColumnCount, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
 
@@ -850,22 +836,22 @@ _AppImpl::OnDataControlRequestReceived(const _AppArg& arg, RequestId reqId)
                        pColumnList = new (std::nothrow) ArrayList();
                        SysTryReturnVoidResult(NID_APP, pColumnList, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory.");
                        pColumnList->Construct();
-                       SysLog(NID_APP, "[DC_PROVIDER] selected column count: %d", columnCount);
+                       SysLog(NID_APP, "[DC_PROV_RECV] selected column count: %d", columnCount);
 
                        i = 0;
-                       while (i < columnCount) // list(2): column list
+                       while (i < columnCount) // request list[2]: column list
                        {
                                pColumn = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_COLUMNLIST + i));
                                SysTryCatch(NID_APP, pColumn != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
 
                                pColumnList->Add(*(new String(*pColumn)));
-                               SysLog(NID_APP, "[DC_PROVIDER] column[%d]: %ls", i, pColumn->GetPointer());
+                               SysLog(NID_APP, "[DC_PROV_RECV] column[%d]: %ls", i, pColumn->GetPointer());
                                i++;
                        }
                }
 
                i += _DATACONTROL_PACKET_INDEX_COLUMNLIST;
-               pWhere = dynamic_cast< String* >(pList->GetAt(i)); // list(3): where clause
+               pWhere = dynamic_cast< String* >(pList->GetAt(i)); // request list: where clause
                SysTryCatch(NID_APP, pWhere, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
 
                if (pWhere->Equals(empty) == true)
@@ -874,11 +860,11 @@ _AppImpl::OnDataControlRequestReceived(const _AppArg& arg, RequestId reqId)
                }
                else
                {
-                       SysLog(NID_APP, "[DC_PROVIDER] pWhere: %ls", pWhere->GetPointer());
+                       SysLog(NID_APP, "[DC_PROV_RECV] pWhere: %ls", pWhere->GetPointer());
                }
 
                i++;
-               pOrder = dynamic_cast< String* >(pList->GetAt(i)); // list(4): order clause
+               pOrder = dynamic_cast< String* >(pList->GetAt(i)); // request list: order clause
                SysTryCatch(NID_APP, pOrder, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
 
                if (pOrder->Equals(empty) == true)
@@ -887,35 +873,35 @@ _AppImpl::OnDataControlRequestReceived(const _AppArg& arg, RequestId reqId)
                }
                else
                {
-                       SysLog(NID_APP, "[DC_PROVIDER] pOrder: %ls", pOrder->GetPointer());
+                       SysLog(NID_APP, "[DC_PROV_RECV] pOrder: %ls", pOrder->GetPointer());
                }
 
                i++;
-               pNo = dynamic_cast <String*>(pList->GetAt(i)); // list(5): page number
+               pNo = dynamic_cast <String*>(pList->GetAt(i)); // request list: page number
                SysTryCatch(NID_APP, pNo, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
                Integer::Parse(*pNo, pageNo);
 
                i++;
-               pCount = dynamic_cast <String*>(pList->GetAt(i)); // list(6): count per page
+               pCount = dynamic_cast <String*>(pList->GetAt(i)); // request list: count per page
                SysTryCatch(NID_APP, pCount, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
                Integer::Parse(*pCount, countPerPage);
 
-               pSqlListener->OnSqlDataControlSelectRequestReceived(reqId, *pProviderId, *pDataId, pColumnList,
+               pSqlListener->OnSqlDataControlSelectRequestReceived(reqId, providerId, *pDataId, pColumnList,
                                pWhere, pOrder);
 
-               SysLog(NID_APP, "[DC_PROVIDER] caller appId: %ls, requestType: %d, reqId: %ls, providerId: %ls, dataId: %ls, pColumnList: 0x%0x, pWhere: 0x%x, pOrder: 0x%x, pageNo: %d, countPerPage: %d",
-                               pAppId->GetPointer(), requestType, pReqId->GetPointer(), pProviderId->GetPointer(),
+               SysLog(NID_APP, "[DC_PROV_RECV] caller appId: %ls, requestType: %d, caller reqId: %ls, providerId: %ls, dataId: %ls, pColumnList: 0x%0x, pWhere: 0x%x, pOrder: 0x%x, pageNo: %d, countPerPage: %d",
+                               appId.GetPointer(), requestType, callerReqId.GetPointer(), providerId.GetPointer(),
                                pDataId->GetPointer(), pColumnList, pWhere, pOrder, pageNo, countPerPage);
                break;
        case _DATACONTROL_REQUEST_TYPE_SQL_INSERT:
-               SysLog(NID_APP, "[DC_PROVIDER] SqlDataControl INSERT");
+               SysLog(NID_APP, "[DC_PROV_RECV] SqlDataControl INSERT");
 
-               // list(1): insert column count
+               // request list[1]: insert column count
                pColumnCount = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_COLUMNCOUNT));
                SysTryCatch(NID_APP, pColumnCount, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
 
                Integer::Parse(*pColumnCount, columnCount);
-               SysLog(NID_APP, "[DC_PROVIDER] inserted column count: %d", columnCount);
+               SysLog(NID_APP, "[DC_PROV_RECV] inserted column count: %d", columnCount);
 
                pInsertMap = new (std::nothrow) HashMap();
                SysTryReturnVoidResult(NID_APP, pInsertMap, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory.");
@@ -923,35 +909,35 @@ _AppImpl::OnDataControlRequestReceived(const _AppArg& arg, RequestId reqId)
 
                i = 0;
                index = 0;
-               while (i < columnCount * 2) // list(2): column-value pairs
+               while (i < columnCount * 2) // request list[2]: column-value pairs
                {
                        pColumn = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_INSERTMAP + i++));
                        SysTryCatch(NID_APP, pColumn != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
-                       SysLog(NID_APP, "[DC_PROVIDER] column[%d]: %ls", index, pColumn->GetPointer());
+                       SysLog(NID_APP, "[DC_PROV_RECV] column[%d]: %ls", index, pColumn->GetPointer());
 
                        pValue = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_INSERTMAP + i++));
                        SysTryCatch(NID_APP, pValue != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
-                       SysLog(NID_APP, "[DC_PROVIDER] value[%d]: %ls", index, pValue->GetPointer());
+                       SysLog(NID_APP, "[DC_PROV_RECV] value[%d]: %ls", index, pValue->GetPointer());
 
                        pInsertMap->Add(*(new String(*pColumn)), *(new String(*pValue)));
                        index++;
                }
 
-               pSqlListener->OnSqlDataControlInsertRequestReceived(reqId, *pProviderId, *pDataId, *pInsertMap);
+               pSqlListener->OnSqlDataControlInsertRequestReceived(reqId, providerId, *pDataId, *pInsertMap);
 
-               SysLog(NID_APP, "[DC_PROVIDER] caller appId: %ls, requestType: %d, reqId: %ls, providerId: %ls, dataId: %ls, pInsertMap: 0x%x",
-                               pAppId->GetPointer(), requestType, pReqId->GetPointer(), pProviderId->GetPointer(),
+               SysLog(NID_APP, "[DC_PROV_RECV] caller appId: %ls, requestType: %d, caller reqId: %ls, providerId: %ls, dataId: %ls, pInsertMap: 0x%x",
+                               appId.GetPointer(), requestType, callerReqId.GetPointer(), providerId.GetPointer(),
                                pDataId->GetPointer(), pInsertMap);
                break;
        case _DATACONTROL_REQUEST_TYPE_SQL_UPDATE:
-               SysLog(NID_APP, "[DC_PROVIDER] SqlDataControl UPDATE");
+               SysLog(NID_APP, "[DC_PROV_RECV] SqlDataControl UPDATE");
 
-               // list(1): updated column count
+               // request list[1]: updated column count
                pColumnCount = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_COLUMNCOUNT));
                SysTryCatch(NID_APP, pColumnCount, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
 
                Integer::Parse(*pColumnCount, columnCount);
-               SysLog(NID_APP, "[DC_PROVIDER] updated column count: %d", columnCount);
+               SysLog(NID_APP, "[DC_PROV_RECV] updated column count: %d", columnCount);
 
                pUpdateMap = new (std::nothrow) HashMap();
                SysTryReturnVoidResult(NID_APP, pUpdateMap, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory.");
@@ -959,21 +945,21 @@ _AppImpl::OnDataControlRequestReceived(const _AppArg& arg, RequestId reqId)
 
                i = 0;
                index = 0;
-               while (i < columnCount * 2) // list(2): column-value pairs
+               while (i < columnCount * 2) // request list[2]: column-value pairs
                {
                        pColumn = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_UPDATEMAP + i++));
                        SysTryCatch(NID_APP, pColumn != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
-                       SysLog(NID_APP, "[DC_PROVIDER] column[%d]: %ls", index, pColumn->GetPointer());
+                       SysLog(NID_APP, "[DC_PROV_RECV] column[%d]: %ls", index, pColumn->GetPointer());
 
                        pValue = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_UPDATEMAP + i++));
                        SysTryCatch(NID_APP, pValue != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
-                       SysLog(NID_APP, "[DC_PROVIDER] value[%d]: %ls", index, pValue->GetPointer());
+                       SysLog(NID_APP, "[DC_PROV_RECV] value[%d]: %ls", index, pValue->GetPointer());
 
                        pUpdateMap->Add(*(new String(*pColumn)), *(new String(*pValue)));
                        index++;
                }
 
-               // list(3): where clause
+               // request list: where clause
                pWhere = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_UPDATEMAP + i));
                SysTryCatch(NID_APP, pWhere, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
 
@@ -983,19 +969,19 @@ _AppImpl::OnDataControlRequestReceived(const _AppArg& arg, RequestId reqId)
                }
                else
                {
-                       SysLog(NID_APP, "[DC_PROVIDER] pWhere: %ls", pWhere->GetPointer());
+                       SysLog(NID_APP, "[DC_PROV_RECV] pWhere: %ls", pWhere->GetPointer());
                }
 
-               pSqlListener->OnSqlDataControlUpdateRequestReceived(reqId, *pProviderId, *pDataId, *pUpdateMap, pWhere);
+               pSqlListener->OnSqlDataControlUpdateRequestReceived(reqId, providerId, *pDataId, *pUpdateMap, pWhere);
 
-               SysLog(NID_APP, "[DC_PROVIDER] caller appId: %ls, requestType: %d, reqId: %ls, providerId: %ls, dataId: %ls, pUpdateMap: 0x%x, pWhere: 0x%x",
-                               pAppId->GetPointer(), requestType, pReqId->GetPointer(), pProviderId->GetPointer(),
+               SysLog(NID_APP, "[DC_PROV_RECV] caller appId: %ls, requestType: %d, caller reqId: %ls, providerId: %ls, dataId: %ls, pUpdateMap: 0x%x, pWhere: 0x%x",
+                               appId.GetPointer(), requestType, callerReqId.GetPointer(), providerId.GetPointer(),
                                pDataId->GetPointer(), pUpdateMap, pWhere);
                break;
        case _DATACONTROL_REQUEST_TYPE_SQL_DELETE:
-               SysLog(NID_APP, "[DC_PROVIDER] SqlDataControl DELETE");
+               SysLog(NID_APP, "[DC_PROV_RECV] SqlDataControl DELETE");
 
-               // list(1): where clause
+               // request list[1]: where clause
                pWhere = dynamic_cast< String* >(pList->GetAt(_DATACONTROL_PACKET_INDEX_DELETEWHERE));
                SysTryCatch(NID_APP, pWhere, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
 
@@ -1005,59 +991,76 @@ _AppImpl::OnDataControlRequestReceived(const _AppArg& arg, RequestId reqId)
                }
                else
                {
-                       SysLog(NID_APP, "[DC_PROVIDER] pWhere: %ls", pWhere->GetPointer());
+                       SysLog(NID_APP, "[DC_PROV_RECV] pWhere: %ls", pWhere->GetPointer());
                }
 
-               pSqlListener->OnSqlDataControlDeleteRequestReceived(reqId, *pProviderId, *pDataId, pWhere);
+               pSqlListener->OnSqlDataControlDeleteRequestReceived(reqId, providerId, *pDataId, pWhere);
 
-               SysLog(NID_APP, "[DC_PROVIDER] caller appId: %ls, requestType: %d, reqId: %ls, providerId: %ls, dataId: %ls, pWhere: 0x%x",
-                               pAppId->GetPointer(), requestType, pReqId->GetPointer(), pProviderId->GetPointer(),
+               SysLog(NID_APP, "[DC_PROV_RECV] caller appId: %ls, requestType: %d, caller reqId: %ls, providerId: %ls, dataId: %ls, pWhere: 0x%x",
+                               appId.GetPointer(), requestType, callerReqId.GetPointer(), providerId.GetPointer(),
                                pDataId->GetPointer(), pWhere);
                break;
        case _DATACONTROL_REQUEST_TYPE_MAP_QUERY:
-               pNo = dynamic_cast <String*>(pList->GetAt(6)); // list[2]
+               SysLog(NID_APP, "[DC_PROV_RECV] MapDataControl GetValue");
+
+               pNo = dynamic_cast <String*>(pList->GetAt(2)); // request list[2]
                SysTryCatch(NID_APP, pNo, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
                Integer::Parse(*pNo, pageNo);
 
-               pCount = dynamic_cast <String*>(pList->GetAt(7)); //list[3]
+               pCount = dynamic_cast <String*>(pList->GetAt(3)); // request list[3]
                SysTryCatch(NID_APP, pCount, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
                Integer::Parse(*pCount, countPerPage);
 
-               pMapListener->OnMapDataControlGetValueRequestReceived(reqId, *pProviderId, *pDataId, *pKey);
+               pMapListener->OnMapDataControlGetValueRequestReceived(reqId, providerId, *pDataId, *pKey);
+
+               SysLog(NID_APP, "[DC_PROV_RECV] caller appId: %ls, requestType: %d, caller reqId: %ls, providerId: %ls, dataId: %ls, key: %ls, pageNo: %d, countPerPage: %d",
+                               appId.GetPointer(), requestType, callerReqId.GetPointer(), providerId.GetPointer(),
+                               pDataId->GetPointer(), pKey->GetPointer(), pageNo, countPerPage);
                break;
        case _DATACONTROL_REQUEST_TYPE_MAP_INSERT:
-               pValue = dynamic_cast <String*>(pList->GetAt(6)); // list[2]
+               SysLog(NID_APP, "[DC_PROV_RECV] MapDataControl AddValue");
+
+               pValue = dynamic_cast <String*>(pList->GetAt(2)); // request list[2]
                SysTryCatch(NID_APP, pValue, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
 
-               pMapListener->OnMapDataControlAddValueRequestReceived(reqId, *pProviderId, *pDataId, *pKey, *pValue);
+               pMapListener->OnMapDataControlAddValueRequestReceived(reqId, providerId, *pDataId, *pKey, *pValue);
+
+               SysLog(NID_APP, "[DC_PROV_RECV] caller appId: %ls, requestType: %d, caller reqId: %ls, providerId: %ls, dataId: %ls, key: %ls, value: %ls",
+                               appId.GetPointer(), requestType, callerReqId.GetPointer(), providerId.GetPointer(),
+                               pDataId->GetPointer(), pKey->GetPointer(), pValue->GetPointer());
                break;
        case _DATACONTROL_REQUEST_TYPE_MAP_UPDATE:
-               pOldValue = dynamic_cast <String*>(pList->GetAt(6)); // list[2]
+               SysLog(NID_APP, "[DC_PROV_RECV] MapDataControl SetValue");
+
+               pOldValue = dynamic_cast <String*>(pList->GetAt(2)); // request list[2]
                SysTryCatch(NID_APP, pOldValue, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
 
-               pNewValue = dynamic_cast <String*>(pList->GetAt(7)); // list[3]
+               pNewValue = dynamic_cast <String*>(pList->GetAt(3)); // request list[3]
                SysTryCatch(NID_APP, pNewValue, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
 
-               pMapListener->OnMapDataControlSetValueRequestReceived(reqId, *pProviderId, *pDataId, *pKey, *pOldValue, *pNewValue);
+               pMapListener->OnMapDataControlSetValueRequestReceived(reqId, providerId, *pDataId, *pKey, *pOldValue, *pNewValue);
+
+               SysLog(NID_APP, "[DC_PROV_RECV] caller appId: %ls, requestType: %d, caller reqId: %ls, providerId: %ls, dataId: %ls, key: %ls, oldValue: %ls, newValue: %ls",
+                               appId.GetPointer(), requestType, callerReqId.GetPointer(), providerId.GetPointer(),
+                               pDataId->GetPointer(), pKey->GetPointer(), pOldValue->GetPointer(), pNewValue->GetPointer());
                break;
        case _DATACONTROL_REQUEST_TYPE_MAP_DELETE:
-               pValue = dynamic_cast <String*>(pList->GetAt(6)); // list[2]
+               SysLog(NID_APP, "[DC_PROV_RECV] MapDataControl RemoveValue");
+
+               pValue = dynamic_cast <String*>(pList->GetAt(2)); // request list[2]
                SysTryCatch(NID_APP, pValue, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
 
-               pMapListener->OnMapDataControlRemoveValueRequestReceived(reqId, *pProviderId, *pDataId, *pKey, *pValue);
+               pMapListener->OnMapDataControlRemoveValueRequestReceived(reqId, providerId, *pDataId, *pKey, *pValue);
+
+               SysLog(NID_APP, "[DC_PROV_RECV] caller appId: %ls, requestType: %d, caller reqId: %ls, providerId: %ls, dataId: %ls, key: %ls, value: %ls",
+                               appId.GetPointer(), requestType, callerReqId.GetPointer(), providerId.GetPointer(),
+                               pDataId->GetPointer(), pKey->GetPointer(), pValue->GetPointer());
                break;
        default:
                SysTryCatch(NID_APP, false, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid request");
                break;
        }
 
-       if (requestType >= _DATACONTROL_REQUEST_TYPE_MAP_QUERY && requestType <= _DATACONTROL_REQUEST_TYPE_MAP_DELETE)
-       {
-               SysLog(NID_APP, "caller appId: %ls, requestType: %d, reqId: %ls, providerId: %ls, dataId: %ls, key: %ls",
-                               pAppId->GetPointer(), requestType, pReqId->GetPointer(), pProviderId->GetPointer(),
-                               pDataId->GetPointer(), pKey->GetPointer());
-       }
-
        if (pColumnList)
        {
                pColumnList->RemoveAll(true);
index 3a8a6fa..b485314 100644 (file)
  */
 
 #include <new>
+#include <cstdlib>
+#include <pthread.h>
+#include <typeinfo>
 
 #include <FBaseInteger.h>
+#include <FBaseSysLog.h>
+
 #include "FApp_DataControlManager.h"
 
 using namespace Tizen::Base;
@@ -31,33 +36,85 @@ using namespace Tizen::Base::Collection;
 namespace Tizen { namespace App
 {
 
+_DataControlManager* _DataControlManager::__pDataControlManagerInstance = null;
+
 _DataControlManager::_DataControlManager(void)
+       : __pDataControlRequestList(null)
 {
-       __pDataControlRequestList.Construct();
+       __pDataControlRequestList = new (std::nothrow) HashMap(SingleObjectDeleter);
+       SysTryReturnVoidResult(NID_APP, __pDataControlRequestList != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
+
+       __pDataControlRequestList->Construct();
 }
 
 _DataControlManager::~_DataControlManager(void)
 {
+       delete __pDataControlRequestList;
+}
+
+void
+_DataControlManager::InitSingleton(void)
+{
+       _DataControlManager* pInst = new (std::nothrow) _DataControlManager();
+       SysTryReturnVoidResult(NID_APP, pInst != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
+
+       __pDataControlManagerInstance = pInst;
+               
+       std::atexit(DestroySingleton);
+       return;
+}
+
+void
+_DataControlManager::DestroySingleton(void)
+{
+       delete __pDataControlManagerInstance;
 }
 
 _DataControlManager*
 _DataControlManager::GetInstance(void)
 {
-       static _DataControlManager inst;
-       return &inst;
+       static pthread_once_t onceBlock = PTHREAD_ONCE_INIT;
+       
+       if (__pDataControlManagerInstance == null)
+       {
+               ClearLastResult();
+               pthread_once(&onceBlock, InitSingleton);
+               result r = GetLastResult();
+               if (IsFailed(r))
+               {
+                       onceBlock = PTHREAD_ONCE_INIT;
+                       SysPropagate(NID_APP, r);
+               }
+       }
+
+       return __pDataControlManagerInstance;
 }
 
-void
-_DataControlManager::AddEvent(int reqId, Object* pObj)
+result
+_DataControlManager::AddRequestInfo(Integer* pReqId, _DataControlRequestInfo* pReqInfo)
+{
+       //SysLog(NID_APP, "DataControl request list count: %d", __pDataControlRequestList->GetCount());
+       return __pDataControlRequestList->Add(pReqId, pReqInfo);
+}
+
+_DataControlRequestInfo*
+_DataControlManager::GetRequestInfo(Integer& reqId) 
 {
-       __pDataControlRequestList.Add(new (std::nothrow) Integer(reqId), pObj);
+       result r = E_SUCCESS;
+
+       Object* pObj = __pDataControlRequestList->GetValue(reqId);
+       SysTryReturn(NID_APP, pObj != null, null, GetLastResult(), "[%s] Propagating to caller...", GetErrorMessage(GetLastResult()));
+
+       _DataControlRequestInfo* pReqInfo = dynamic_cast< _DataControlRequestInfo* >(pObj);
+       SysTryReturn(NID_APP, pReqInfo != null, null, r, "[E_SYSTEM] invalid request info");
+
+       return pReqInfo;
 }
 
-Object*
-_DataControlManager::GetEvent(int reqId) 
+void
+_DataControlManager::RemoveRequestInfo(Integer& reqId)
 {
-       Integer key(reqId);
-       return __pDataControlRequestList.GetValue(key);
+       __pDataControlRequestList->Remove(reqId);
 }
 
 }} // Tizen::App
index 6dd8349..9d1e232 100644 (file)
 
 #include <FBaseObject.h>
 #include <FBaseColHashMap.h>
+#include <FBaseRtEvent.h>
 
 namespace Tizen { namespace App
 {
 
+class _DataControlRequestInfo
+       : public Tizen::Base::Object
+{
+public:
+       _DataControlRequestInfo(Tizen::Base::Runtime::Event* pEvent)
+       {
+               __pEvent = pEvent;
+       }
+
+       virtual ~_DataControlRequestInfo(void)
+       {
+       }
+
+       Tizen::Base::Runtime::Event* GetEvent(void)
+       {
+               return __pEvent;
+       }
+private:
+       _DataControlRequestInfo(void)
+               : __pEvent(null)
+       {
+       }
+private:
+       Tizen::Base::Runtime::Event* __pEvent;
+};
+
 class _DataControlManager
        : public Tizen::Base::Object
 {
 public:
        static _DataControlManager* GetInstance(void);
 
-       void AddEvent(int reqId, Tizen::Base::Object* pObj);
+       result AddRequestInfo(Tizen::Base::Integer* pReqId, _DataControlRequestInfo* pReqInfo);
+
+       _DataControlRequestInfo* GetRequestInfo(Tizen::Base::Integer& reqId);
 
-       Tizen::Base::Object* GetEvent(int reqId);
+       void RemoveRequestInfo(Tizen::Base::Integer& reqId);
 
 private:
        _DataControlManager(void);
 
        virtual ~_DataControlManager(void);
 
+       static void InitSingleton(void);
+
+       static void DestroySingleton(void);
+
 private:
-       Tizen::Base::Collection::HashMap __pDataControlRequestList;
+       static _DataControlManager* __pDataControlManagerInstance;
+       Tizen::Base::Collection::HashMap* __pDataControlRequestList;
 
 }; // _DataControlManager
 
index 738b385..d890672 100644 (file)
@@ -80,13 +80,12 @@ _DataControlProviderManagerImpl::SendDataControlResult(RequestId reqId, _DataCon
                IDbEnumerator* pDbEnum, IList* pResultValueList, long long insertRowId, bool providerResult, const String* pErrorMsg)
 {
        ArrayList* pList = null;
-       String* pAppId = null;
+       String appId;
        String reqType;
        int type = 0;
        _DataControlRequestType requestType = _DATACONTROL_REQUEST_TYPE_UNDEFINED;
-       String* pProviderId = null;
-       String* pCallerReqId = null;
-       int callerReqId = -1;
+       String providerId;
+       String callerReqId;
        ArrayList* pResultArgList = null;
        String* pResult = null;
        String* pErrorMessage = null;
@@ -104,23 +103,16 @@ _DataControlProviderManagerImpl::SendDataControlResult(RequestId reqId, _DataCon
        _AppControlManager* pAppMgr = _AppControlManager::GetInstance();
        SysTryReturnResult(NID_APP, pAppMgr, E_SYSTEM, "Failed to get instance.");
 
-       _ResultInfo* pResultInfo = pAppMgr->__resultManager.FindItem(static_cast< int >(reqId));
+       _ResultInfo* pResultInfo = pAppMgr->__resultManager.FindItem(static_cast< int >(reqId)); // provider reqId
        SysTryReturnResult(NID_APP, pResultInfo, E_OBJ_NOT_FOUND,
                        "The data control request specified with the reqId (%ld) did not exist.", reqId);
 
-       const _AppArg& arg = pResultInfo->arg;
-
-       pList = arg.GetArgListN(0);
-       SysTryCatch(NID_APP, pList, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid result object");
+       const _AppArg& arg = pResultInfo->arg; // request info
 
        // key-based request
-       pAppId = dynamic_cast< String* >(pList->GetAt(0)); // request key[0]
-       SysTryCatch(NID_APP, pAppId, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid result object");
-
        reqType = arg.GetValue(OSP_K_DATACONTROL_REQUEST_TYPE);
        Integer::Parse(reqType, type);
        requestType = static_cast< _DataControlRequestType >(type);
-
        if (providerResult == true && apiType != requestType)
        {
                if ((apiType == _DATACONTROL_REQUEST_TYPE_SQL_UPDATE /*UpdateDelete*/ && requestType == _DATACONTROL_REQUEST_TYPE_SQL_DELETE) ||
@@ -136,17 +128,20 @@ _DataControlProviderManagerImpl::SendDataControlResult(RequestId reqId, _DataCon
                }
        }
 
-       pCallerReqId = dynamic_cast< String* >(pList->GetAt(2)); // request key[2]
-       SysTryCatch(NID_APP, pCallerReqId, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid result object");
-       Integer::Parse(*pCallerReqId, callerReqId);
+       appId = arg.GetCallerAppId();
+       callerReqId = arg.GetValue(OSP_K_REQUEST_ID);
+       providerId = arg.GetValue(OSP_K_DATACONTROL_PROVIDER);
 
-       pProviderId = dynamic_cast< String* >(pList->GetAt(3)); // request key[3]
-       SysTryCatch(NID_APP, pProviderId, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid result object");
-
-       pDataId = dynamic_cast< String* >(pList->GetAt(4)); // list[0]
+       // 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");
 
-       // Serializes the result
+       SysLog(NID_APP, "[DC_PROV_SEND] > appId: %ls, requestType: %d, callerReqId: %ls, providerId: %ls, dataId: %ls",
+                       appId.GetPointer(), requestType, callerReqId.GetPointer(), providerId.GetPointer(), pDataId->GetPointer());
+
+       // Serializes result
        pResultArgList = new (std::nothrow) ArrayList();
        SysTryCatch(NID_APP, pResultArgList, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
                        "[E_OUT_OF_MEMORY] The memory was insufficient.");
@@ -187,8 +182,8 @@ _DataControlProviderManagerImpl::SendDataControlResult(RequestId reqId, _DataCon
                                        "[E_SYSTEM] The method cannot proceed due to a severe system error.");
 
                        String tempFilePath(_DATACONTROL_RESULTSET_DIR);
-                       tempFilePath.Append(*pAppId);
-                       tempFilePath.Append(*pCallerReqId);
+                       tempFilePath.Append(appId);
+                       tempFilePath.Append(callerReqId);
                        pTempFilePath = new (std::nothrow) String(tempFilePath);
                }
                else
@@ -218,13 +213,14 @@ _DataControlProviderManagerImpl::SendDataControlResult(RequestId reqId, _DataCon
                if (pResultValueList)
                {
                        // list-based request
-                       pNo = dynamic_cast< String* >(pList->GetAt(6)); // request list[2]
+                       pNo = dynamic_cast< String* >(pList->GetAt(2)); // request list[2]
                        SysTryCatch(NID_APP, pNo, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid result object");
                        Integer::Parse(*pNo, pageNo);
 
-                       pCount = dynamic_cast< String* >(pList->GetAt(7)); // request list[3]
+                       pCount = dynamic_cast< String* >(pList->GetAt(3)); // request list[3]
                        SysTryCatch(NID_APP, pCount, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid result object");
                        Integer::Parse(*pCount, countPerPage);
+                       SysLog(NID_APP, "[DC_PROV_SEND] pageNo: %d, countPerPage: %d", pageNo, countPerPage);
 
                        String resultCount;
                        int num = pResultValueList->GetCount();
@@ -274,9 +270,9 @@ _DataControlProviderManagerImpl::SendDataControlResult(RequestId reqId, _DataCon
 
        r = resultArg.ConstructResult(arg, pResultArgList);
        SysTryCatch(NID_APP, !IsFailed(r), r = E_SYSTEM, r, "[%s] Propagating.", GetErrorMessage(r));
-       resultArg.UpdateRequestId(callerReqId);
+       resultArg.UpdateKeyValue(OSP_K_REQUEST_ID, callerReqId);
        resultArg.UpdateKeyValue(OSP_K_DATACONTROL_REQUEST_TYPE, reqType);
-       resultArg.UpdateKeyValue(OSP_K_DATACONTROL_PROVIDER, *pProviderId);
+       resultArg.UpdateKeyValue(OSP_K_DATACONTROL_PROVIDER, providerId);
        resultArg.UpdateKeyValue(OSP_K_DATACONTROL_DATA, *pDataId);
 
        //resultArg.Print();
index 5d48ef9..9ac9ab2 100644 (file)
@@ -158,6 +158,8 @@ _MapDataControlImpl::GetInstance(const MapDataControl& dc)
 result
 _MapDataControlImpl::StartMapDataControl(int type, const IList* pDataList, int* pReq)
 {
+       Integer* pReqId = null;
+       _DataControlRequestInfo* pReqInfo = null;
        result r = E_SUCCESS;
 
        int req = -1;
@@ -177,13 +179,34 @@ _MapDataControlImpl::StartMapDataControl(int type, const IList* pDataList, int*
        if (__pMapDataControlEvent)
        {
                // reqId is system-wide id because the bundle is system-wide.
-
+#if 0
+               _AppControlManager::_RequestGuard reqObj = _AppControlManager::_RequestGuard(*pAppManagerImpl, pArg, MapDataControlCallback, __pMapDataControlEvent, -1);
+               req = reqObj.GetRequestNumber();
+#else
                _DataControlManager* pDcMgr = _DataControlManager::GetInstance();
                _AppControlManager::_RequestGuard reqObj = _AppControlManager::_RequestGuard(*pAppManagerImpl, pArg, MapDataControlCallback, pDcMgr, -1);
                req = reqObj.GetRequestNumber();
-               pDcMgr->AddEvent(req, __pMapDataControlEvent);
+#endif
+               pReqId = new (std::nothrow) Integer(req);
+               SysTryCatch(NID_APP, pReqId != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
+                               "[E_OUT_OF_MEMORY] The memory is insufficient");
+
+               pReqInfo = new (std::nothrow) _DataControlRequestInfo(__pMapDataControlEvent);
+               SysTryCatch(NID_APP, pReqId != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
+                               "[E_OUT_OF_MEMORY] The memory is insufficient");
+
+               r = pDcMgr->AddRequestInfo(pReqId, pReqInfo);
+               SysTryCatch(NID_APP, !IsFailed(r), r = E_SYSTEM, E_SYSTEM, "[%s] Failed to add request info", GetErrorMessage(r));
+
                r = pAppManagerImpl->LaunchApp(__appId, pArg, req);
-               SysTryCatch(NID_APP, r == E_SUCCESS, reqObj.Invalidate(), r, "[%s] Propgated.", GetErrorMessage(r));
+               if (IsFailed(r))
+               {
+                       SysPropagate(NID_APP, r);
+                       reqObj.Invalidate();
+                       pDcMgr->RemoveRequestInfo(*pReqId);
+                       delete pArg;
+                       return r;
+               }
 
                if (pReq)
                {
@@ -193,10 +216,16 @@ _MapDataControlImpl::StartMapDataControl(int type, const IList* pDataList, int*
        else
        {
                r = pAppManagerImpl->LaunchApp(__appId, pArg);
+               SysTryCatch(NID_APP, !IsFailed(r), , r, "[%s] Propagating to caller...", GetErrorMessage(r));
                delete pArg;
        }
 
+       return E_SUCCESS;
+
 CATCH:
+       delete pArg;
+       delete pReqId;
+       delete pReqInfo;
        return r;
 }
 
@@ -237,7 +266,7 @@ _MapDataControlImpl::GetValue(const String& dataId, const String& key,
 
        reqId = static_cast< RequestId >(id);
 
-       SysLog(NID_APP, "dataId: %ls, key: %ls, reqId: %d, pageNo: %d, countPerPage: %d",
+       SysLog(NID_APP, "[DC_CALLER_SEND] dataId: %ls, key: %ls, reqId: %d, pageNo: %d, countPerPage: %d",
                        dataId.GetPointer(), key.GetPointer(), reqId, pageNo, countPerPage);
 
        // fall through
@@ -252,10 +281,7 @@ result
 _MapDataControlImpl::MapDataControlCallback(void* data, _AppArg* pArg, _AppArg* pResArg, service_result_e res, int prop)
 {
        ArrayList* pResultList = null;
-       ArrayList* pOrigList = null;
-       String* pRequestType = null;
        String* pResult = null;
-       String* pReqId = null;
        String* pProviderId = null;
        String* pDataId = null;
        String* pErrorMessage = null;
@@ -265,10 +291,10 @@ _MapDataControlImpl::MapDataControlCallback(void* data, _AppArg* pArg, _AppArg*
        ArrayList* pResultValueList = null;
        int resultCount = 0;
        int requestType = 0;
-       int callerReqId = -1;
+       int reqId = 0;
        int providerRes = 0;
        bool providerResult = true;
-       bundle* origBundle = null;
+       //bundle* origBundle = null;
        bundle* resBundle = null;
        _MapDataControlEventArg* pEventArg = null;
        result r = E_SUCCESS;
@@ -279,40 +305,46 @@ _MapDataControlImpl::MapDataControlCallback(void* data, _AppArg* pArg, _AppArg*
        resBundle = pResArg->GetBundle();
        if (resBundle)
        {
-               const char* pCallerReqId = appsvc_get_data(resBundle, OSP_K_REQUEST_ID);
-               callerReqId = atoi(pCallerReqId);
+               const char* 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);
+
                _DataControlManager* pDcMgr = static_cast< _DataControlManager* >(data);
-               _MapDataControlEvent* pMapDataControlEvent = dynamic_cast< _MapDataControlEvent* >(pDcMgr->GetEvent(callerReqId));
+               _DataControlRequestInfo* pReqInfo = pDcMgr->GetRequestInfo(key);
+               SysTryCatch(NID_APP, pReqInfo != null, r = E_SYSTEM, E_SYSTEM,
+                               "[E_SYSTEM] Failed to get request info");
+
+               _MapDataControlEvent* pMapDataControlEvent = dynamic_cast< _MapDataControlEvent* >(pReqInfo->GetEvent());
+               SysTryCatch(NID_APP, pMapDataControlEvent != null, r = E_SYSTEM, E_SYSTEM,
+                               "[E_SYSTEM] invalid request info");
+
+               pDcMgr->RemoveRequestInfo(key);
 
                if (pMapDataControlEvent != null && typeid(pMapDataControlEvent) == typeid(_MapDataControlEvent*))
                {
-                       const char* p = null;
 
                        // result list
                        pResultList = _AppArg::GetListN(resBundle, OSP_K_ARG);
                        SysTryCatch(NID_APP, pResultList, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid result");
 
-                       pResult = dynamic_cast <String*>(pResultList->GetAt(0));
+                       pResult = dynamic_cast <String*>(pResultList->GetAt(0)); // result list[0]
                        SysTryCatch(NID_APP, pResult, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid result");
                        Integer::Parse(*pResult, providerRes);
                        providerResult = static_cast< bool >(providerRes);
 
-                       pErrorMessage = dynamic_cast< String* >(pResultList->GetAt(1));
+                       pErrorMessage = dynamic_cast< String* >(pResultList->GetAt(1)); // result list[1]
                        SysTryCatch(NID_APP, pErrorMessage, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid result");
                        pErrorMsg = new (std::nothrow) String(*pErrorMessage);
                        SysTryCatch(NID_APP, pErrorMsg, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
                                        "[E_OUT_OF_MEMORY] The memory is insufficient.");
 
                        // request info
-                       origBundle = pArg->GetBundle();
+                       //origBundle = pArg->GetBundle();
 
                        p = appsvc_get_data(resBundle, OSP_K_DATACONTROL_REQUEST_TYPE);
                        SysTryCatch(NID_APP, p, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid bundle");
-                       pRequestType = new (std::nothrow) String(p);
-                       SysTryCatch(NID_APP, pRequestType, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
-                                       "[E_OUT_OF_MEMORY] The memory is insufficient.");
-                       Integer::Parse(*pRequestType, requestType);
-
+                       requestType = atoi(p);
 
                        p = appsvc_get_data(resBundle, OSP_K_DATACONTROL_PROVIDER);
                        SysTryCatch(NID_APP, p, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid bundle");
@@ -326,13 +358,8 @@ _MapDataControlImpl::MapDataControlCallback(void* data, _AppArg* pArg, _AppArg*
                        SysTryCatch(NID_APP, pDataId, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
                                        "[E_OUT_OF_MEMORY] The memory is insufficient.");
 
-#if 0
-                       SysLog(NID_APP, "result: %ld, requestType: %d, reqId: %d, providerId: %ls, dataId: %ls, errorMsg: %ls ",
+                       SysLog(NID_APP, "[DC_CALLER_RECV] provider result: %ld, requestType: %d, reqId: %d, providerId: %ls, dataId: %ls, errorMsg: %ls ",
                                        providerRes, requestType, reqId, pProviderId->GetPointer(), pDataId->GetPointer(), pErrorMsg->GetPointer());
-#else
-                       SysLog(NID_APP, "result: %ld, requestType: %d, reqId: %d, providerId: %ls, dataId: %ls, errorMsg: %ls ",
-                                       providerRes, requestType, callerReqId, pProviderId->GetPointer(), pDataId->GetPointer(), pErrorMsg->GetPointer());
-#endif
 
                        switch (static_cast< _DataControlRequestType >(requestType))
                        {
@@ -344,7 +371,7 @@ _MapDataControlImpl::MapDataControlCallback(void* data, _AppArg* pArg, _AppArg*
 
                                if (providerResult == true)
                                {
-                                       pResultCount = dynamic_cast< String* >(pResultList->GetAt(2));
+                                       pResultCount = dynamic_cast< String* >(pResultList->GetAt(2)); // result list[2]
                                        if (pResultCount == null)
                                        {
                                                SysLogException(NID_APP, E_SYSTEM, "[E_SYSTEM] invalid result");
@@ -372,7 +399,7 @@ _MapDataControlImpl::MapDataControlCallback(void* data, _AppArg* pArg, _AppArg*
                                        }
                                }
 
-                               pEventArg = new (std::nothrow) _MapDataControlEventArg(_DATACONTROL_REQUEST_TYPE_MAP_QUERY, static_cast <RequestId>(callerReqId),
+                               pEventArg = new (std::nothrow) _MapDataControlEventArg(_DATACONTROL_REQUEST_TYPE_MAP_QUERY, static_cast <RequestId>(reqId),
                                                *pProviderId, *pDataId, pResultValueList, providerResult, pErrorMsg);
                                SysTryCatch(NID_APP, pEventArg != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
                                pMapDataControlEvent->Fire(*pEventArg);
@@ -381,7 +408,7 @@ _MapDataControlImpl::MapDataControlCallback(void* data, _AppArg* pArg, _AppArg*
                        }
                        case _DATACONTROL_REQUEST_TYPE_MAP_INSERT:
                        {
-                               pEventArg = new (std::nothrow) _MapDataControlEventArg(_DATACONTROL_REQUEST_TYPE_MAP_INSERT, static_cast <RequestId>(callerReqId),
+                               pEventArg = new (std::nothrow) _MapDataControlEventArg(_DATACONTROL_REQUEST_TYPE_MAP_INSERT, static_cast <RequestId>(reqId),
                                                *pProviderId, *pDataId, null, providerResult, pErrorMsg);
                                SysTryCatch(NID_APP, pEventArg != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
                                pMapDataControlEvent->Fire(*pEventArg);
@@ -389,7 +416,7 @@ _MapDataControlImpl::MapDataControlCallback(void* data, _AppArg* pArg, _AppArg*
                        }
                        case _DATACONTROL_REQUEST_TYPE_MAP_UPDATE:
                        {
-                               pEventArg = new (std::nothrow) _MapDataControlEventArg(_DATACONTROL_REQUEST_TYPE_MAP_UPDATE, static_cast <RequestId>(callerReqId),
+                               pEventArg = new (std::nothrow) _MapDataControlEventArg(_DATACONTROL_REQUEST_TYPE_MAP_UPDATE, static_cast <RequestId>(reqId),
                                                *pProviderId, *pDataId, null, providerResult, pErrorMsg);
                                SysTryCatch(NID_APP, pEventArg != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
                                pMapDataControlEvent->Fire(*pEventArg);
@@ -397,7 +424,7 @@ _MapDataControlImpl::MapDataControlCallback(void* data, _AppArg* pArg, _AppArg*
                        }
                        case _DATACONTROL_REQUEST_TYPE_MAP_DELETE:
                        {
-                               pEventArg = new (std::nothrow) _MapDataControlEventArg(_DATACONTROL_REQUEST_TYPE_MAP_DELETE, static_cast <RequestId>(callerReqId),
+                               pEventArg = new (std::nothrow) _MapDataControlEventArg(_DATACONTROL_REQUEST_TYPE_MAP_DELETE, static_cast <RequestId>(reqId),
                                                *pProviderId, *pDataId, null, providerResult, pErrorMsg);
                                SysTryCatch(NID_APP, pEventArg != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
                                pMapDataControlEvent->Fire(*pEventArg);
@@ -409,22 +436,13 @@ _MapDataControlImpl::MapDataControlCallback(void* data, _AppArg* pArg, _AppArg*
 
                        pResultList->RemoveAll(true);
                        delete pResultList;
-
-
-                       delete pRequestType;
-                       delete pReqId;
                        delete pProviderId;
                }
        }
 
        // Remove the request count
-#if 0
        SysLog(NID_APP, "Remove a launch request: reqId: %d", reqId);
        _AppControlManager::GetInstance()->RemoveLaunchRequest(reqId);
-#else
-       SysLog(NID_APP, "Remove a launch request: reqId: %d", callerReqId);
-       _AppControlManager::GetInstance()->RemoveLaunchRequest(callerReqId);
-#endif
 
        return E_SUCCESS;
 
@@ -434,10 +452,6 @@ CATCH:
                pResultList->RemoveAll(true);
                delete pResultList;
        }
-
-
-       delete pRequestType;
-       delete pReqId;
        delete pProviderId;
 
        return r;
@@ -471,7 +485,7 @@ _MapDataControlImpl::AddValue(const String& dataId, const String& key,
 
        reqId = static_cast< RequestId >(id);
 
-       SysLog(NID_APP, "dataId: %ls, key: %ls, value: %ls, reqId: %d",
+       SysLog(NID_APP, "[DC_CALLER_SEND] dataId: %ls, key: %ls, value: %ls, reqId: %d",
                        dataId.GetPointer(), key.GetPointer(), value.GetPointer(), reqId);
 
        // fall through
@@ -512,7 +526,7 @@ _MapDataControlImpl::SetValue(const String& dataId, const String& key,
 
        reqId = static_cast< RequestId >(id);
 
-       SysLog(NID_APP, "dataId: %ls, key: %ls, oldValue: %ls, newValue: %ls, reqId: %d",
+       SysLog(NID_APP, "[DC_CALLER_SEND] dataId: %ls, key: %ls, oldValue: %ls, newValue: %ls, reqId: %d",
                        dataId.GetPointer(), key.GetPointer(), oldValue.GetPointer(), newValue.GetPointer(), reqId);
 
        // fall through
@@ -551,7 +565,7 @@ _MapDataControlImpl::RemoveValue(const String& dataId, const String& key,
 
        reqId = static_cast< RequestId >(id);
 
-       SysLog(NID_APP, "dataId: %ls, key: %ls, value: %ls, reqId: %d",
+       SysLog(NID_APP, "[DC_CALLER_SEND] dataId: %ls, key: %ls, value: %ls, reqId: %d",
                        dataId.GetPointer(), key.GetPointer(), value.GetPointer(), reqId);
 
        // fall through
index 79d404b..d7bb7d9 100644 (file)
@@ -163,6 +163,8 @@ _SqlDataControlImpl::GetInstance(const SqlDataControl& dc)
 result
 _SqlDataControlImpl::StartSqlDataControl(int type, const IList* pDataList, int* pReq)
 {
+       Integer* pReqId = null;
+       _DataControlRequestInfo* pReqInfo = null;
        result r = E_SUCCESS;
 
        int req = -1;
@@ -182,13 +184,34 @@ _SqlDataControlImpl::StartSqlDataControl(int type, const IList* pDataList, int*
        if (__pSqlDataControlEvent)
        {
                // reqId is system-wide id because the bundle is system-wide.
-
+#if 0
+               _AppControlManager::_RequestGuard reqObj = _AppControlManager::_RequestGuard(*pAppManagerImpl, pArg, SqlDataControlCallback, __pSqlDataControlEvent, -1);
+               req = reqObj.GetRequestNumber();
+#else
                _DataControlManager* pDcMgr = _DataControlManager::GetInstance();
                _AppControlManager::_RequestGuard reqObj = _AppControlManager::_RequestGuard(*pAppManagerImpl, pArg, SqlDataControlCallback, pDcMgr, -1);
                req = reqObj.GetRequestNumber();
-               pDcMgr->AddEvent(req, __pSqlDataControlEvent);
+#endif
+               pReqId = new (std::nothrow) Integer(req);
+               SysTryCatch(NID_APP, pReqId != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
+                               "[E_OUT_OF_MEMORY] The memory is insufficient");
+
+               pReqInfo = new (std::nothrow) _DataControlRequestInfo(__pSqlDataControlEvent);
+               SysTryCatch(NID_APP, pReqId != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
+                               "[E_OUT_OF_MEMORY] The memory is insufficient");
+
+               r = pDcMgr->AddRequestInfo(pReqId, pReqInfo);
+               SysTryCatch(NID_APP, !IsFailed(r), r = E_SYSTEM, E_SYSTEM, "[%s] Failed to add request info", GetErrorMessage(r));
+
                r = pAppManagerImpl->LaunchApp(__appId, pArg, req);
-               SysTryCatch(NID_APP, r == E_SUCCESS, reqObj.Invalidate(), r, "[%s] Propagating.", GetErrorMessage(r));
+               if (IsFailed(r))
+               {
+                       SysPropagate(NID_APP, r);
+                       reqObj.Invalidate();
+                       pDcMgr->RemoveRequestInfo(*pReqId);
+                       delete pArg;
+                       return r;
+               }
 
                if (pReq)
                {
@@ -198,10 +221,16 @@ _SqlDataControlImpl::StartSqlDataControl(int type, const IList* pDataList, int*
        else
        {
                r = pAppManagerImpl->LaunchApp(__appId, pArg);
+               SysTryCatch(NID_APP, !IsFailed(r), , r, "[%s] Propagating to caller...", GetErrorMessage(r));
                delete pArg;
        }
 
+       return E_SUCCESS;
+
 CATCH:
+       delete pArg;
+       delete pReqId;
+       delete pReqInfo;
        return r;
 }
 
@@ -217,7 +246,7 @@ _SqlDataControlImpl::Select(const String& dataId, const IList* pColumnList, cons
        const String* pColumn = null;
        int id = 0;
        result r = E_SUCCESS;
-       SysLog(NID_APP, "[DC_CALLER] SqlDataControl SELECT");
+       SysLog(NID_APP, "[DC_CALLER_SEND] SqlDataControl SELECT");
 
        ArrayList* pArgList = new ArrayList();
        pArgList->Construct();
@@ -232,7 +261,7 @@ _SqlDataControlImpl::Select(const String& dataId, const IList* pColumnList, cons
                                "[E_INVALID_ARG] The specified pColumnList parameter is empty.");
 
                pArgList->Add(*(new String(Integer::ToString(columnCount)))); // list(1): selected column count
-               SysLog(NID_APP, "[DC_CALLER] selected column count: %d", columnCount);
+               SysLog(NID_APP, "[DC_CALLER_SEND] selected column count: %d", columnCount);
 
                int i = 0;
                while (i < columnCount) // list(2): column list
@@ -243,7 +272,7 @@ _SqlDataControlImpl::Select(const String& dataId, const IList* pColumnList, cons
 
                        pArgList->Add(*(new String(*pColumn)));
                        argSize += pColumn->GetLength() * sizeof(wchar_t);
-                       SysLog(NID_APP, "[DC_CALLER] column[%d]: %ls", i, pColumn->GetPointer());
+                       SysLog(NID_APP, "[DC_CALLER_SEND] column[%d]: %ls", i, pColumn->GetPointer());
                        i++;
                }
        }
@@ -256,7 +285,7 @@ _SqlDataControlImpl::Select(const String& dataId, const IList* pColumnList, cons
        {
                pArgList->Add(*(new String(*pWhere)));
                argSize += pWhere->GetLength() * sizeof(wchar_t);
-               SysLog(NID_APP, "[DC_CALLER] pWhere: %ls", pWhere->GetPointer());
+               SysLog(NID_APP, "[DC_CALLER_SEND] pWhere: %ls", pWhere->GetPointer());
        }
        else
        {
@@ -267,7 +296,7 @@ _SqlDataControlImpl::Select(const String& dataId, const IList* pColumnList, cons
        {
                pArgList->Add(*(new String(*pOrder)));
                argSize += pOrder->GetLength() * sizeof(wchar_t);
-               SysLog(NID_APP, "[DC_CALLER] pOrder: %ls", pOrder->GetPointer());
+               SysLog(NID_APP, "[DC_CALLER_SEND] pOrder: %ls", pOrder->GetPointer());
        }
        else
        {
@@ -285,7 +314,7 @@ _SqlDataControlImpl::Select(const String& dataId, const IList* pColumnList, cons
 
        reqId = static_cast< RequestId >(id);
 
-       SysLog(NID_APP, "[DC_CALLER] dataId: %ls, pColumnList: 0x%x, pWhere: 0x%x, pOrder: 0x%x, reqId: %d, pageNo: %d, countPerPage: %d",
+       SysLog(NID_APP, "[DC_CALLER_SEND] dataId: %ls, pColumnList: 0x%x, pWhere: 0x%x, pOrder: 0x%x, reqId: %d, pageNo: %d, countPerPage: %d",
                        dataId.GetPointer(), pColumnList, pWhere, pOrder, reqId, pageNo, countPerPage);
 
        // fall through
@@ -300,10 +329,7 @@ result
 _SqlDataControlImpl::SqlDataControlCallback(void* data, _AppArg* pArg, _AppArg* pResArg, service_result_e res, int prop)
 {
        ArrayList* pResultList = null;
-       ArrayList* pOrigList = null;
        String* pResult = null;
-       String* pRequestType = null;
-       String* pReqId = null;
        String* pProviderId = null;
        String* pDataId = null;
        String* pErrorMessage = null;
@@ -312,10 +338,10 @@ _SqlDataControlImpl::SqlDataControlCallback(void* data, _AppArg* pArg, _AppArg*
        String* pInsertRowId = null;
        _DataControlResultSetEnumerator* pResultSetEnum = null;
        int requestType = 0;
-       int callerReqId = -1;
+       int reqId = 0;
        int providerRes = 0;
        bool providerResult = true;
-       bundle* origBundle = null;
+       //bundle* origBundle = null;
        bundle* resBundle = null;
        _SqlDataControlEventArg* pEventArg = null;
        result r = E_SUCCESS;
@@ -326,40 +352,45 @@ _SqlDataControlImpl::SqlDataControlCallback(void* data, _AppArg* pArg, _AppArg*
        resBundle = pResArg->GetBundle();
        if (resBundle)
        {
-               const char* pCallerReqId = appsvc_get_data(resBundle, OSP_K_REQUEST_ID);
-               callerReqId = atoi(pCallerReqId);
+               const char* 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);
+
                _DataControlManager* pDcMgr = static_cast< _DataControlManager* >(data);
-               _SqlDataControlEvent* pSqlDataControlEvent = dynamic_cast< _SqlDataControlEvent* >(pDcMgr->GetEvent(callerReqId));
+               _DataControlRequestInfo* pReqInfo = pDcMgr->GetRequestInfo(key);
+               SysTryCatch(NID_APP, pReqInfo != null, r = E_SYSTEM, E_SYSTEM,
+                               "[E_SYSTEM] Failed to get request info");
+
+               _SqlDataControlEvent* pSqlDataControlEvent = dynamic_cast< _SqlDataControlEvent* >(pReqInfo->GetEvent());
+               SysTryCatch(NID_APP, pSqlDataControlEvent != null, r = E_SYSTEM, E_SYSTEM,
+                               "[E_SYSTEM] invalid request info");
+
+               pDcMgr->RemoveRequestInfo(key);
 
                if (pSqlDataControlEvent != null && typeid(pSqlDataControlEvent) == typeid(_SqlDataControlEvent*))
                {
-                       const char* p = null;
-
                        // result list
                        pResultList = _AppArg::GetListN(resBundle, OSP_K_ARG);
                        SysTryCatch(NID_APP, pResultList, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid result");
 
-                       pResult = dynamic_cast <String*>(pResultList->GetAt(0));
+                       pResult = dynamic_cast <String*>(pResultList->GetAt(0)); // result list[0]
                        SysTryCatch(NID_APP, pResult, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid result");
                        Integer::Parse(*pResult, providerRes);
                        providerResult = static_cast< bool >(providerRes);
 
-                       pErrorMessage = dynamic_cast< String* >(pResultList->GetAt(1));
+                       pErrorMessage = dynamic_cast< String* >(pResultList->GetAt(1)); // result list[1]
                        SysTryCatch(NID_APP, pErrorMessage, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid result");
                        pErrorMsg = new (std::nothrow) String(*pErrorMessage);
                        SysTryCatch(NID_APP, pErrorMsg, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
                                        "[E_OUT_OF_MEMORY] The memory is insufficient.");
 
-                       origBundle = pArg->GetBundle();
-
                        // request info
+                       //origBundle = pArg->GetBundle();
+
                        p = appsvc_get_data(resBundle, OSP_K_DATACONTROL_REQUEST_TYPE);
                        SysTryCatch(NID_APP, p, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid bundle");
-                       pRequestType = new (std::nothrow) String(p);
-                       SysTryCatch(NID_APP, pRequestType, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
-                                       "[E_OUT_OF_MEMORY] The memory is insufficient.");
-                       Integer::Parse(*pRequestType, requestType);
-
+                       requestType = atoi(p);
 
                        p = appsvc_get_data(resBundle, OSP_K_DATACONTROL_PROVIDER);
                        SysTryCatch(NID_APP, p, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] invalid bundle");
@@ -373,13 +404,8 @@ _SqlDataControlImpl::SqlDataControlCallback(void* data, _AppArg* pArg, _AppArg*
                        SysTryCatch(NID_APP, pDataId, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
                                        "[E_OUT_OF_MEMORY] The memory is insufficient.");
 
-#if 0
-                       SysLog(NID_APP, "providerResult: %ld, requestType: %d, reqId: %d, providerId: %ls, dataId: %ls, errorMsg: %ls ",
+                       SysLog(NID_APP, "[DC_CALLER_RECV] provider result: %ld, requestType: %d, reqId: %d, providerId: %ls, dataId: %ls, errorMsg: %ls ",
                                        providerRes, requestType, reqId, pProviderId->GetPointer(), pDataId->GetPointer(), pErrorMsg->GetPointer());
-#else
-                       SysLog(NID_APP, "providerResult: %ld, requestType: %d, reqId: %d, providerId: %ls, dataId: %ls, errorMsg: %ls ",
-                                       providerRes, requestType, callerReqId, pProviderId->GetPointer(), pDataId->GetPointer(), pErrorMsg->GetPointer());
-#endif
 
                        switch (static_cast <_DataControlRequestType>(requestType))
                        {
@@ -399,14 +425,14 @@ _SqlDataControlImpl::SqlDataControlCallback(void* data, _AppArg* pArg, _AppArg*
                                                goto CATCH;
                                        }
 
-                                       SysLog(NID_APP, "tempPath: %ls", pTmpPath->GetPointer());
+                                       SysLog(NID_APP, "[DC_CALLER_RECV] tempPath: %ls", pTmpPath->GetPointer());
                                        if (pTmpPath->Equals(L"NoResultSet", true) == false) // Result set exists
                                        {
                                                pResultSetEnum->SetPath(*pTmpPath);
                                        }
                                }
 
-                               pEventArg = new (std::nothrow) _SqlDataControlEventArg(_DATACONTROL_REQUEST_TYPE_SQL_QUERY, static_cast <RequestId>(callerReqId),
+                               pEventArg = new (std::nothrow) _SqlDataControlEventArg(_DATACONTROL_REQUEST_TYPE_SQL_QUERY, static_cast <RequestId>(reqId),
                                                *pProviderId, *pDataId, pResultSetEnum, -1, providerResult, pErrorMsg);
                                SysTryCatch(NID_APP, pEventArg != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
                                pSqlDataControlEvent->Fire(*pEventArg);
@@ -430,7 +456,7 @@ _SqlDataControlImpl::SqlDataControlCallback(void* data, _AppArg* pArg, _AppArg*
                                        LongLong::Parse(*pInsertRowId, insertRowId);
                                }
 
-                               pEventArg = new (std::nothrow) _SqlDataControlEventArg(_DATACONTROL_REQUEST_TYPE_SQL_INSERT, static_cast <RequestId>(callerReqId),
+                               pEventArg = new (std::nothrow) _SqlDataControlEventArg(_DATACONTROL_REQUEST_TYPE_SQL_INSERT, static_cast <RequestId>(reqId),
                                                *pProviderId, *pDataId, null, insertRowId, providerResult, pErrorMsg);
                                SysTryCatch(NID_APP, pEventArg != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
                                pSqlDataControlEvent->Fire(*pEventArg);
@@ -438,7 +464,7 @@ _SqlDataControlImpl::SqlDataControlCallback(void* data, _AppArg* pArg, _AppArg*
                        }
                        case _DATACONTROL_REQUEST_TYPE_SQL_UPDATE:
                        {
-                               pEventArg = new (std::nothrow) _SqlDataControlEventArg(_DATACONTROL_REQUEST_TYPE_SQL_UPDATE, static_cast <RequestId>(callerReqId),
+                               pEventArg = new (std::nothrow) _SqlDataControlEventArg(_DATACONTROL_REQUEST_TYPE_SQL_UPDATE, static_cast <RequestId>(reqId),
                                                *pProviderId, *pDataId, null, -1, providerResult, pErrorMsg);
                                SysTryCatch(NID_APP, pEventArg != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
                                pSqlDataControlEvent->Fire(*pEventArg);
@@ -446,7 +472,7 @@ _SqlDataControlImpl::SqlDataControlCallback(void* data, _AppArg* pArg, _AppArg*
                        }
                        case _DATACONTROL_REQUEST_TYPE_SQL_DELETE:
                        {
-                               pEventArg = new (std::nothrow) _SqlDataControlEventArg(_DATACONTROL_REQUEST_TYPE_SQL_DELETE, static_cast <RequestId>(callerReqId),
+                               pEventArg = new (std::nothrow) _SqlDataControlEventArg(_DATACONTROL_REQUEST_TYPE_SQL_DELETE, static_cast <RequestId>(reqId),
                                                *pProviderId, *pDataId, null, -1, providerResult, pErrorMsg);
                                SysTryCatch(NID_APP, pEventArg != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
                                pSqlDataControlEvent->Fire(*pEventArg);
@@ -458,22 +484,13 @@ _SqlDataControlImpl::SqlDataControlCallback(void* data, _AppArg* pArg, _AppArg*
 
                        pResultList->RemoveAll(true);
                        delete pResultList;
-
-
-                       delete pRequestType;
-                       delete pReqId;
                        delete pProviderId;
                }
        }
 
        // Remove the request count
-#if 0
        SysLog(NID_APP, "Remove a launch request: reqId: %d", reqId);
        _AppControlManager::GetInstance()->RemoveLaunchRequest(reqId);
-#else
-       SysLog(NID_APP, "Remove a launch request: reqId: %d", callerReqId);
-       _AppControlManager::GetInstance()->RemoveLaunchRequest(callerReqId);
-#endif
 
        return E_SUCCESS;
 
@@ -483,10 +500,6 @@ CATCH:
                pResultList->RemoveAll(true);
                delete pResultList;
        }
-
-
-       delete pRequestType;
-       delete pReqId;
        delete pProviderId;
 
        return r;
@@ -502,7 +515,7 @@ _SqlDataControlImpl::Insert(const String& dataId, const IMap& insertMap, Request
        int id = 0;
        int i = 0;
        result r = E_SUCCESS;
-       SysLog(NID_APP, "[DC_CALLER] SqlDataControl INSERT");
+       SysLog(NID_APP, "[DC_CALLER_SEND] SqlDataControl INSERT");
 
        columnCount = insertMap.GetCount();
        SysTryReturnResult(NID_APP, columnCount > 0, E_INVALID_ARG, "The specified insertMap parameter is empty.");
@@ -514,7 +527,7 @@ _SqlDataControlImpl::Insert(const String& dataId, const IMap& insertMap, Request
        long long argSize = dataId.GetLength() * sizeof(wchar_t);
 
        pArgList->Add(*(new String(Integer::ToString(columnCount)))); // list(1): inserted column count
-       SysLog(NID_APP, "[DC_CALLER] inserted column count: %d", columnCount);
+       SysLog(NID_APP, "[DC_CALLER_SEND] inserted column count: %d", columnCount);
 
        IMapEnumerator* pMapEnum = const_cast< IMap* >(&insertMap)->GetMapEnumeratorN();
        while (pMapEnum->MoveNext() == E_SUCCESS) // list(2): column-value pairs
@@ -524,14 +537,14 @@ _SqlDataControlImpl::Insert(const String& dataId, const IMap& insertMap, Request
                                "[E_INVALID_ARG] The object is not String class.");
 
                pArgList->Add(*(new String(*pColumn)));
-               SysLog(NID_APP, "[DC_CALLER] pColumn[%d]: %ls", i, pColumn->GetPointer());
+               SysLog(NID_APP, "[DC_CALLER_SEND] pColumn[%d]: %ls", i, pColumn->GetPointer());
 
                String* pValue = dynamic_cast< String* >(pMapEnum->GetValue());
                SysTryCatch(NID_APP, pValue != null, r = E_INVALID_ARG, E_INVALID_ARG,
                                "[E_INVALID_ARG] The object is not String class.");
 
                pArgList->Add(*(new String(*pValue)));
-               SysLog(NID_APP, "[DC_CALLER] pValue[%d]: %ls", i, pValue->GetPointer());
+               SysLog(NID_APP, "[DC_CALLER_SEND] pValue[%d]: %ls", i, pValue->GetPointer());
 
                argSize += pColumn->GetLength() * sizeof(wchar_t);
                argSize += pValue->GetLength() * sizeof(wchar_t);
@@ -545,13 +558,12 @@ _SqlDataControlImpl::Insert(const String& dataId, const IMap& insertMap, Request
 
        reqId = static_cast< RequestId >(id);
 
-       SysLog(NID_APP, "[DC_CALLER] dataId: %ls, insertMap: 0x%x, reqId: %d", dataId.GetPointer(), &insertMap, reqId);
+       SysLog(NID_APP, "[DC_CALLER_SEND] dataId: %ls, insertMap: 0x%x, reqId: %d", dataId.GetPointer(), &insertMap, reqId);
 
        // fall through
 CATCH:
        pArgList->RemoveAll(true);
        delete pArgList;
-
        delete pMapEnum;
 
        return r;
@@ -567,7 +579,7 @@ _SqlDataControlImpl::Update(const String& dataId, const IMap& updateMap, const S
        int id = 0;
        int i = 0;
        result r = E_SUCCESS;
-       SysLog(NID_APP, "[DC_CALLER] SqlDataControl UPDATE");
+       SysLog(NID_APP, "[DC_CALLER_SEND] SqlDataControl UPDATE");
 
        columnCount = updateMap.GetCount();
        SysTryReturnResult(NID_APP, columnCount > 0, E_INVALID_ARG, "The specified insertMap parameter is empty.");
@@ -579,7 +591,7 @@ _SqlDataControlImpl::Update(const String& dataId, const IMap& updateMap, const S
        long long argSize = dataId.GetLength() * sizeof(wchar_t);
 
        pArgList->Add(*(new String(Integer::ToString(columnCount)))); // list(1): updated column count
-       SysLog(NID_APP, "[DC_CALLER] updated column count: %d", columnCount);
+       SysLog(NID_APP, "[DC_CALLER_SEND] updated column count: %d", columnCount);
 
        IMapEnumerator* pMapEnum = const_cast< IMap* >(&updateMap)->GetMapEnumeratorN();
        while (pMapEnum->MoveNext() == E_SUCCESS) // list(2): column-value pairs
@@ -589,14 +601,14 @@ _SqlDataControlImpl::Update(const String& dataId, const IMap& updateMap, const S
                                "[E_INVALID_ARG] The object is not String class.");
 
                pArgList->Add(*(new String(*pColumn)));
-               SysLog(NID_APP, "[DC_CALLER] pColumn[%d]: %ls", i, pColumn->GetPointer());
+               SysLog(NID_APP, "[DC_CALLER_SEND] pColumn[%d]: %ls", i, pColumn->GetPointer());
 
                String* pValue = dynamic_cast< String* >(pMapEnum->GetValue());
                SysTryCatch(NID_APP, pValue != null, r = E_INVALID_ARG, E_INVALID_ARG,
                                "[E_INVALID_ARG] The object is not String class.");
 
                pArgList->Add(*(new String(*pValue)));
-               SysLog(NID_APP, "[DC_CALLER] pValue[%d]: %ls", i, pValue->GetPointer());
+               SysLog(NID_APP, "[DC_CALLER_SEND] pValue[%d]: %ls", i, pValue->GetPointer());
 
                argSize += pColumn->GetLength() * sizeof(wchar_t);
                argSize += pValue->GetLength() * sizeof(wchar_t);
@@ -607,7 +619,7 @@ _SqlDataControlImpl::Update(const String& dataId, const IMap& updateMap, const S
        {
                pArgList->Add(*(new String(*pWhere)));
                argSize += pWhere->GetLength() * sizeof(wchar_t);
-               SysLog(NID_APP, "[DC_CALLER] pWhere: %ls", pWhere->GetPointer());
+               SysLog(NID_APP, "[DC_CALLER_SEND] pWhere: %ls", pWhere->GetPointer());
        }
        else
        {
@@ -621,14 +633,13 @@ _SqlDataControlImpl::Update(const String& dataId, const IMap& updateMap, const S
 
        reqId = static_cast< RequestId >(id);
 
-       SysLog(NID_APP, "[DC_CALLER] dataId: %ls, updateMap: 0x%x, pWhere: 0x%x, reqId: %d",
+       SysLog(NID_APP, "[DC_CALLER_SEND] dataId: %ls, updateMap: 0x%x, pWhere: 0x%x, reqId: %d",
                                dataId.GetPointer(), &updateMap, pWhere, reqId);
 
        // fall through
 CATCH:
        pArgList->RemoveAll(true);
        delete pArgList;
-
        delete pMapEnum;
 
        return r;
@@ -642,7 +653,7 @@ _SqlDataControlImpl::Delete(const String& dataId, const String* pWhere, RequestI
 
        int id = 0;
        result r = E_SUCCESS;
-       SysLog(NID_APP, "[DC_CALLER] SqlDataControl DELETE");
+       SysLog(NID_APP, "[DC_CALLER_SEND] SqlDataControl DELETE");
 
        ArrayList* pArgList = new ArrayList();
        pArgList->Construct();
@@ -654,7 +665,7 @@ _SqlDataControlImpl::Delete(const String& dataId, const String* pWhere, RequestI
        {
                pArgList->Add(*(new String(*pWhere)));
                argSize += pWhere->GetLength() * sizeof(wchar_t);
-               SysLog(NID_APP, "[DC_CALLER] pWhere: %ls", pWhere->GetPointer());
+               SysLog(NID_APP, "[DC_CALLER_SEND] pWhere: %ls", pWhere->GetPointer());
        }
        else
        {
@@ -668,7 +679,7 @@ _SqlDataControlImpl::Delete(const String& dataId, const String* pWhere, RequestI
 
        reqId = static_cast< RequestId >(id);
 
-       SysLog(NID_APP, "[DC_CALLER] dataId: %ls, pWhere: 0x%x, reqId: %d", dataId.GetPointer(), pWhere, reqId);
+       SysLog(NID_APP, "[DC_CALLER_SEND] dataId: %ls, pWhere: 0x%x, reqId: %d", dataId.GetPointer(), pWhere, reqId);
 
        // fall through
 CATCH: