_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
{
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;
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;
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)
}
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;
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");
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)
}
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)
}
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.");
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.");
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");
}
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");
}
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);
*/
#include <new>
+#include <cstdlib>
+#include <pthread.h>
+#include <typeinfo>
#include <FBaseInteger.h>
+#include <FBaseSysLog.h>
+
#include "FApp_DataControlManager.h"
using namespace Tizen::Base;
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
#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
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;
_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) ||
}
}
- 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.");
"[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
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();
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();
result
_MapDataControlImpl::StartMapDataControl(int type, const IList* pDataList, int* pReq)
{
+ Integer* pReqId = null;
+ _DataControlRequestInfo* pReqInfo = null;
result r = E_SUCCESS;
int req = -1;
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)
{
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;
}
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
_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;
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;
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");
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))
{
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");
}
}
- 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);
}
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);
}
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);
}
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);
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;
pResultList->RemoveAll(true);
delete pResultList;
}
-
-
- delete pRequestType;
- delete pReqId;
delete pProviderId;
return r;
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
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
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
result
_SqlDataControlImpl::StartSqlDataControl(int type, const IList* pDataList, int* pReq)
{
+ Integer* pReqId = null;
+ _DataControlRequestInfo* pReqInfo = null;
result r = E_SUCCESS;
int req = -1;
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)
{
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;
}
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();
"[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
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++;
}
}
{
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
{
{
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
{
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
_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;
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;
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");
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))
{
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);
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);
}
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);
}
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);
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;
pResultList->RemoveAll(true);
delete pResultList;
}
-
-
- delete pRequestType;
- delete pReqId;
delete pProviderId;
return r;
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.");
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
"[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);
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;
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.");
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
"[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);
{
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
{
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;
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();
{
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
{
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: