Skip to content

Commit 771a0a6

Browse files
committed
added:more information print for callback of memory-cache
1 parent 33438dc commit 771a0a6

9 files changed

Lines changed: 92 additions & 21 deletions

File tree

XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ bool CDBModule_MQData::DBModule_MQData_Insert(XENGINE_DBMESSAGEQUEUE* pSt_DBInfo
127127

128128
if (m_bMemoryInsert)
129129
{
130-
MemoryCache_DBData_QueueInsert(tszSQLStatement);
130+
MemoryCache_DBData_QueueInsert(tszSQLStatement, pSt_DBInfo);
131131
}
132132
else
133133
{

XEngine_Source/MQCore_MemoryCache/MQCore_MemoryCache.vcxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,11 @@
8181
</PropertyGroup>
8282
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
8383
<IncludePath>$(XEngine_Include);$(IncludePath)</IncludePath>
84+
<LibraryPath>$(XEngine_Lib64);$(LibraryPath)</LibraryPath>
8485
</PropertyGroup>
8586
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
8687
<IncludePath>$(XEngine_Include);$(IncludePath)</IncludePath>
88+
<LibraryPath>$(XEngine_Lib64);$(LibraryPath)</LibraryPath>
8789
</PropertyGroup>
8890
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
8991
<ClCompile>

XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,16 @@ CMemoryCache_DBData::~CMemoryCache_DBData()
3939
意思:是否成功
4040
备注:
4141
*********************************************************************/
42-
bool CMemoryCache_DBData::MemoryCache_DBData_Init(int nTimeLast /* = 3600 */, int nTimeStart /* = 0 */)
42+
bool CMemoryCache_DBData::MemoryCache_DBData_Init(int nTimeLast, int nTimeStart, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam /* = NULL */)
4343
{
4444
MemoryCache_IsErrorOccur = false;
4545

4646
bIsRun = true;
4747

48-
4948
m_nTimeLast = nTimeLast;
5049
m_nTimeStart = nTimeStart;
50+
m_lParam = lParam;
51+
lpCall_MemoryCache = fpCall_MemoryCache;
5152

5253
pSTDThread_Query = std::make_unique<std::thread>(DBModule_MQUser_TimeThread, this);
5354
if (NULL == pSTDThread_Query)
@@ -252,12 +253,17 @@ bool CMemoryCache_DBData::MemoryCache_DBData_DataDelete(XENGINE_DBMESSAGEQUEUE*
252253
类型:常量字符指针
253254
可空:N
254255
意思:输入要插入的语句
256+
参数.二:pSt_DBMessageInfo
257+
In/Out:In
258+
类型:常量字符指针
259+
可空:N
260+
意思:输入要插入的数据
255261
返回值
256262
类型:逻辑型
257263
意思:是否成功
258264
备注:
259265
*********************************************************************/
260-
bool CMemoryCache_DBData::MemoryCache_DBData_QueueInsert(LPCXSTR lpszSQLStr)
266+
bool CMemoryCache_DBData::MemoryCache_DBData_QueueInsert(LPCXSTR lpszSQLStr, XENGINE_DBMESSAGEQUEUE* pSt_DBMessageInfo)
261267
{
262268
MemoryCache_IsErrorOccur = false;
263269

@@ -267,9 +273,13 @@ bool CMemoryCache_DBData::MemoryCache_DBData_QueueInsert(LPCXSTR lpszSQLStr)
267273
MemoryCache_dwErrorCode = ERROR_XENGINE_MQCORE_MEMORYCACHE_DBDATA_PARAMENT;
268274
return false;
269275
}
276+
MEMORYCACHE_DBINSERT st_DBInsert = {};
277+
278+
st_DBInsert.m_StrSQL = lpszSQLStr;
279+
st_DBInsert.st_DBMessageInfo = *pSt_DBMessageInfo;
270280

271281
st_LockerList.lock();
272-
stl_ListInsert.push_back(lpszSQLStr);
282+
stl_ListInsert.push_back(st_DBInsert);
273283
st_LockerList.unlock();
274284
return true;
275285
}
@@ -301,7 +311,14 @@ XHTHREAD CALLBACK CMemoryCache_DBData::DBModule_MQUser_TimeThread(XPVOID lParam)
301311
for (auto stl_ListIterator = stl_ListDelete.begin(); stl_ListIterator != stl_ListDelete.end(); stl_ListIterator++)
302312
{
303313
XENGINE_DBMESSAGEQUEUE st_DBMessage = *stl_ListIterator;
304-
pClass_This->MemoryCache_DBData_DataDelete(&st_DBMessage);
314+
if (pClass_This->MemoryCache_DBData_DataDelete(&st_DBMessage))
315+
{
316+
pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_QUERY, true, pClass_This->stl_ListInsert.size(), &st_DBMessage, pClass_This->m_lParam);
317+
}
318+
else
319+
{
320+
pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_QUERY, false, pClass_This->stl_ListInsert.size(), &st_DBMessage, pClass_This->m_lParam);
321+
}
305322
}
306323
std::this_thread::sleep_for(std::chrono::seconds(1));
307324
}
@@ -316,16 +333,20 @@ XHTHREAD CALLBACK CMemoryCache_DBData::DBModule_MQUser_InsertThread(XPVOID lPara
316333
if (!pClass_This->stl_ListInsert.empty())
317334
{
318335
pClass_This->st_LockerList.lock();
319-
std::string m_StrSQLInsert = pClass_This->stl_ListInsert.front();
336+
MEMORYCACHE_DBINSERT st_DBInsert = pClass_This->stl_ListInsert.front();
320337
pClass_This->stl_ListInsert.pop_front();
321338
pClass_This->st_LockerList.unlock();
322339

323-
if (!DataBase_MySQL_Execute(pClass_This->m_xhDBSQL, m_StrSQLInsert.c_str()))
340+
if (DataBase_MySQL_Execute(pClass_This->m_xhDBSQL, st_DBInsert.m_StrSQL.c_str()))
324341
{
325-
342+
pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_INSERT, true, pClass_This->stl_ListInsert.size(), &st_DBInsert.st_DBMessageInfo, pClass_This->m_lParam);
343+
}
344+
else
345+
{
346+
pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_INSERT, false, pClass_This->stl_ListInsert.size(), &st_DBInsert.st_DBMessageInfo, pClass_This->m_lParam);
326347
}
327348
}
328-
std::this_thread::sleep_for(std::chrono::seconds(1));
349+
std::this_thread::sleep_for(std::chrono::milliseconds(1));
329350
}
330351
return 0;
331352
}

XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.h

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ typedef struct
1616
time_t nTimeStart;
1717
time_t nTimeLast;
1818
}MEMORYCACHE_DBINFO;
19+
typedef struct
20+
{
21+
XENGINE_DBMESSAGEQUEUE st_DBMessageInfo;
22+
std::string m_StrSQL;
23+
}MEMORYCACHE_DBINSERT;
1924

2025
struct TupleHash
2126
{
@@ -37,15 +42,15 @@ class CMemoryCache_DBData
3742
CMemoryCache_DBData();
3843
~CMemoryCache_DBData();
3944
public:
40-
bool MemoryCache_DBData_Init(int nTimeLast = 3600, int nTimeStart = 0);
45+
bool MemoryCache_DBData_Init(int nTimeLast, int nTimeStart, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam = NULL);
4146
bool MemoryCache_DBData_SetHandle(XNETHANDLE xhDBSQL);
4247
bool MemoryCache_DBData_Destory();
4348
public:
4449
bool MemoryCache_DBData_DataInsert(XENGINE_DBMESSAGEQUEUE* pSt_DBMessageInfo);
4550
bool MemoryCache_DBData_DataQuery(XENGINE_DBMESSAGEQUEUE* pSt_DBMessageInfo);
4651
bool MemoryCache_DBData_DataDelete(XENGINE_DBMESSAGEQUEUE* pSt_DBMessageInfo);
4752
public:
48-
bool MemoryCache_DBData_QueueInsert(LPCXSTR lpszSQLStr);
53+
bool MemoryCache_DBData_QueueInsert(LPCXSTR lpszSQLStr, XENGINE_DBMESSAGEQUEUE* pSt_DBMessageInfo);
4954
protected:
5055
static XHTHREAD CALLBACK DBModule_MQUser_TimeThread(XPVOID lParam);
5156
static XHTHREAD CALLBACK DBModule_MQUser_InsertThread(XPVOID lParam);
@@ -54,12 +59,15 @@ class CMemoryCache_DBData
5459
int m_nTimeLast = 0;
5560
int m_nTimeStart = 0;
5661
XNETHANDLE m_xhDBSQL = 0;
62+
63+
XPVOID m_lParam;
64+
CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE lpCall_MemoryCache;
5765
private:
5866
std::shared_mutex st_LockerList;
5967
std::shared_mutex st_LockerQuery;
6068
std::unique_ptr<std::thread> pSTDThread_Query;
6169
std::unique_ptr<std::thread> pSTDThread_Insert;
6270
private:
63-
std::list<std::string> stl_ListInsert;
71+
std::list<MEMORYCACHE_DBINSERT> stl_ListInsert;
6472
std::unordered_map<std::tuple<__int64x, std::string>, MEMORYCACHE_DBINFO, TupleHash> stl_MapQuery;
6573
};

XEngine_Source/MQCore_MemoryCache/MemoryCache_Define.h

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@
1010
// Purpose: 导出的函数
1111
// History:
1212
*********************************************************************/
13+
typedef enum
14+
{
15+
ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_QUERY = 0,
16+
ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_INSERT = 1
17+
}ENUM_MEMORYCACHE_CALLBACK_TYPE;
18+
//////////////////////////////////////////////////////////////////////////
19+
// 导出的回调
20+
//////////////////////////////////////////////////////////////////////////
21+
typedef void(CALLBACK* CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE)(ENUM_MEMORYCACHE_CALLBACK_TYPE enMemoryType, bool bSuccess, size_t nListCount, XENGINE_DBMESSAGEQUEUE* pSt_DBInfo, XPVOID lParam);
1322
//////////////////////////////////////////////////////////////////////////
1423
// 导出的函数
1524
//////////////////////////////////////////////////////////////////////////
@@ -35,7 +44,7 @@ extern "C" XLONG MemoryCache_GetLastError(int *pInt_SysError = NULL);
3544
意思:是否成功
3645
备注:
3746
*********************************************************************/
38-
extern "C" bool MemoryCache_DBData_Init(int nTimeLast = 3600, int nTimeStart = 0);
47+
extern "C" bool MemoryCache_DBData_Init(int nTimeLast, int nTimeStart, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam = NULL);
3948
/********************************************************************
4049
函数名称:MemoryCache_DBData_SetHandle
4150
函数功能:设置句柄
@@ -109,9 +118,14 @@ extern "C" bool MemoryCache_DBData_DataDelete(XENGINE_DBMESSAGEQUEUE* pSt_DBMess
109118
类型:常量字符指针
110119
可空:N
111120
意思:输入要插入的语句
121+
参数.二:pSt_DBMessageInfo
122+
In/Out:In
123+
类型:常量字符指针
124+
可空:N
125+
意思:输入要插入的数据
112126
返回值
113127
类型:逻辑型
114128
意思:是否成功
115129
备注:
116130
*********************************************************************/
117-
extern "C" bool MemoryCache_DBData_QueueInsert(LPCXSTR lpszSQLStr);
131+
extern "C" bool MemoryCache_DBData_QueueInsert(LPCXSTR lpszSQLStr, XENGINE_DBMESSAGEQUEUE* pSt_DBMessageInfo);

XEngine_Source/MQCore_MemoryCache/pch.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ extern "C" XLONG MemoryCache_GetLastError(int* pInt_SysError)
2929
/*************************************************************************
3030
高速缓存导出函数
3131
**************************************************************************/
32-
extern "C" bool MemoryCache_DBData_Init(int nTimeLast, int nTimeStart)
32+
extern "C" bool MemoryCache_DBData_Init(int nTimeLast, int nTimeStart, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam)
3333
{
34-
return m_MemoryDBData.MemoryCache_DBData_Init(nTimeLast, nTimeStart);
34+
return m_MemoryDBData.MemoryCache_DBData_Init(nTimeLast, nTimeStart, fpCall_MemoryCache, lParam);
3535
}
3636
extern "C" bool MemoryCache_DBData_SetHandle(XNETHANDLE xhDBSQL)
3737
{
@@ -53,7 +53,7 @@ extern "C" bool MemoryCache_DBData_DataDelete(XENGINE_DBMESSAGEQUEUE* pSt_DBMess
5353
{
5454
return m_MemoryDBData.MemoryCache_DBData_DataDelete(pSt_DBMessageInfo);
5555
}
56-
extern "C" bool MemoryCache_DBData_QueueInsert(LPCXSTR lpszSQLStr)
56+
extern "C" bool MemoryCache_DBData_QueueInsert(LPCXSTR lpszSQLStr, XENGINE_DBMESSAGEQUEUE* pSt_DBMessageInfo)
5757
{
58-
return m_MemoryDBData.MemoryCache_DBData_QueueInsert(lpszSQLStr);
58+
return m_MemoryDBData.MemoryCache_DBData_QueueInsert(lpszSQLStr, pSt_DBMessageInfo);
5959
}

XEngine_Source/XEngine_MQServiceApp/MQService_Task.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,29 @@ void CALLBACK MessageQueue_CBTask_TimePublish(XENGINE_DBTIMERELEASE* pSt_DBInfo,
6060
DBModule_MQUser_TimeUPDate(pSt_DBInfo);
6161
}
6262
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("定时任务,消息主题:%s,序列:%lld,定时任务分发成功,客户端个数:%d"), pSt_DBInfo->tszQueueName, pSt_DBInfo->nIDMsg, nListCount);
63+
}
64+
void CALLBACK MessageQueue_CBTask_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE enMemoryType, bool bSuccess, size_t nListCount, XENGINE_DBMESSAGEQUEUE* pSt_DBInfo, XPVOID lParam)
65+
{
66+
if (ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_QUERY == enMemoryType)
67+
{
68+
if (bSuccess)
69+
{
70+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("高速缓存,消息主题:%s,序列:%lld,删除过期缓存成功,缓存剩余队列:%ld"), pSt_DBInfo->tszQueueName, pSt_DBInfo->nQueueSerial, nListCount);
71+
}
72+
else
73+
{
74+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("高速缓存,消息主题:%s,序列:%lld,删除过期缓存成功,缓存剩余队列:%ld"), pSt_DBInfo->tszQueueName, pSt_DBInfo->nQueueSerial, nListCount);
75+
}
76+
}
77+
else if (ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_INSERT == enMemoryType)
78+
{
79+
if (bSuccess)
80+
{
81+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("高速缓存,消息主题:%s,序列:%lld,插入缓存队列到数据库成功,缓存剩余队列:%ld"), pSt_DBInfo->tszQueueName, pSt_DBInfo->nQueueSerial, nListCount);
82+
}
83+
else
84+
{
85+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("高速缓存,消息主题:%s,序列:%lld,插入缓存队列到数据库失败,缓存剩余队列:%ld"), pSt_DBInfo->tszQueueName, pSt_DBInfo->nQueueSerial, nListCount);
86+
}
87+
}
6388
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
#pragma once
22

3-
void CALLBACK MessageQueue_CBTask_TimePublish(XENGINE_DBTIMERELEASE* pSt_DBInfo, XPVOID lParam);
3+
void CALLBACK MessageQueue_CBTask_TimePublish(XENGINE_DBTIMERELEASE* pSt_DBInfo, XPVOID lParam);
4+
void CALLBACK MessageQueue_CBTask_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE enMemoryType, bool bSuccess, size_t nListCount, XENGINE_DBMESSAGEQUEUE* pSt_DBInfo, XPVOID lParam);

XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ int main(int argc, char** argv)
168168

169169
if (st_ServiceCfg.st_XMemory.bDataQueryEnable || st_ServiceCfg.st_XMemory.bDataInsertEnable)
170170
{
171-
if (!MemoryCache_DBData_Init(st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeStart))
171+
if (!MemoryCache_DBData_Init(st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeStart, MessageQueue_CBTask_MemoryCache))
172172
{
173173
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化高速缓存服务失败,错误:%lX"), MemoryCache_GetLastError());
174174
goto NETSERVICEEXIT;

0 commit comments

Comments
 (0)