From 77e6e5659453b768d110ad2af6e0c6032112013f Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 29 Nov 2024 10:34:51 +0800 Subject: [PATCH 01/29] update:read me --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index adc954b..b2abad3 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,9 @@ c c++消息服务 消息中间件 c c++Message Service +## 注意 +编译发布版本将只在github上面发布. + ## 软件架构 此软件基于XEngine开发.采用C/C++作为开发语言 此软件是一款简易的高性能服务,统一的API接口,让用户几乎不需要二次开发就可以直接使用 From af3d0a348ddbf9c70fde7efefdd3587387344198 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 31 Dec 2024 09:50:18 +0800 Subject: [PATCH 02/29] fixed:example build error --- XEngine_Apps/MQCore_HTTPApp/MQCore_HTTPApp.cpp | 10 +++++----- .../MQCore_HTTPApp/MQCore_HTTPApp.vcxproj | 2 +- XEngine_Apps/MQCore_TCPApp/MQCore_TCPApp.cpp | 16 ++++++++-------- XEngine_Apps/MQCore_TCPApp/MQCore_TCPApp.vcxproj | 2 +- XEngine_Apps/MQCore_WSApp/MQCore_WSApp.cpp | 4 ++-- XEngine_Apps/MQCore_WSApp/MQCore_WSApp.vcxproj | 2 +- XEngine_Apps/VSCopy-x86.bat | 2 +- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/XEngine_Apps/MQCore_HTTPApp/MQCore_HTTPApp.cpp b/XEngine_Apps/MQCore_HTTPApp/MQCore_HTTPApp.cpp index cfae20d..e8ca707 100644 --- a/XEngine_Apps/MQCore_HTTPApp/MQCore_HTTPApp.cpp +++ b/XEngine_Apps/MQCore_HTTPApp/MQCore_HTTPApp.cpp @@ -2,8 +2,8 @@ #include #include #pragma comment(lib,"Ws2_32") -#pragma comment(lib,"x86/XEngine_BaseLib/XEngine_BaseLib") -#pragma comment(lib,"x86/XEngine_Client/XClient_APIHelp") +#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib") +#pragma comment(lib,"XEngine_Client/XClient_APIHelp") #pragma comment(lib,"../../XEngine_Source/Debug/jsoncpp") #endif #include @@ -33,7 +33,7 @@ void MQ_GetUserList() return; } _xtprintf("MQ_GetUserList:%s\n", ptszMsgBody); - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBody); + BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMsgBody); } void MQ_GetOnlineList() { @@ -47,7 +47,7 @@ void MQ_GetOnlineList() return; } _xtprintf("MQ_GetOnlineList:%s\n", ptszMsgBody); - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBody); + BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMsgBody); } void MQ_GetTopicList() { @@ -61,7 +61,7 @@ void MQ_GetTopicList() return; } _xtprintf("MQ_GetTopicList:%s\n", ptszMsgBody); - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBody); + BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMsgBody); } int main() diff --git a/XEngine_Apps/MQCore_HTTPApp/MQCore_HTTPApp.vcxproj b/XEngine_Apps/MQCore_HTTPApp/MQCore_HTTPApp.vcxproj index 5f7b2f9..214f3e8 100644 --- a/XEngine_Apps/MQCore_HTTPApp/MQCore_HTTPApp.vcxproj +++ b/XEngine_Apps/MQCore_HTTPApp/MQCore_HTTPApp.vcxproj @@ -73,7 +73,7 @@ true $(XEngine_Include);$(IncludePath) - $(XEngine_Library);$(LibraryPath) + $(XEngine_Lib32);$(LibraryPath) false diff --git a/XEngine_Apps/MQCore_TCPApp/MQCore_TCPApp.cpp b/XEngine_Apps/MQCore_TCPApp/MQCore_TCPApp.cpp index 9f3df9a..855630b 100644 --- a/XEngine_Apps/MQCore_TCPApp/MQCore_TCPApp.cpp +++ b/XEngine_Apps/MQCore_TCPApp/MQCore_TCPApp.cpp @@ -2,8 +2,8 @@ #include #include #pragma comment(lib,"Ws2_32.lib") -#pragma comment(lib,"x86/XEngine_BaseLib/XEngine_BaseLib.lib") -#pragma comment(lib,"x86/XEngine_Client/XClient_Socket.lib") +#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib.lib") +#pragma comment(lib,"XEngine_Client/XClient_Socket.lib") #endif #include #include @@ -76,7 +76,7 @@ void MQ_Register() _xtprintf("%d\n", st_ProtocolHdr.wReserve); if (nLen > 0) { - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMsgBuffer); } } void MQ_Authorize() @@ -122,7 +122,7 @@ void MQ_Authorize() _xtprintf("%d\n", st_ProtocolHdr.wReserve); if (nLen > 0) { - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMsgBuffer); } } //获取未读消息 @@ -171,7 +171,7 @@ void MQ_GetUNRead(int nType = 0) { _xtprintf("获取消息队列数据失败,错误码:%d\n", st_ProtocolHdr.wReserve); } - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMsgBuffer); break; } std::this_thread::sleep_for(std::chrono::milliseconds(1)); @@ -345,7 +345,7 @@ void MQ_Post(LPCXSTR lpszMsgBuffer, int nType = 0, int nPubTime = -1, bool bSelf } memset(&st_XMQProtocol, '\0', sizeof(XENGINE_PROTOCOL_XMQ)); memcpy(&st_XMQProtocol, ptszMsgBuffer, sizeof(XENGINE_PROTOCOL_XMQ)); - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMsgBuffer); } void MQ_Get(int nType = 0) { @@ -457,7 +457,7 @@ void MQ_TimePublish() _xtprintf("接受数据失败!\n"); return; } - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMsgBuffer); if (!XClient_TCPSelect_RecvPkt(m_Socket, &ptszMsgBuffer, &nLen, &st_ProtocolHdr, 60)) { @@ -470,7 +470,7 @@ void MQ_TimePublish() memcpy(&st_XMQProtocol, ptszMsgBuffer, sizeof(st_XMQProtocol)); _xtprintf("接受到通知消息,主题:%s,序列:%lld,长度:%d,内容:%s\n", st_XMQProtocol.tszMQKey, st_XMQProtocol.nSerial, st_ProtocolHdr.unPacketSize - sizeof(XENGINE_PROTOCOL_XMQ), ptszMsgBuffer + sizeof(XENGINE_PROTOCOL_XMQ)); - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMsgBuffer); } void MQ_GetNumber() diff --git a/XEngine_Apps/MQCore_TCPApp/MQCore_TCPApp.vcxproj b/XEngine_Apps/MQCore_TCPApp/MQCore_TCPApp.vcxproj index 7ccaf00..89a44ab 100644 --- a/XEngine_Apps/MQCore_TCPApp/MQCore_TCPApp.vcxproj +++ b/XEngine_Apps/MQCore_TCPApp/MQCore_TCPApp.vcxproj @@ -73,7 +73,7 @@ true $(XEngine_Include);$(IncludePath) - $(XEngine_Library);$(LibraryPath) + $(XEngine_Lib32);$(LibraryPath) false diff --git a/XEngine_Apps/MQCore_WSApp/MQCore_WSApp.cpp b/XEngine_Apps/MQCore_WSApp/MQCore_WSApp.cpp index 1444821..1615fe4 100644 --- a/XEngine_Apps/MQCore_WSApp/MQCore_WSApp.cpp +++ b/XEngine_Apps/MQCore_WSApp/MQCore_WSApp.cpp @@ -3,8 +3,8 @@ #include #include #pragma comment(lib,"Ws2_32") -#pragma comment(lib,"x86/XEngine_Client/XClient_Socket") -#pragma comment(lib,"x86/XEngine_RfcComponents/RfcComponents_WSProtocol") +#pragma comment(lib,"XEngine_Client/XClient_Socket") +#pragma comment(lib,"XEngine_RfcComponents/RfcComponents_WSProtocol") #pragma comment(lib,"../../XEngine_Source/Debug/jsoncpp") #endif #include diff --git a/XEngine_Apps/MQCore_WSApp/MQCore_WSApp.vcxproj b/XEngine_Apps/MQCore_WSApp/MQCore_WSApp.vcxproj index 270b4f5..677f792 100644 --- a/XEngine_Apps/MQCore_WSApp/MQCore_WSApp.vcxproj +++ b/XEngine_Apps/MQCore_WSApp/MQCore_WSApp.vcxproj @@ -73,7 +73,7 @@ true $(XEngine_Include);../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) - $(XEngine_Library);$(LibraryPath) + $(XEngine_Lib32);$(LibraryPath) false diff --git a/XEngine_Apps/VSCopy-x86.bat b/XEngine_Apps/VSCopy-x86.bat index d8c244e..ece7865 100644 --- a/XEngine_Apps/VSCopy-x86.bat +++ b/XEngine_Apps/VSCopy-x86.bat @@ -1,6 +1,6 @@ copy /y "%XEngine_Lib32%\XEngine_BaseLib\XEngine_BaseLib.dll" "./" copy /y "%XEngine_Lib32%\XEngine_BaseLib\XEngine_Algorithm.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_Core\XEngine_OPenSsl.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_Core\XEngine_Cryption.dll" "./" copy /y "%XEngine_Lib32%\XEngine_Core\XEngine_ManagePool.dll" "./" copy /y "%XEngine_Lib32%\XEngine_RfcComponents\RfcComponents_WSProtocol.dll" "./" copy /y "%XEngine_Lib32%\XEngine_Client\XClient_APIHelp.dll" "./" From b37adcad38c49f3c6d949b9c566aaa5652c1e942 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 31 Dec 2024 09:57:29 +0800 Subject: [PATCH 03/29] modify:workflows and more release support --- .github/workflows/linuxbuild.yml | 71 ------------------------- .github/workflows/macbuild.yml | 42 +++++++++++---- .github/workflows/msbuild.yml | 42 +++++++++------ .github/workflows/release.yml | 4 +- .github/workflows/ubuntubuild.yml | 88 +++++++++++++++++++++++++++++++ 5 files changed, 147 insertions(+), 100 deletions(-) delete mode 100644 .github/workflows/linuxbuild.yml create mode 100644 .github/workflows/ubuntubuild.yml diff --git a/.github/workflows/linuxbuild.yml b/.github/workflows/linuxbuild.yml deleted file mode 100644 index 2d9766d..0000000 --- a/.github/workflows/linuxbuild.yml +++ /dev/null @@ -1,71 +0,0 @@ -name: ubuntu build workflows - -on: - push: - branches: [ "develop" ] - paths: - - 'XEngine_Source/**' - - 'XEngine_Release/**' - -permissions: - contents: read - -jobs: - build: - strategy: - # Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable. - fail-fast: false - matrix: - include: - - os: ubuntu-22.04 - #- os: ubuntu-24.04 - runs-on: ${{ matrix.os }} - - steps: - # 检出您的主仓库代码 - - name: Checkout main repository code - uses: actions/checkout@v4 - with: - ref: 'develop' - - # 检出依赖的xengine仓库到指定的xengine目录 - - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 - with: - repository: libxengine/libxengine - path: libxengine - - - name: sub module checkout (opensource) - run: | - git submodule init - git submodule update - - # 设置依赖库的环境变量 - - name: Set up Dependency Environment Variables - run: | - cd libxengine - chmod 777 * - sudo ./XEngine_LINEnv.sh -i 3 - cd .. - #编译 - - name: make - run: | - cd XEngine_Source - make - make FLAGS=InstallAll - make FLAGS=CleanAll - - make RELEASE=1 - make FLAGS=InstallAll - make FLAGS=CleanAll - cd .. - - name: test - run: | - cd XEngine_Release - ./XEngine_MQServiceApp -t - - - name: Upload folder as artifact with ubuntu - uses: actions/upload-artifact@v4 - with: - name: XEngine_MQServiceApp-x86_64-Ubuntu - path: XEngine_Release/ \ No newline at end of file diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index f1008f2..dbe2ffc 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -2,13 +2,12 @@ name: macos build workflows on: push: - branches: [ "develop" ] + branches: + - 'develop' paths: - 'XEngine_Source/**' - 'XEngine_Release/**' - -permissions: - contents: read + - '.github/**' jobs: build: @@ -16,6 +15,7 @@ jobs: matrix: include: - os: macos-13 + - os: macos-14 runs-on: ${{ matrix.os }} steps: @@ -24,7 +24,6 @@ jobs: with: ref: 'develop' - # 检出依赖的xengine仓库到指定的xengine目录 - name: Checkout dependency repository (xengine) uses: actions/checkout@v4 with: @@ -39,14 +38,30 @@ jobs: - name: brew install run: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - # 设置依赖库的环境变量 - - name: Set up Dependency Environment Variables + - name: Set up Dependency x86_64 Environment + if: matrix.os == 'macos-13' run: | cd libxengine chmod 777 * ./XEngine_LINEnv.sh -i 3 - cd .. - #编译 + - name: Set up Dependency Arm64 Environment + if: matrix.os == 'macos-14' + run: | + cd libxengine + chmod 777 * + ./XEngine_LINEnv.sh -i 0 + + latest_tag=$(git ls-remote --tags --sort="v:refname" https://github.com/libxengine/libxengine.git | awk '{print $2}' | sed 's/refs\/tags\///' | tail -n 1) + + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_Mac_Arm64.zip + unzip ./XEngine_Mac_Arm64.zip -d ./XEngine_Mac_Arm64 + cd XEngine_Mac_Arm64 + + sudo mkdir -p /usr/local/include + sudo mkdir -p /usr/local/lib + sudo cp -rf ./XEngine_Include /usr/local/include + sudo find ./XEngine_Mac -name "*.dylib" -exec cp {} /usr/local/lib \; + - name: make debug run: | cd XEngine_Source @@ -64,8 +79,15 @@ jobs: cd XEngine_Release ./XEngine_MQServiceApp -t - - name: Upload folder as artifact with mac + - name: Upload folder as artifact with mac x64 + if: matrix.os == 'macos-13' uses: actions/upload-artifact@v4 with: name: XEngine_MQServiceApp-x86_64-Mac + path: XEngine_Release/ + - name: Upload folder as artifact with mac arm + if: matrix.os == 'macos-14' + uses: actions/upload-artifact@v4 + with: + name: XEngine_MQServiceApp-Arm64-Mac path: XEngine_Release/ \ No newline at end of file diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index dea86cb..def9f50 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -2,38 +2,34 @@ name: windows build workflows on: push: - branches: [ "develop" ] + branches: + - 'develop' paths: - 'XEngine_Source/**' - 'XEngine_Release/**' - -permissions: - contents: read + - '.github/**' jobs: build: strategy: - # Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable. fail-fast: false matrix: configuration: [Debug ,Release] platform: [x86 ,x64] - runs-on: windows-latest # 最新的 Windows 环境 + runs-on: windows-latest steps: - # 检出您的主仓库代码 - name: Checkout main repository code uses: actions/checkout@v4 with: ref: 'develop' - # 检出依赖的xengine仓库到指定的xengine目录 - name: Checkout dependency repository (xengine) uses: actions/checkout@v4 with: repository: libxengine/libxengine - path: xengine + path: libxengine - name: sub module checkout (opensource) run: | @@ -41,21 +37,33 @@ jobs: git submodule update shell: pwsh - # 设置依赖库的环境变量 - - name: Set up Dependency Environment Variables + - name: Set up Dependency x86_64 Environment + if: matrix.platform == 'x64' + run: | + echo "XENGINE_INCLUDE=${{ github.workspace }}/libxengine" | Out-File -FilePath $env:GITHUB_ENV -Append + echo "XENGINE_LIB64=${{ github.workspace }}/libxengine/XEngine_Windows" | Out-File -FilePath $env:GITHUB_ENV -Append + shell: pwsh + - name: Set up Dependency x86_32 Environment + if: matrix.platform == 'x86' run: | - echo "XENGINE_INCLUDE=${{ github.workspace }}/xengine" | Out-File -FilePath $env:GITHUB_ENV -Append - echo "XENGINE_LIB32=${{ github.workspace }}/xengine/XEngine_Windows/x86" | Out-File -FilePath $env:GITHUB_ENV -Append - echo "XENGINE_LIB64=${{ github.workspace }}/xengine/XEngine_Windows/x64" | Out-File -FilePath $env:GITHUB_ENV -Append + $response = Invoke-RestMethod -Uri "https://api.github.com/repos/libxengine/libxengine/releases/latest" -Headers @{"Accept"="application/vnd.github.v3+json"} + $latest_tag = $response.tag_name + Write-Host "Latest Tag: $latest_tag" + + $url = "https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_Windows_x86-32.zip" + Invoke-WebRequest -Uri $url -OutFile "XEngine_Windows_x86-32.zip" + Expand-Archive -Path ./XEngine_Windows_x86-32.zip -DestinationPath ./XEngine_Windows -Force + + echo "XENGINE_INCLUDE=${{ github.workspace }}/XEngine_Windows" | Out-File -FilePath $env:GITHUB_ENV -Append + echo "XENGINE_LIB32=${{ github.workspace }}/XEngine_Windows/XEngine_Windows" | Out-File -FilePath $env:GITHUB_ENV -Append shell: pwsh - # 配置 MSBuild 的路径,准备构建 VC++ 项目 - name: Setup MSBuild uses: microsoft/setup-msbuild@v2 - #编译 + - name: Build Solution run: msbuild XEngine_Source/XEngine_MQServiceApp.sln /p:Configuration=${{ matrix.configuration }} /p:Platform=${{ matrix.platform }} - #测试 + - name: Conditional Step for x86 Release if: matrix.configuration == 'Release' && matrix.platform == 'x86' run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a52b626..4edb5e5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,10 +16,10 @@ jobs: with: fetch-depth: 0 - - name: Download linuxbuild + - name: Download ubuntubuild uses: dawidd6/action-download-artifact@v6 with: - workflow: linuxbuild.yml + workflow: ubuntubuild.yml workflow_conclusion: success check_artifacts: false skip_unpack: true diff --git a/.github/workflows/ubuntubuild.yml b/.github/workflows/ubuntubuild.yml new file mode 100644 index 0000000..26c558c --- /dev/null +++ b/.github/workflows/ubuntubuild.yml @@ -0,0 +1,88 @@ +name: ubuntu build workflows + +on: + push: + branches: + - 'develop' + paths: + - 'XEngine_Source/**' + - 'XEngine_Release/**' + - '.github/**' + +jobs: + build: + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-22.04 + - os: ubuntu-24.04 + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout main repository code + uses: actions/checkout@v4 + with: + ref: 'develop' + + - name: Checkout dependency repository (xengine) + uses: actions/checkout@v4 + with: + repository: libxengine/libxengine + path: libxengine + + - name: sub module checkout (opensource) + run: | + git submodule init + git submodule update + + - name: Set up Dependency ubuntu24.04 Environment + if: matrix.os == 'ubuntu-24.04' + run: | + cd libxengine + chmod 777 * + sudo ./XEngine_LINEnv.sh -i 3 + - name: Set up Dependency ubuntu22.04 Environment + if: matrix.os == 'ubuntu-22.04' + run: | + cd libxengine + chmod 777 * + sudo ./XEngine_LINEnv.sh -i 0 + + latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_UBuntu_22.04_x86-64.zip + unzip ./XEngine_UBuntu_22.04_x86-64.zip -d ./XEngine_UBuntu_22.04_x86-64 + cd XEngine_UBuntu_22.04_x86-64 + + sudo cp -rf ./XEngine_Include /usr/local/include + sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; + sudo ldconfig + + - name: make + run: | + cd XEngine_Source + make + make FLAGS=InstallAll + make FLAGS=CleanAll + + make RELEASE=1 + make FLAGS=InstallAll + make FLAGS=CleanAll + cd .. + - name: test + run: | + cd XEngine_Release + ./XEngine_MQServiceApp -t + + - name: Upload folder as artifact with ubuntu22.04 + if: matrix.os == 'ubuntu-22.04' + uses: actions/upload-artifact@v4 + with: + name: XEngine_MQServiceApp-x86_64-Ubuntu-22.04 + path: XEngine_Release/ + - name: Upload folder as artifact with ubuntu24.04 + if: matrix.os == 'ubuntu-24.04' + uses: actions/upload-artifact@v4 + with: + name: XEngine_MQServiceApp-x86_64-Ubuntu-24.04 + path: XEngine_Release/ \ No newline at end of file From 28b250518a417506d55dc24244c60db82fe599ed Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 31 Dec 2024 10:03:58 +0800 Subject: [PATCH 04/29] update:depend library --- XEngine_Source/XEngine_Depend | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_Depend b/XEngine_Source/XEngine_Depend index 1c1452f..60eac07 160000 --- a/XEngine_Source/XEngine_Depend +++ b/XEngine_Source/XEngine_Depend @@ -1 +1 @@ -Subproject commit 1c1452f13720d22834e09c7e4e78042698411486 +Subproject commit 60eac0753192a4a66fc90b561d8fde4e5282e2d9 From c08c6cb7fe9d3d9d70016f3642d337a695b96553 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 31 Dec 2024 10:07:24 +0800 Subject: [PATCH 05/29] update:match xengine v9.x support --- .../DBModule_MQData/DBModule_MQData.cpp | 4 +-- .../DBModule_MQUser/DBModule_MQUser.cpp | 8 ++--- XEngine_Source/MQCore_ProtocolModule/Makefile | 2 +- .../ProtocolModule_Packet.cpp | 6 ++-- .../ProtocolModule_Parse.cpp | 2 +- XEngine_Source/MQCore_ProtocolModule/pch.h | 6 ++-- .../SessionModule_Client.cpp | 2 +- XEngine_Source/VSCopy_Debug.bat | 4 ++- XEngine_Source/VSCopy_x64.bat | 4 ++- XEngine_Source/VSCopy_x86.bat | 4 ++- .../MQService_HttpTask.cpp | 20 +++++------ .../MQService_MQTTTask.cpp | 8 ++--- .../MQService_TCPTask.cpp | 34 +++++++++---------- .../XEngine_MQServiceApp/MQService_Task.cpp | 2 +- .../XEngine_MQServiceApp/MQService_WSTask.cpp | 4 +-- .../XEngine_MQServiceApp.cpp | 12 +++---- 16 files changed, 64 insertions(+), 58 deletions(-) diff --git a/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp b/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp index a4d373e..4a3c2ce 100644 --- a/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp +++ b/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp @@ -579,7 +579,7 @@ bool CDBModule_MQData::DBModule_MQData_CreateTable(LPCXSTR lpszQueueName) #ifdef _MSC_BUILD int nUTFLen = 0; - BaseLib_OperatorCharset_AnsiToUTF(tszSQLQuery, tszUTFQuery, &nUTFLen); + BaseLib_Charset_AnsiToUTF(tszSQLQuery, tszUTFQuery, &nUTFLen); if (!DataBase_MySQL_Execute(xhDBSQL, tszUTFQuery)) #else if (!DataBase_MySQL_Execute(xhDBSQL, tszSQLQuery)) @@ -725,7 +725,7 @@ bool CDBModule_MQData::DBModule_MQData_ShowTable(XCHAR*** pppszTableName, int* p return false; } *pInt_ListCount = (int)nllLine; - BaseLib_OperatorMemory_Malloc((XPPPMEM)pppszTableName, (int)nllLine, sizeof(XENGINE_DBMESSAGEQUEUE)); + BaseLib_Memory_Malloc((XPPPMEM)pppszTableName, (int)nllLine, sizeof(XENGINE_DBMESSAGEQUEUE)); for (__int64u i = 0; i < nllLine; i++) { XCHAR** pptszResult = DataBase_MySQL_GetResult(xhDBSQL, xhTable); diff --git a/XEngine_Source/MQCore_DBModule/DBModule_MQUser/DBModule_MQUser.cpp b/XEngine_Source/MQCore_DBModule/DBModule_MQUser/DBModule_MQUser.cpp index 116d5ea..f4a588d 100644 --- a/XEngine_Source/MQCore_DBModule/DBModule_MQUser/DBModule_MQUser.cpp +++ b/XEngine_Source/MQCore_DBModule/DBModule_MQUser/DBModule_MQUser.cpp @@ -330,7 +330,7 @@ bool CDBModule_MQUser::DBModule_MQUser_UserList(XENGINE_PROTOCOL_USERINFO*** ppp return false; } *pInt_ListCount = (int)nllLine; - BaseLib_OperatorMemory_Malloc((XPPPMEM)pppSt_UserInfo, (int)nllLine, sizeof(XENGINE_PROTOCOL_USERINFO)); + BaseLib_Memory_Malloc((XPPPMEM)pppSt_UserInfo, (int)nllLine, sizeof(XENGINE_PROTOCOL_USERINFO)); for (__int64u i = 0; i < nllLine; i++) { XCHAR** pptszResult = DataBase_MySQL_GetResult(xhDBSQL, xhTable); @@ -551,7 +551,7 @@ bool CDBModule_MQUser::DBModule_MQUser_KeyList(LPCXSTR lpszUser, LPCXSTR lpszKey return false; } *pInt_ListCount = (int)nllLine; - BaseLib_OperatorMemory_Malloc((XPPPMEM)pppSt_UserKey, (int)nllLine, sizeof(XENGINE_DBUSERKEY)); + BaseLib_Memory_Malloc((XPPPMEM)pppSt_UserKey, (int)nllLine, sizeof(XENGINE_DBUSERKEY)); for (__int64u i = 0; i < nllLine; i++) { XCHAR** pptszResult = DataBase_MySQL_GetResult(xhDBSQL, xhTable); @@ -782,7 +782,7 @@ bool CDBModule_MQUser::DBModule_MQUser_TimeQuery(XENGINE_DBTIMERELEASE*** pppSt_ return false; } *pInt_ListCount = (int)nllLine; - BaseLib_OperatorMemory_Malloc((XPPPMEM)pppSt_DBInfo, *pInt_ListCount, sizeof(XENGINE_DBTIMERELEASE)); + BaseLib_Memory_Malloc((XPPPMEM)pppSt_DBInfo, *pInt_ListCount, sizeof(XENGINE_DBTIMERELEASE)); for (__int64u i = 0; i < nllLine; i++) { XCHAR** pptszResult = DataBase_MySQL_GetResult(xhDBSQL, xhTable); @@ -1141,7 +1141,7 @@ XHTHREAD CALLBACK CDBModule_MQUser::DBModule_MQUser_TimeThread(XPVOID lParam) { pClass_This->lpCall_TimePublish(ppSt_DBInfo[i], pClass_This->m_lParam); } - BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_DBInfo, nListCount); + BaseLib_Memory_Free((XPPPMEM)&ppSt_DBInfo, nListCount); std::this_thread::sleep_for(std::chrono::seconds(1)); } return 0; diff --git a/XEngine_Source/MQCore_ProtocolModule/Makefile b/XEngine_Source/MQCore_ProtocolModule/Makefile index 07e7252..023d27b 100644 --- a/XEngine_Source/MQCore_ProtocolModule/Makefile +++ b/XEngine_Source/MQCore_ProtocolModule/Makefile @@ -7,7 +7,7 @@ LIBFLAG = RELEASE = 0 LOADHDR = -I ./ -I ../XEngine_Depend/XEngine_Module/jsoncpp LOADSO = -L ../XEngine_Depend/XEngine_Module/jsoncpp -LIB = -ljsoncpp -lXEngine_BaseLib -lXEngine_OPenSsl -lRfcComponents_MQTTProtocol +LIB = -ljsoncpp -lXEngine_BaseLib -lXEngine_Cryption -lRfcComponents_MQTTProtocol LIBEX = OBJECTS = ProtocolModule_Packet.o ProtocolModule_Parse.o pch.o diff --git a/XEngine_Source/MQCore_ProtocolModule/ProtocolModule_Packet/ProtocolModule_Packet.cpp b/XEngine_Source/MQCore_ProtocolModule/ProtocolModule_Packet/ProtocolModule_Packet.cpp index 62f2d50..fed50f4 100644 --- a/XEngine_Source/MQCore_ProtocolModule/ProtocolModule_Packet/ProtocolModule_Packet.cpp +++ b/XEngine_Source/MQCore_ProtocolModule/ProtocolModule_Packet/ProtocolModule_Packet.cpp @@ -829,7 +829,7 @@ bool CProtocolModule_Packet::ProtocolModule_Packet_WSCommon(XENGINE_PROTOCOLHDR* } memset(ptszBaseBuffer, '\0', XENGINE_MEMORY_SIZE_MAX); - OPenSsl_Codec_Base64(lpszMsgBuffer, ptszBaseBuffer, &nBLen, true); + Cryption_Codec_Base64(lpszMsgBuffer, ptszBaseBuffer, &nBLen, true); st_JsonPayload["nPayLen"] = nBLen; st_JsonPayload["tszPayData"] = ptszBaseBuffer; } @@ -861,7 +861,7 @@ bool CProtocolModule_Packet::ProtocolModule_Packet_MQTTCommon(XENGINE_PROTOCOLHD XCHAR tszRVBuffer[1024]; MQTTPROTOCOL_HDRPROPERTY** ppSt_HDRProperty; - BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_HDRProperty, nListCount, sizeof(MQTTPROTOCOL_HDRPROPERTY)); + BaseLib_Memory_Malloc((XPPPMEM)&ppSt_HDRProperty, nListCount, sizeof(MQTTPROTOCOL_HDRPROPERTY)); ppSt_HDRProperty[0]->nProLen = 4; ppSt_HDRProperty[0]->st_unValue.nValue = 1024000; @@ -889,7 +889,7 @@ bool CProtocolModule_Packet::ProtocolModule_Packet_MQTTCommon(XENGINE_PROTOCOLHD MQTTProtocol_Packet_REPConnect(tszRVBuffer, &nRVLen, 0, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_REASON_SUCCESS, &ppSt_HDRProperty, nListCount); MQTTProtocol_Packet_Header(ptszMsgBuffer, pInt_MsgLen, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_CONNACK, tszRVBuffer, nRVLen); - BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_HDRProperty, nListCount); + BaseLib_Memory_Free((XPPPMEM)&ppSt_HDRProperty, nListCount); } else { diff --git a/XEngine_Source/MQCore_ProtocolModule/ProtocolModule_Parse/ProtocolModule_Parse.cpp b/XEngine_Source/MQCore_ProtocolModule/ProtocolModule_Parse/ProtocolModule_Parse.cpp index ee32c9f..7f12c5b 100644 --- a/XEngine_Source/MQCore_ProtocolModule/ProtocolModule_Parse/ProtocolModule_Parse.cpp +++ b/XEngine_Source/MQCore_ProtocolModule/ProtocolModule_Parse/ProtocolModule_Parse.cpp @@ -209,7 +209,7 @@ bool CProtocolModule_Parse::ProtocolModule_Parse_Websocket(LPCXSTR lpszMsgBuffer if (ENUM_XENGINE_PROTOCOLHDR_PAYLOAD_TYPE_BIN == pSt_ProtocolHdr->byVersion) { int nBLen = st_JsonPayLoad["nPayLen"].asInt(); - OPenSsl_Codec_Base64(st_JsonPayLoad["tszPayData"].asCString(), ptszMsgBuffer + nPos, &nBLen, false); + Cryption_Codec_Base64(st_JsonPayLoad["tszPayData"].asCString(), ptszMsgBuffer + nPos, &nBLen, false); *pInt_MsgLen += nBLen; } else diff --git a/XEngine_Source/MQCore_ProtocolModule/pch.h b/XEngine_Source/MQCore_ProtocolModule/pch.h index 7aa9d39..65e187b 100644 --- a/XEngine_Source/MQCore_ProtocolModule/pch.h +++ b/XEngine_Source/MQCore_ProtocolModule/pch.h @@ -21,8 +21,8 @@ #include #include #include -#include -#include +#include +#include #include #include #include @@ -48,7 +48,7 @@ extern XLONG Protocol_dwErrorCode; #ifdef _MSC_BUILD #pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib") -#pragma comment(lib,"XEngine_Core/XEngine_OPenSsl") +#pragma comment(lib,"XEngine_Core/XEngine_Cryption") #pragma comment(lib,"XEngine_RfcComponents/RfcComponents_MQTTProtocol.lib") #ifdef _DEBUG #ifdef _WIN64 diff --git a/XEngine_Source/MQCore_SessionModule/SessionModule_Client/SessionModule_Client.cpp b/XEngine_Source/MQCore_SessionModule/SessionModule_Client/SessionModule_Client.cpp index be18bcc..f06a25b 100644 --- a/XEngine_Source/MQCore_SessionModule/SessionModule_Client/SessionModule_Client.cpp +++ b/XEngine_Source/MQCore_SessionModule/SessionModule_Client/SessionModule_Client.cpp @@ -432,7 +432,7 @@ bool CSessionModule_Client::SessionModule_Client_GetListAddr(XCHAR*** ppptszClie Session_IsErrorOccur = false; *pInt_ListCount = stl_MapSession.size(); - BaseLib_OperatorMemory_Malloc((XPPPMEM)ppptszClientList, stl_MapSession.size(), 128); + BaseLib_Memory_Malloc((XPPPMEM)ppptszClientList, stl_MapSession.size(), 128); st_Locker.lock_shared(); unordered_map::iterator stl_MapIterator = stl_MapSession.begin(); diff --git a/XEngine_Source/VSCopy_Debug.bat b/XEngine_Source/VSCopy_Debug.bat index 4d469df..396027d 100644 --- a/XEngine_Source/VSCopy_Debug.bat +++ b/XEngine_Source/VSCopy_Debug.bat @@ -3,11 +3,13 @@ copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_BaseSafe.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_Algorithm.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_Core.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_ManagePool.dll" "./" -copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_OPenSsl.dll" "./" +copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_Cryption.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_SystemApi.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XClient_APIHelp.dll" "./" +copy /y "D:\XEngine\XEngine_SourceCode\Debug\NetHelp_APIHelp.dll" "./" + copy /y "D:\XEngine\XEngine_SourceCode\Debug\HelpComponents_Packets.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\HelpComponents_XLog.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\HelpComponents_DataBase.dll" "./" diff --git a/XEngine_Source/VSCopy_x64.bat b/XEngine_Source/VSCopy_x64.bat index 7967112..52af2f8 100644 --- a/XEngine_Source/VSCopy_x64.bat +++ b/XEngine_Source/VSCopy_x64.bat @@ -3,11 +3,13 @@ copy /y "%XEngine_Lib64%\XEngine_BaseLib\XEngine_BaseSafe.dll" "./" copy /y "%XEngine_Lib64%\XEngine_BaseLib\XEngine_Algorithm.dll" "./" copy /y "%XEngine_Lib64%\XEngine_Core\XEngine_Core.dll" "./" copy /y "%XEngine_Lib64%\XEngine_Core\XEngine_ManagePool.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_Core\XEngine_OPenSsl.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_Core\XEngine_Cryption.dll" "./" copy /y "%XEngine_Lib64%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" copy /y "%XEngine_Lib64%\XEngine_Client\XClient_APIHelp.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_NetHelp\NetHelp_APIHelp.dll" "./" + copy /y "%XEngine_Lib64%\XEngine_HelpComponents\HelpComponents_Packets.dll" "./" copy /y "%XEngine_Lib64%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./" copy /y "%XEngine_Lib64%\XEngine_HelpComponents\HelpComponents_DataBase.dll" "./" diff --git a/XEngine_Source/VSCopy_x86.bat b/XEngine_Source/VSCopy_x86.bat index 37a5668..da0981d 100644 --- a/XEngine_Source/VSCopy_x86.bat +++ b/XEngine_Source/VSCopy_x86.bat @@ -3,11 +3,13 @@ copy /y "%XEngine_Lib32%\XEngine_BaseLib\XEngine_BaseSafe.dll" "./" copy /y "%XEngine_Lib32%\XEngine_BaseLib\XEngine_Algorithm.dll" "./" copy /y "%XEngine_Lib32%\XEngine_Core\XEngine_Core.dll" "./" copy /y "%XEngine_Lib32%\XEngine_Core\XEngine_ManagePool.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_Core\XEngine_OPenSsl.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_Core\XEngine_Cryption.dll" "./" copy /y "%XEngine_Lib32%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" copy /y "%XEngine_Lib32%\XEngine_Client\XClient_APIHelp.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_NetHelp\NetHelp_APIHelp.dll" "./" + copy /y "%XEngine_Lib32%\XEngine_HelpComponents\HelpComponents_Packets.dll" "./" copy /y "%XEngine_Lib32%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./" copy /y "%XEngine_Lib32%\XEngine_HelpComponents\HelpComponents_DataBase.dll" "./" diff --git a/XEngine_Source/XEngine_MQServiceApp/MQService_HttpTask.cpp b/XEngine_Source/XEngine_MQServiceApp/MQService_HttpTask.cpp index 98e3eca..4ce4914 100644 --- a/XEngine_Source/XEngine_MQServiceApp/MQService_HttpTask.cpp +++ b/XEngine_Source/XEngine_MQServiceApp/MQService_HttpTask.cpp @@ -29,12 +29,12 @@ XHTHREAD CALLBACK MessageQueue_HttpThread(XPVOID lParam) if (HttpProtocol_Server_GetMemoryEx(xhHTTPPacket, ppSst_ListAddr[i]->tszClientAddr, &ptszMsgBuffer, &nMsgLen, &st_HTTPReqparam, &ppszHdrList, &nHdrCount)) { MessageQueue_Http_Handle(&st_HTTPReqparam, ppSst_ListAddr[i]->tszClientAddr, ptszMsgBuffer, nMsgLen, ppszHdrList, nHdrCount); - BaseLib_OperatorMemory_FreeCStyle((VOID**)&ptszMsgBuffer); - BaseLib_OperatorMemory_Free((XPPPMEM)&ppszHdrList, nHdrCount); + BaseLib_Memory_FreeCStyle((VOID**)&ptszMsgBuffer); + BaseLib_Memory_Free((XPPPMEM)&ppszHdrList, nHdrCount); } } } - BaseLib_OperatorMemory_Free((XPPPMEM)&ppSst_ListAddr, nListCount); + BaseLib_Memory_Free((XPPPMEM)&ppSst_ListAddr, nListCount); } return 0; } @@ -71,11 +71,11 @@ bool MessageQueue_Http_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST return false; } //获取函数 - BaseLib_OperatorString_GetKeyValue(ppSt_ListUrl[0], _X("="), tszKey, tszValue); + BaseLib_String_GetKeyValue(ppSt_ListUrl[0], _X("="), tszKey, tszValue); if (0 == _tcsxnicmp(lpszAPIGet, tszValue, _tcsxlen(lpszAPIGet))) { memset(tszValue, '\0', MAX_PATH); - BaseLib_OperatorString_GetKeyValue(ppSt_ListUrl[1], _X("="), tszKey, tszValue); + BaseLib_String_GetKeyValue(ppSt_ListUrl[1], _X("="), tszKey, tszValue); if (0 == _tcsxnicmp(lpszAPIUser, tszValue, _tcsxlen(lpszAPIUser))) { //用户 http://127.0.0.1:5202/api?function=get&method=user @@ -83,7 +83,7 @@ bool MessageQueue_Http_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST XENGINE_PROTOCOL_USERINFO** ppSt_UserInfo; DBModule_MQUser_UserList(&ppSt_UserInfo, &nListCount); ProtocolModule_Packet_UserList(tszPKTBuffer, &nPKTLen, &ppSt_UserInfo, nListCount); - BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_UserInfo, nListCount); + BaseLib_Memory_Free((XPPPMEM)&ppSt_UserInfo, nListCount); XEngine_MQXService_Send(lpszClientAddr, tszPKTBuffer, nPKTLen, XENGINE_MQAPP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,发送的获取用户列表请求成功,获取到的用户列表个数:%d"), lpszClientAddr, nListCount); @@ -100,10 +100,10 @@ bool MessageQueue_Http_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST int nListCount = 0; XCHAR** pptszListAddr; - BaseLib_OperatorString_GetKeyValue(ppSt_ListUrl[2], _X("="), tszKey, tszValue); + BaseLib_String_GetKeyValue(ppSt_ListUrl[2], _X("="), tszKey, tszValue); SessionModule_Client_GetListAddr(&pptszListAddr, &nListCount, _ttxoi(tszValue)); ProtocolModule_Packet_OnlineList(tszPKTBuffer, &nPKTLen, &pptszListAddr, nListCount); - BaseLib_OperatorMemory_Free((XPPPMEM)&pptszListAddr, nListCount); + BaseLib_Memory_Free((XPPPMEM)&pptszListAddr, nListCount); XEngine_MQXService_Send(lpszClientAddr, tszPKTBuffer, nPKTLen, XENGINE_MQAPP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,发送的获取在线用户列表请求成功,获取到的列表个数:%d"), lpszClientAddr, nListCount); } @@ -116,14 +116,14 @@ bool MessageQueue_Http_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST XCHAR** ppszTableName; DBModule_MQData_ShowTable(&ppszTableName, &nListCount); ProtocolModule_Packet_TopicList(tszPKTBuffer, &nPKTLen, &ppszTableName, nListCount); - BaseLib_OperatorMemory_Free((XPPPMEM)&ppszTableName, nListCount); + BaseLib_Memory_Free((XPPPMEM)&ppszTableName, nListCount); XEngine_MQXService_Send(lpszClientAddr, tszPKTBuffer, nPKTLen, XENGINE_MQAPP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,发送的获取主题列表请求成功,获取到的主题列表个数:%d"), lpszClientAddr, nListCount); } else { int nDBCount = 0; - BaseLib_OperatorString_GetKeyValue(ppSt_ListUrl[2], _X("="), tszKey, tszValue); + BaseLib_String_GetKeyValue(ppSt_ListUrl[2], _X("="), tszKey, tszValue); DBModule_MQData_GetLeftCount(tszValue, 0, &nDBCount); ProtocolModule_Packet_TopicName(tszPKTBuffer, &nPKTLen, tszValue, nDBCount); XEngine_MQXService_Send(lpszClientAddr, tszPKTBuffer, nPKTLen, XENGINE_MQAPP_NETTYPE_HTTP); diff --git a/XEngine_Source/XEngine_MQServiceApp/MQService_MQTTTask.cpp b/XEngine_Source/XEngine_MQServiceApp/MQService_MQTTTask.cpp index a0fd4b1..0e84c1c 100644 --- a/XEngine_Source/XEngine_MQServiceApp/MQService_MQTTTask.cpp +++ b/XEngine_Source/XEngine_MQServiceApp/MQService_MQTTTask.cpp @@ -25,17 +25,17 @@ XHTHREAD CALLBACK MessageQueue_MQTTThread(XPVOID lParam) if (MQTTProtocol_Parse_Recv(ppSst_ListAddr[i]->tszClientAddr, &st_MQTTHdr, &ptszMSGBuffer, &nMSGLen)) { MQService_MQTT_Handle(ppSst_ListAddr[i]->tszClientAddr, &st_MQTTHdr, ptszMSGBuffer, nMSGLen); - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMSGBuffer); + BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer); } } } - BaseLib_OperatorMemory_Free((XPPPMEM)&ppSst_ListAddr, nListCount); + BaseLib_Memory_Free((XPPPMEM)&ppSst_ListAddr, nListCount); } return 0; } void Packet_Property(MQTTPROTOCOL_HDRPROPERTY*** pppSt_HDRProperty, int nListCount) { - BaseLib_OperatorMemory_Malloc((XPPPMEM)pppSt_HDRProperty, nListCount, sizeof(MQTTPROTOCOL_HDRPROPERTY)); + BaseLib_Memory_Malloc((XPPPMEM)pppSt_HDRProperty, nListCount, sizeof(MQTTPROTOCOL_HDRPROPERTY)); (*pppSt_HDRProperty)[0]->nProLen = 4; (*pppSt_HDRProperty)[0]->st_unValue.nValue = 1024000; @@ -87,7 +87,7 @@ bool MQService_MQTT_Handle(LPCXSTR lpszClientAddr, MQTTPROTOCOL_FIXEDHEADER* pSt XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("MQTT客户端:%s,请求链接失败,错误码:%lX"), lpszClientAddr, MQTTProtocol_GetLastError()); return false; } - BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_HDRProperty, nListCount); + BaseLib_Memory_Free((XPPPMEM)&ppSt_HDRProperty, nListCount); XENGINE_PROTOCOLHDR st_ProtocolHdr = {}; XENGINE_PROTOCOL_USERAUTH st_ProtocolAuth = {}; diff --git a/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp b/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp index 34ce1d5..6f93157 100644 --- a/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp +++ b/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp @@ -26,11 +26,11 @@ XHTHREAD CALLBACK MessageQueue_TCPThread(XPVOID lParam) if (HelpComponents_Datas_GetMemoryEx(xhTCPPacket, ppSst_ListAddr[i]->tszClientAddr, &ptszMsgBuffer, &nMsgLen, &st_ProtocolHdr)) { MessageQueue_TCP_Handle(&st_ProtocolHdr, ppSst_ListAddr[i]->tszClientAddr, ptszMsgBuffer, nMsgLen, XENGINE_MQAPP_NETTYPE_TCP); - BaseLib_OperatorMemory_FreeCStyle((VOID**)&ptszMsgBuffer); + BaseLib_Memory_FreeCStyle((VOID**)&ptszMsgBuffer); } } } - BaseLib_OperatorMemory_Free((XPPPMEM)&ppSst_ListAddr, nListCount); + BaseLib_Memory_Free((XPPPMEM)&ppSst_ListAddr, nListCount); } return 0; } @@ -118,7 +118,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC return false; } ProtocolModule_Parse_Websocket(ptszSDBuffer, nSDLen, NULL, (XCHAR*)&st_UserInfo, &nRVLen); - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszSDBuffer); + BaseLib_Memory_FreeCStyle((XPPMEM)&ptszSDBuffer); } else { @@ -352,8 +352,8 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC time_t nTimeStart = time(NULL); time_t nTimeEnd = nTimeStart + st_MQProtocol.nKeepTime; - BaseLib_OperatorTimeSpan_CalForTime(nTimeStart, nTimeEnd, &st_LibTime); - BaseLib_OperatorTime_TimeToStr(st_DBQueue.tszQueueLeftTime, NULL, true, &st_LibTime); + BaseLib_TimeSpan_CalForTime(nTimeStart, nTimeEnd, &st_LibTime); + BaseLib_Time_TimeToStr(st_DBQueue.tszQueueLeftTime, NULL, true, &st_LibTime); } //处理序列号 if (st_DBQueue.nQueueSerial > 0) @@ -401,8 +401,8 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC st_DBTime.nIDTime = st_MQProtocol.nPubTime; _tcsxcpy(st_DBTime.tszQueueName, st_DBQueue.tszQueueName); - BaseLib_OperatorTime_TTimeToStuTime(st_MQProtocol.nPubTime, &st_LibTime); - BaseLib_OperatorTime_TimeToStr(st_DBQueue.tszQueuePublishTime, NULL, true, &st_LibTime); + BaseLib_Time_TTimeToStuTime(st_MQProtocol.nPubTime, &st_LibTime); + BaseLib_Time_TimeToStr(st_DBQueue.tszQueuePublishTime, NULL, true, &st_LibTime); DBModule_MQUser_TimeInsert(&st_DBTime); } else if (0 == st_MQProtocol.nPubTime) @@ -429,7 +429,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC SessionModule_Client_GetType(pptszListAddr[i], &nClientType); ProtocolModule_Packet_Common(nClientType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen, lpszMsgBuffer + sizeof(XENGINE_PROTOCOL_XMQ), nMsgLen - sizeof(XENGINE_PROTOCOL_XMQ)); XEngine_MQXService_Send(pptszListAddr[i], tszSDBuffer, nSDLen, nClientType); - BaseLib_OperatorMemory_Free((XPPPMEM)&pptszListAddr, nListCount); + BaseLib_Memory_Free((XPPPMEM)&pptszListAddr, nListCount); } } else @@ -477,7 +477,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC XEngine_MQXService_Send(tszUserAddr, tszSDBuffer, nSDLen, nClientType); } } - BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ListUser, nListCount); + BaseLib_Memory_Free((XPPPMEM)&ppSt_ListUser, nListCount); } } _xstprintf(st_DBQueue.tszQueuePublishTime, _X("0")); @@ -551,8 +551,8 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC //有过期时间,判断是否过期 __int64x nTimeRet = 0; XCHAR tszTimeStr[MAX_PATH] = {}; - BaseLib_OperatorTime_TimeToStr(tszTimeStr); - BaseLib_OperatorTimeSpan_GetForStr(st_MessageQueue.tszQueueLeftTime, tszTimeStr, &nTimeRet, 3); + BaseLib_Time_TimeToStr(tszTimeStr); + BaseLib_TimeSpan_GetForStr(st_MessageQueue.tszQueueLeftTime, tszTimeStr, &nTimeRet, 3); //如果超时并且不允许主动获取,返回错误 if ((nTimeRet < 0) && (1 != st_MSGAttr.byAttrActive)) { @@ -615,8 +615,8 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC XCHAR tszTimeEnd[128]; memset(tszTimeEnd, '\0', sizeof(tszTimeEnd)); - BaseLib_OperatorTime_TimeToStr(tszTimeEnd); - BaseLib_OperatorTimeSpan_GetForStr(st_MessageQueue.tszQueueLeftTime, tszTimeEnd, &nTimeDiff, 3); + BaseLib_Time_TimeToStr(tszTimeEnd); + BaseLib_TimeSpan_GetForStr(st_MessageQueue.tszQueueLeftTime, tszTimeEnd, &nTimeDiff, 3); if (nTimeDiff > 0) { st_UserKey.nKeySerial++; @@ -890,7 +890,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC time_t nTimeStart = time(NULL); time_t nTimeEnd = nTimeStart + st_MQProtocol.nKeepTime; - BaseLib_OperatorTimeSpan_CalForTime(nTimeStart, nTimeEnd, &st_LibTime); + BaseLib_TimeSpan_CalForTime(nTimeStart, nTimeEnd, &st_LibTime); _xstprintf(st_DBQueue.tszQueueLeftTime, _X("%04d-%02d-%02d %02d:%02d:%02d"), st_LibTime.wYear, st_LibTime.wMonth, st_LibTime.wDay, st_LibTime.wHour, st_LibTime.wMinute, st_LibTime.wSecond); } if (st_MQProtocol.nPubTime > 0) @@ -905,8 +905,8 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC st_DBTime.nIDTime = st_MQProtocol.nPubTime; _tcsxcpy(st_DBTime.tszQueueName, st_DBQueue.tszQueueName); - BaseLib_OperatorTime_TTimeToStuTime(st_MQProtocol.nPubTime, &st_LibTime); - BaseLib_OperatorTime_TimeToStr(st_DBQueue.tszQueuePublishTime, NULL, true, &st_LibTime); + BaseLib_Time_TTimeToStuTime(st_MQProtocol.nPubTime, &st_LibTime); + BaseLib_Time_TimeToStr(st_DBQueue.tszQueuePublishTime, NULL, true, &st_LibTime); DBModule_MQUser_TimeInsert(&st_DBTime); } if (!DBModule_MQData_Modify(&st_DBQueue)) @@ -940,7 +940,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC ProtocolModule_Packet_UNReadInsert(xhUNRead, ppSt_UserKey[i]->tszKeyName, nDBCount); } ProtocolModule_Packet_UNReadDelete(xhUNRead, tszSDBuffer, &nSDLen); - BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_UserKey, nListCount); + BaseLib_Memory_Free((XPPPMEM)&ppSt_UserKey, nListCount); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("%s消息端:%s,请求未读消息成功,用户名:%s,发送未读消息成功,发送的主题个数:%d"), lpszClientType, lpszClientAddr, tszUserName, nListCount); } diff --git a/XEngine_Source/XEngine_MQServiceApp/MQService_Task.cpp b/XEngine_Source/XEngine_MQServiceApp/MQService_Task.cpp index d70bfcb..dd2f223 100644 --- a/XEngine_Source/XEngine_MQServiceApp/MQService_Task.cpp +++ b/XEngine_Source/XEngine_MQServiceApp/MQService_Task.cpp @@ -47,7 +47,7 @@ void CALLBACK MessageQueue_CBTask_TimePublish(XENGINE_DBTIMERELEASE* pSt_DBInfo, ProtocolModule_Packet_Common(nNetType, &st_ProtocolHdr, &st_MQProtocol, tszMsgBuffer, &nMsgLen, st_DBInfo.tszMsgBuffer, st_DBInfo.nMsgLen); XEngine_MQXService_Send(tszUserAddr, tszMsgBuffer, nMsgLen, nNetType); } - BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ListUser, nListCount); + BaseLib_Memory_Free((XPPPMEM)&ppSt_ListUser, nListCount); if (st_DBConfig.st_MQUser.st_UserTime.bPubClear) { diff --git a/XEngine_Source/XEngine_MQServiceApp/MQService_WSTask.cpp b/XEngine_Source/XEngine_MQServiceApp/MQService_WSTask.cpp index 9c58b05..e85eeda 100644 --- a/XEngine_Source/XEngine_MQServiceApp/MQService_WSTask.cpp +++ b/XEngine_Source/XEngine_MQServiceApp/MQService_WSTask.cpp @@ -24,11 +24,11 @@ XHTHREAD CALLBACK MessageQueue_WebsocketThread(XPVOID lParam) if (RfcComponents_WSPacket_GetMemoryEx(xhWSPacket, ppSst_ListAddr[i]->tszClientAddr, &ptszMsgBuffer, &nMsgLen, &enOPCode)) { MessageQueue_Websocket_Handle(ppSst_ListAddr[i]->tszClientAddr, ptszMsgBuffer, nMsgLen, enOPCode); - BaseLib_OperatorMemory_FreeCStyle((VOID**)&ptszMsgBuffer); + BaseLib_Memory_FreeCStyle((VOID**)&ptszMsgBuffer); } } } - BaseLib_OperatorMemory_Free((XPPPMEM)&ppSst_ListAddr, nListCount); + BaseLib_Memory_Free((XPPPMEM)&ppSst_ListAddr, nListCount); } return 0; } diff --git a/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp b/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp index d5a0f4b..7fc1e47 100644 --- a/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp +++ b/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp @@ -91,7 +91,7 @@ LONG WINAPI Coredump_ExceptionFilter(EXCEPTION_POINTERS* pExceptionPointers) static int i = 0; XCHAR tszFileStr[MAX_PATH] = {}; XCHAR tszTimeStr[128] = {}; - BaseLib_OperatorTime_TimeToStr(tszTimeStr); + BaseLib_Time_TimeToStr(tszTimeStr); _xstprintf(tszFileStr, _X("./XEngine_Coredump/dumpfile_%s_%d.dmp"), tszTimeStr, i++); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_FATAL, _X("主程序:软件崩溃,写入dump:%s"), tszFileStr); HANDLE hDumpFile = CreateFileA(tszFileStr, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); @@ -223,7 +223,7 @@ int main(int argc, char** argv) NetCore_TCPXCore_RegisterCallBackEx(xhTCPSocket, MessageQueue_Callback_TCPLogin, MessageQueue_Callback_TCPRecv, MessageQueue_Callback_TCPLeave); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,注册TCP网络事件成功")); //任务池 - BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_ListTCPParam, st_ServiceCfg.st_XMax.nTCPThread, sizeof(THREADPOOL_PARAMENT)); + BaseLib_Memory_Malloc((XPPPMEM)&ppSt_ListTCPParam, st_ServiceCfg.st_XMax.nTCPThread, sizeof(THREADPOOL_PARAMENT)); for (int i = 0; i < st_ServiceCfg.st_XMax.nTCPThread; i++) { int* pInt_Pos = new int; @@ -265,7 +265,7 @@ int main(int argc, char** argv) NetCore_TCPXCore_RegisterCallBackEx(xhHTTPSocket, MessageQueue_Callback_HttpLogin, MessageQueue_Callback_HttpRecv, MessageQueue_Callback_HttpLeave); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,注册HTTP网络事件成功")); - BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_ListHTTPParam, st_ServiceCfg.st_XMax.nHttpThread, sizeof(THREADPOOL_PARAMENT)); + BaseLib_Memory_Malloc((XPPPMEM)&ppSt_ListHTTPParam, st_ServiceCfg.st_XMax.nHttpThread, sizeof(THREADPOOL_PARAMENT)); for (int i = 0; i < st_ServiceCfg.st_XMax.nHttpThread; i++) { int* pInt_Pos = new int; @@ -307,7 +307,7 @@ int main(int argc, char** argv) NetCore_TCPXCore_RegisterCallBackEx(xhWSSocket, MessageQueue_Callback_WSLogin, MessageQueue_Callback_WSRecv, MessageQueue_Callback_WSLeave); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,注册Websocket网络事件成功")); - BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_ListWSParam, st_ServiceCfg.st_XMax.nWSThread, sizeof(THREADPOOL_PARAMENT)); + BaseLib_Memory_Malloc((XPPPMEM)&ppSt_ListWSParam, st_ServiceCfg.st_XMax.nWSThread, sizeof(THREADPOOL_PARAMENT)); for (int i = 0; i < st_ServiceCfg.st_XMax.nWSThread; i++) { int* pInt_Pos = new int; @@ -348,7 +348,7 @@ int main(int argc, char** argv) NetCore_TCPXCore_RegisterCallBackEx(xhMQTTSocket, MessageQueue_Callback_MQTTLogin, MessageQueue_Callback_MQTTRecv, MessageQueue_Callback_MQTTLeave); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,注册MQTT网络事件成功")); - BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_ListMQTTParam, st_ServiceCfg.st_XMax.nMQTTThread, sizeof(THREADPOOL_PARAMENT)); + BaseLib_Memory_Malloc((XPPPMEM)&ppSt_ListMQTTParam, st_ServiceCfg.st_XMax.nMQTTThread, sizeof(THREADPOOL_PARAMENT)); for (int i = 0; i < st_ServiceCfg.st_XMax.nMQTTThread; i++) { int* pInt_Pos = new int; @@ -394,7 +394,7 @@ int main(int argc, char** argv) XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,信息报告给API服务器没有启用")); } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("所有服务成功启动,服务运行中,XEngine版本:%s%s,发行版本次数:%d,当前运行版本:%s。。。"), BaseLib_OperatorVer_XNumberStr(), BaseLib_OperatorVer_XTypeStr(), st_ServiceCfg.st_XVer.pStl_ListStorage->size(), st_ServiceCfg.st_XVer.pStl_ListStorage->front().c_str()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("所有服务成功启动,服务运行中,XEngine版本:%s%s,发行版本次数:%d,当前运行版本:%s。。。"), BaseLib_Version_XNumberStr(), BaseLib_Version_XTypeStr(), st_ServiceCfg.st_XVer.pStl_ListStorage->size(), st_ServiceCfg.st_XVer.pStl_ListStorage->front().c_str()); while (true) { From c7ed9905f8ca0c8b5b7cf5307a5140b6cd2d3845 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 13 Jan 2025 15:59:43 +0800 Subject: [PATCH 06/29] update:xengine v9.10 --- .../XEngine_MQServiceApp/MQService_TCPTask.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp b/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp index 6f93157..ce35097 100644 --- a/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp +++ b/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp @@ -347,8 +347,8 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC if (st_MQProtocol.nKeepTime > 0) { - XENGINE_LIBTIMER st_LibTime; - memset(&st_LibTime, '\0', sizeof(XENGINE_LIBTIMER)); + XENGINE_LIBTIME st_LibTime; + memset(&st_LibTime, '\0', sizeof(XENGINE_LIBTIME)); time_t nTimeStart = time(NULL); time_t nTimeEnd = nTimeStart + st_MQProtocol.nKeepTime; @@ -392,10 +392,10 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC if (st_MQProtocol.nPubTime > 0) { XENGINE_DBTIMERELEASE st_DBTime; - XENGINE_LIBTIMER st_LibTime; + XENGINE_LIBTIME st_LibTime; memset(&st_DBTime, '\0', sizeof(XENGINE_DBTIMERELEASE)); - memset(&st_LibTime, '\0', sizeof(XENGINE_LIBTIMER)); + memset(&st_LibTime, '\0', sizeof(XENGINE_LIBTIME)); st_DBTime.nIDMsg = st_DBQueue.nQueueSerial; st_DBTime.nIDTime = st_MQProtocol.nPubTime; @@ -885,8 +885,8 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC if (st_MQProtocol.nKeepTime > 0) { - XENGINE_LIBTIMER st_LibTime; - memset(&st_LibTime, '\0', sizeof(XENGINE_LIBTIMER)); + XENGINE_LIBTIME st_LibTime; + memset(&st_LibTime, '\0', sizeof(XENGINE_LIBTIME)); time_t nTimeStart = time(NULL); time_t nTimeEnd = nTimeStart + st_MQProtocol.nKeepTime; @@ -896,10 +896,10 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC if (st_MQProtocol.nPubTime > 0) { XENGINE_DBTIMERELEASE st_DBTime; - XENGINE_LIBTIMER st_LibTime; + XENGINE_LIBTIME st_LibTime; memset(&st_DBTime, '\0', sizeof(XENGINE_DBTIMERELEASE)); - memset(&st_LibTime, '\0', sizeof(XENGINE_LIBTIMER)); + memset(&st_LibTime, '\0', sizeof(XENGINE_LIBTIME)); st_DBTime.nIDMsg = st_DBQueue.nQueueSerial; st_DBTime.nIDTime = st_MQProtocol.nPubTime; From 3dd53099555b2cdaa3a9616251177238539eacf2 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 13 Jan 2025 16:06:11 +0800 Subject: [PATCH 07/29] modify:change ansi to unicode character set on vs --- XEngine_Source/MQCore_ConfigModule/Config_Define.h | 2 +- .../MQCore_ConfigModule/Config_Json/Config_Json.cpp | 2 +- .../MQCore_ConfigModule/MQCore_ConfigModule.vcxproj | 8 ++++---- XEngine_Source/MQCore_ConfigModule/pch.h | 5 ----- .../MQCore_DBModule/MQCore_DBModule.vcxproj | 8 ++++---- .../MQCore_ProtocolModule.vcxproj | 8 ++++---- .../MQCore_SessionModule.vcxproj | 8 ++++---- .../SessionModule_Client/SessionModule_Client.cpp | 12 ++++++------ .../SessionModule_Client/SessionModule_Client.h | 2 +- XEngine_Source/MQCore_SessionModule/pch.h | 5 ----- XEngine_Source/XEngine_MQServiceApp/MQService_Hdr.h | 5 ----- .../XEngine_MQServiceApp.vcxproj | 6 +++--- 12 files changed, 28 insertions(+), 43 deletions(-) diff --git a/XEngine_Source/MQCore_ConfigModule/Config_Define.h b/XEngine_Source/MQCore_ConfigModule/Config_Define.h index 9636b4c..38b0ed2 100644 --- a/XEngine_Source/MQCore_ConfigModule/Config_Define.h +++ b/XEngine_Source/MQCore_ConfigModule/Config_Define.h @@ -70,7 +70,7 @@ typedef struct }st_XReport; struct { - list *pStl_ListStorage; + list *pStl_ListStorage; }st_XVer; }XENGINE_SERVERCONFIG; typedef struct diff --git a/XEngine_Source/MQCore_ConfigModule/Config_Json/Config_Json.cpp b/XEngine_Source/MQCore_ConfigModule/Config_Json/Config_Json.cpp index 7cf026c..ba4acaf 100644 --- a/XEngine_Source/MQCore_ConfigModule/Config_Json/Config_Json.cpp +++ b/XEngine_Source/MQCore_ConfigModule/Config_Json/Config_Json.cpp @@ -196,7 +196,7 @@ bool CConfig_Json::Config_Json_VersionFile(LPCXSTR lpszConfigFile, XENGINE_SERVE return false; } Json::Value st_JsonXVer = st_JsonRoot["XVer"]; - pSt_ServerConfig->st_XVer.pStl_ListStorage = new list; + pSt_ServerConfig->st_XVer.pStl_ListStorage = new list; for (unsigned int i = 0; i < st_JsonXVer.size(); i++) { diff --git a/XEngine_Source/MQCore_ConfigModule/MQCore_ConfigModule.vcxproj b/XEngine_Source/MQCore_ConfigModule/MQCore_ConfigModule.vcxproj index ef7a5b3..2abc357 100644 --- a/XEngine_Source/MQCore_ConfigModule/MQCore_ConfigModule.vcxproj +++ b/XEngine_Source/MQCore_ConfigModule/MQCore_ConfigModule.vcxproj @@ -30,27 +30,27 @@ DynamicLibrary true v143 - MultiByte + Unicode DynamicLibrary false v143 true - MultiByte + Unicode DynamicLibrary true v143 - MultiByte + Unicode DynamicLibrary false v143 true - MultiByte + Unicode diff --git a/XEngine_Source/MQCore_ConfigModule/pch.h b/XEngine_Source/MQCore_ConfigModule/pch.h index f12d4d6..bcb0ee5 100644 --- a/XEngine_Source/MQCore_ConfigModule/pch.h +++ b/XEngine_Source/MQCore_ConfigModule/pch.h @@ -24,11 +24,6 @@ using namespace std; #include #include -#ifdef _UNICODE -typedef std::wstring tstring; -#else -typedef std::string tstring; -#endif #include "Config_Define.h" #include "Config_Error.h" /******************************************************************** diff --git a/XEngine_Source/MQCore_DBModule/MQCore_DBModule.vcxproj b/XEngine_Source/MQCore_DBModule/MQCore_DBModule.vcxproj index ff6d359..1a8517b 100644 --- a/XEngine_Source/MQCore_DBModule/MQCore_DBModule.vcxproj +++ b/XEngine_Source/MQCore_DBModule/MQCore_DBModule.vcxproj @@ -30,27 +30,27 @@ DynamicLibrary true v143 - MultiByte + Unicode DynamicLibrary false v143 true - MultiByte + Unicode DynamicLibrary true v143 - MultiByte + Unicode DynamicLibrary false v143 true - MultiByte + Unicode diff --git a/XEngine_Source/MQCore_ProtocolModule/MQCore_ProtocolModule.vcxproj b/XEngine_Source/MQCore_ProtocolModule/MQCore_ProtocolModule.vcxproj index 77a2213..fd96ff1 100644 --- a/XEngine_Source/MQCore_ProtocolModule/MQCore_ProtocolModule.vcxproj +++ b/XEngine_Source/MQCore_ProtocolModule/MQCore_ProtocolModule.vcxproj @@ -30,27 +30,27 @@ DynamicLibrary true v143 - MultiByte + Unicode DynamicLibrary false v143 true - MultiByte + Unicode DynamicLibrary true v143 - MultiByte + Unicode DynamicLibrary false v143 true - MultiByte + Unicode diff --git a/XEngine_Source/MQCore_SessionModule/MQCore_SessionModule.vcxproj b/XEngine_Source/MQCore_SessionModule/MQCore_SessionModule.vcxproj index 31c065f..0f67398 100644 --- a/XEngine_Source/MQCore_SessionModule/MQCore_SessionModule.vcxproj +++ b/XEngine_Source/MQCore_SessionModule/MQCore_SessionModule.vcxproj @@ -30,27 +30,27 @@ DynamicLibrary true v143 - MultiByte + Unicode DynamicLibrary false v143 true - MultiByte + Unicode DynamicLibrary true v143 - MultiByte + Unicode DynamicLibrary false v143 true - MultiByte + Unicode diff --git a/XEngine_Source/MQCore_SessionModule/SessionModule_Client/SessionModule_Client.cpp b/XEngine_Source/MQCore_SessionModule/SessionModule_Client/SessionModule_Client.cpp index f06a25b..493de2c 100644 --- a/XEngine_Source/MQCore_SessionModule/SessionModule_Client/SessionModule_Client.cpp +++ b/XEngine_Source/MQCore_SessionModule/SessionModule_Client/SessionModule_Client.cpp @@ -115,7 +115,7 @@ bool CSessionModule_Client::SessionModule_Client_Delete(LPCXSTR lpszClientAddr) Session_IsErrorOccur = false; st_Locker.lock(); - unordered_map::iterator stl_MapIterator = stl_MapSession.find(lpszClientAddr); + unordered_map::iterator stl_MapIterator = stl_MapSession.find(lpszClientAddr); if (stl_MapIterator != stl_MapSession.end()) { stl_MapSession.erase(stl_MapIterator); @@ -183,7 +183,7 @@ bool CSessionModule_Client::SessionModule_Client_GetUser(LPCXSTR lpszSessionStr, return false; } st_Locker.lock_shared(); - unordered_map::iterator stl_MapIterator = stl_MapSession.find(lpszSessionStr); + unordered_map::iterator stl_MapIterator = stl_MapSession.find(lpszSessionStr); if (stl_MapIterator == stl_MapSession.end()) { Session_IsErrorOccur = true; @@ -328,7 +328,7 @@ bool CSessionModule_Client::SessionModule_Client_GetType(LPCXSTR lpszSessionStr, return false; } st_Locker.lock_shared(); - unordered_map::iterator stl_MapIterator = stl_MapSession.find(lpszSessionStr); + unordered_map::iterator stl_MapIterator = stl_MapSession.find(lpszSessionStr); if (stl_MapIterator == stl_MapSession.end()) { Session_IsErrorOccur = true; @@ -373,7 +373,7 @@ bool CSessionModule_Client::SessionModule_Client_GetExist(LPCXSTR lpszClientAddr if (NULL == lpszClientAddr) { bool bFound = false; - unordered_map::iterator stl_MapIterator = stl_MapSession.begin(); + unordered_map::iterator stl_MapIterator = stl_MapSession.begin(); for (int i = 0; stl_MapIterator != stl_MapSession.end(); stl_MapIterator++, i++) { if (0 == _tcsxnicmp(lpszClientUser, stl_MapIterator->second.st_UserInfo.tszUserName, _tcsxlen(stl_MapIterator->second.st_UserInfo.tszUserName))) @@ -392,7 +392,7 @@ bool CSessionModule_Client::SessionModule_Client_GetExist(LPCXSTR lpszClientAddr } else { - unordered_map::iterator stl_MapIterator = stl_MapSession.find(lpszClientAddr); + unordered_map::iterator stl_MapIterator = stl_MapSession.find(lpszClientAddr); if (stl_MapIterator == stl_MapSession.end()) { Session_IsErrorOccur = true; @@ -435,7 +435,7 @@ bool CSessionModule_Client::SessionModule_Client_GetListAddr(XCHAR*** ppptszClie BaseLib_Memory_Malloc((XPPPMEM)ppptszClientList, stl_MapSession.size(), 128); st_Locker.lock_shared(); - unordered_map::iterator stl_MapIterator = stl_MapSession.begin(); + unordered_map::iterator stl_MapIterator = stl_MapSession.begin(); for (int i = 0; stl_MapIterator != stl_MapSession.end(); stl_MapIterator++, i++) { if (bAddr) diff --git a/XEngine_Source/MQCore_SessionModule/SessionModule_Client/SessionModule_Client.h b/XEngine_Source/MQCore_SessionModule/SessionModule_Client/SessionModule_Client.h index 6eef537..11a8e5a 100644 --- a/XEngine_Source/MQCore_SessionModule/SessionModule_Client/SessionModule_Client.h +++ b/XEngine_Source/MQCore_SessionModule/SessionModule_Client/SessionModule_Client.h @@ -38,5 +38,5 @@ class CSessionModule_Client private: shared_mutex st_Locker; private: - unordered_map stl_MapSession; + unordered_map stl_MapSession; }; diff --git a/XEngine_Source/MQCore_SessionModule/pch.h b/XEngine_Source/MQCore_SessionModule/pch.h index d4db086..4ee3705 100644 --- a/XEngine_Source/MQCore_SessionModule/pch.h +++ b/XEngine_Source/MQCore_SessionModule/pch.h @@ -29,11 +29,6 @@ #include "Session_Define.h" #include "Session_Error.h" using namespace std; -#ifdef _UNICODE -typedef std::wstring tstring; -#else -typedef std::string tstring; -#endif /******************************************************************** // Created: 2021/07/02 10:16:47 // File Name: D:\XEngine_MQService\XEngine_Source\MQCore_SessionModule\pch.h diff --git a/XEngine_Source/XEngine_MQServiceApp/MQService_Hdr.h b/XEngine_Source/XEngine_MQServiceApp/MQService_Hdr.h index e9113e9..7caae34 100644 --- a/XEngine_Source/XEngine_MQServiceApp/MQService_Hdr.h +++ b/XEngine_Source/XEngine_MQServiceApp/MQService_Hdr.h @@ -45,11 +45,6 @@ using namespace std; #include "../XEngine_Depend/XEngine_Module/XEngine_InfoReport/InfoReport_Define.h" #include "../XEngine_Depend/XEngine_Module/XEngine_InfoReport/InfoReport_Error.h" -#ifdef _UNICODE -typedef std::wstring tstring; -#else -typedef std::string tstring; -#endif #include "../XQueue_ProtocolHdr.h" #include "../MQCore_ConfigModule/Config_Define.h" #include "../MQCore_ConfigModule/Config_Error.h" diff --git a/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.vcxproj b/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.vcxproj index 02d9042..f41e924 100644 --- a/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.vcxproj +++ b/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.vcxproj @@ -37,20 +37,20 @@ false v143 true - MultiByte + Unicode Application true v143 - MultiByte + Unicode Application false v143 true - MultiByte + Unicode From ab2c97b6e8f02fe798549f0c62b3b74ddaf86981 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 15 Jan 2025 10:18:35 +0800 Subject: [PATCH 08/29] Create codeql.yml --- .github/workflows/codeql.yml | 61 ++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 .github/workflows/codeql.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000..8ad6c2a --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,61 @@ +name: "CodeQL Advanced" + +on: + push: + branches: [ "develop" ] + +jobs: + analyze: + name: Analyze (${{ matrix.language }}) + runs-on: ubuntu-latest + permissions: + # required for all workflows + security-events: write + # required to fetch internal or private CodeQL packs + packages: read + # only required for workflows in private repositories + actions: read + contents: read + + strategy: + fail-fast: false + matrix: + include: + - language: c-cpp + build-mode: autobuild + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + build-mode: ${{ matrix.build-mode }} + + - name: Checkout dependency repository (xengine) + uses: actions/checkout@v4 + with: + repository: libxengine/libxengine + path: libxengine + + - name: sub module checkout (opensource) + run: | + git submodule init + git submodule update + + - name: Set up Dependency Environment + run: | + cd libxengine + chmod 777 * + sudo ./XEngine_LINEnv.sh -i 3 + + - name: make + run: | + cd XEngine_Source + make + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 + with: + category: "/language:${{matrix.language}}" From 64cdc246f0da113c79d9dd2f735a2d330d2e4785 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 15 Jan 2025 10:30:46 +0800 Subject: [PATCH 09/29] ci:codeql --- .github/workflows/codeql.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 8ad6c2a..d06e392 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -2,11 +2,11 @@ name: "CodeQL Advanced" on: push: - branches: [ "develop" ] + branches: + - 'develop' jobs: analyze: - name: Analyze (${{ matrix.language }}) runs-on: ubuntu-latest permissions: # required for all workflows @@ -50,10 +50,10 @@ jobs: chmod 777 * sudo ./XEngine_LINEnv.sh -i 3 - - name: make - run: | - cd XEngine_Source - make + - name: make + run: | + cd XEngine_Source + make - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 From 3d4b14ef7518e0e4d71e6b6103c42eb666024fe4 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 15 Jan 2025 10:41:19 +0800 Subject: [PATCH 10/29] ci:code ql test --- .github/workflows/codeql.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index d06e392..9a33e2f 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -22,16 +22,9 @@ jobs: matrix: include: - language: c-cpp - build-mode: autobuild steps: - name: Checkout repository uses: actions/checkout@v4 - - - name: Initialize CodeQL - uses: github/codeql-action/init@v3 - with: - languages: ${{ matrix.language }} - build-mode: ${{ matrix.build-mode }} - name: Checkout dependency repository (xengine) uses: actions/checkout@v4 @@ -50,6 +43,11 @@ jobs: chmod 777 * sudo ./XEngine_LINEnv.sh -i 3 + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + - name: make run: | cd XEngine_Source From aa1e4189474196ef4f742b275f42a63415f7a0e7 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 15 Jan 2025 10:59:33 +0800 Subject: [PATCH 11/29] ci:add cpp check --- .github/workflows/codeql.yml | 2 +- .github/workflows/cppcheck.yml | 35 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/cppcheck.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 9a33e2f..0d03e85 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -3,7 +3,7 @@ name: "CodeQL Advanced" on: push: branches: - - 'develop' + - 'develop1' jobs: analyze: diff --git a/.github/workflows/cppcheck.yml b/.github/workflows/cppcheck.yml new file mode 100644 index 0000000..279b03f --- /dev/null +++ b/.github/workflows/cppcheck.yml @@ -0,0 +1,35 @@ +name: cpp check workflows + +on: + push: + branches: + - 'develop' + paths: + - 'XEngine_Source/**' + - 'XEngine_Release/**' + - '.github/**' + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout main repository code + uses: actions/checkout@v4 + with: + ref: 'develop' + + - name: Create static_analysis directory + run: mkdir -p static_analysis + + - name: Run Cppcheck + run: | + sudo apt-get install -y cppcheck + cppcheck --enable=all --language=c++ --std=c++20 ./XEngine_Source/ --output-file=static_analysis/log.xml --xml + continue-on-error: true + + - name: Upload Cppcheck Results + uses: actions/upload-artifact@v4 + with: + name: cppcheck_results + path: static_analysis/log.xml \ No newline at end of file From 92036f8309a61108e7ba9d8496d867f2e89fe63a Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 15 Jan 2025 15:21:56 +0800 Subject: [PATCH 12/29] ci:add codeql.yml --- .github/workflows/codeql.yml | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 0d03e85..1716d18 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,19 +1,20 @@ -name: "CodeQL Advanced" +name: CodeQL Advanced on: push: branches: - - 'develop1' + - 'develop' + paths: + - 'XEngine_Source/**' + - 'XEngine_Release/**' + - '.github/**' jobs: analyze: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 permissions: - # required for all workflows security-events: write - # required to fetch internal or private CodeQL packs packages: read - # only required for workflows in private repositories actions: read contents: read @@ -25,7 +26,9 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - + with: + ref: 'develop' + - name: Checkout dependency repository (xengine) uses: actions/checkout@v4 with: @@ -40,7 +43,7 @@ jobs: - name: Set up Dependency Environment run: | cd libxengine - chmod 777 * + chmod +x ./XEngine_LINEnv.sh sudo ./XEngine_LINEnv.sh -i 3 - name: Initialize CodeQL @@ -56,4 +59,4 @@ jobs: - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 with: - category: "/language:${{matrix.language}}" + category: "/language:${{ matrix.language }}" From 87c0b339749972dbdb62195bf5b4d79b6acd6802 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 16 Jan 2025 11:46:46 +0800 Subject: [PATCH 13/29] modify:msg protocol define value. --- .../MQService_TCPTask.cpp | 4 +-- XEngine_Source/XQueue_ProtocolHdr.h | 34 ++++++++++--------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp b/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp index ce35097..8b36da7 100644 --- a/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp +++ b/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp @@ -870,7 +870,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("%s消息端:%s,修改主题名称成功,原名称:%s,目标名:%s"), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey, st_MQTopic.tszMQKey); } - else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQMSGMODIFY == pSt_ProtocolHdr->unOperatorCode) + else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQMODIFY == pSt_ProtocolHdr->unOperatorCode) { XENGINE_DBMESSAGEQUEUE st_DBQueue; memset(&st_DBQueue, '\0', sizeof(XENGINE_DBMESSAGEQUEUE)); @@ -918,7 +918,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC return false; } pSt_ProtocolHdr->wReserve = 0; - pSt_ProtocolHdr->unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPMSGMODIFY; + pSt_ProtocolHdr->unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPMODIFY; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); diff --git a/XEngine_Source/XQueue_ProtocolHdr.h b/XEngine_Source/XQueue_ProtocolHdr.h index eebd61f..60034be 100644 --- a/XEngine_Source/XQueue_ProtocolHdr.h +++ b/XEngine_Source/XQueue_ProtocolHdr.h @@ -22,22 +22,24 @@ #define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPPOST 0x7001 //投递包回复 #define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQGET 0x7002 //获取包请求 #define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPGET 0x7003 //获取包回复 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQNUMBER 0x7004 //请求消息队列编号信息 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPNUMBER 0x7005 //回复 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQUNREAD 0x7006 //请求未读消息 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPUNREAD 0x7007 //响应未读消息 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQTOPICCREATE 0x7010 //主题创建请求 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPTOPICCREATE 0x7011 //主题创建回复 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQTOPICDELETE 0x7012 //主题删除请求 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPTOPICDELETE 0x7013 //主题删除回复 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQTOPICMODIFY 0x7014 //主题名修改请求 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPTOPICMODIFY 0x7015 //主题名修改回复 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQTOPICBIND 0x7016 //请求主题绑定操作 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPTOPICBIND 0x7017 //回复 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQTOPICUNBIND 0x7018 //请求主题解绑操作 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPTOPICUNBIND 0x7019 //回复 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQMSGMODIFY 0x7020 //消息修改请求 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPMSGMODIFY 0x7021 //消息修改回复 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQDELETE 0x7004 //消息删除请求 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPDELETE 0x7005 //消息删除回复 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQMODIFY 0x7006 //消息修改请求 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPMODIFY 0x7007 //消息修改回复 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQNUMBER 0x7008 //请求消息队列编号信息 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPNUMBER 0x7009 //回复 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQUNREAD 0x7010 //请求未读消息 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPUNREAD 0x7011 //响应未读消息 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQTOPICCREATE 0x7100 //主题创建请求 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPTOPICCREATE 0x7101 //主题创建回复 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQTOPICDELETE 0x7102 //主题删除请求 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPTOPICDELETE 0x7103 //主题删除回复 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQTOPICMODIFY 0x7104 //主题名修改请求 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPTOPICMODIFY 0x7105 //主题名修改回复 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQTOPICBIND 0x7106 //请求主题绑定操作 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPTOPICBIND 0x7107 //回复 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQTOPICUNBIND 0x7108 //请求主题解绑操作 +#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPTOPICUNBIND 0x7109 //回复 //用户协议 #define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQUSERLOG 0x7020 //用户登录 #define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPUSERLOG 0x7021 From b430cf6dc2d4960366e20507164af086dc86add5 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 16 Jan 2025 14:03:05 +0800 Subject: [PATCH 14/29] added:delete message support --- .../MQCore_DBModule/DBModule_Define.h | 14 +++++++ .../DBModule_MQData/DBModule_MQData.cpp | 40 +++++++++++++++++++ .../DBModule_MQData/DBModule_MQData.h | 1 + .../MQCore_DBModule/MQCore_DBModule.def | 1 + XEngine_Source/MQCore_DBModule/pch.cpp | 4 ++ .../MQService_TCPTask.cpp | 24 +++++++++++ 6 files changed, 84 insertions(+) diff --git a/XEngine_Source/MQCore_DBModule/DBModule_Define.h b/XEngine_Source/MQCore_DBModule/DBModule_Define.h index 7e1377e..f6d19c6 100644 --- a/XEngine_Source/MQCore_DBModule/DBModule_Define.h +++ b/XEngine_Source/MQCore_DBModule/DBModule_Define.h @@ -111,6 +111,20 @@ extern "C" bool DBModule_MQData_Destory(); *********************************************************************/ extern "C" bool DBModule_MQData_Insert(XENGINE_DBMESSAGEQUEUE * pSt_DBInfo); /******************************************************************** +函数名称:DBModule_MQData_Delete +函数功能:删除消息 + 参数.一:pSt_DBInfo + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要删除的消息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MQData_Delete(XENGINE_DBMESSAGEQUEUE* pSt_DBInfo); +/******************************************************************** 函数名称:DBModule_MQData_Query 函数功能:查询数据 参数.一:pSt_DBInfo diff --git a/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp b/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp index 4a3c2ce..d0a7924 100644 --- a/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp +++ b/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp @@ -145,6 +145,46 @@ bool CDBModule_MQData::DBModule_MQData_Insert(XENGINE_DBMESSAGEQUEUE* pSt_DBInfo return true; } /******************************************************************** +函数名称:DBModule_MQData_Delete +函数功能:删除消息 + 参数.一:pSt_DBInfo + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要删除的消息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MQData::DBModule_MQData_Delete(XENGINE_DBMESSAGEQUEUE* pSt_DBInfo) +{ + DBModule_IsErrorOccur = false; + + if (NULL == pSt_DBInfo) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = ERROR_XENGINE_MQCORE_DATABASE_PARAMENT; + return false; + } + XCHAR tszSQLStatement[10240]; + memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); + + _xstprintf(tszSQLStatement, _X("DELETE FROM `%s` WHERE tszQueueName = '%s' AND nQueueSerial = '%lld'"), pSt_DBInfo->tszQueueName, pSt_DBInfo->tszQueueName, pSt_DBInfo->nQueueSerial); + + if (!DataBase_MySQL_Execute(xhDBSQL, tszSQLStatement)) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = DataBase_GetLastError(); + return false; + } + if (m_bMemoryQuery) + { + MemoryCache_DBData_DataDelete(pSt_DBInfo); + } + return true; +} +/******************************************************************** 函数名称:DBModule_MQData_Query 函数功能:查询数据 参数.一:pSt_DBInfo diff --git a/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.h b/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.h index 18c696b..e61789c 100644 --- a/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.h +++ b/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.h @@ -20,6 +20,7 @@ class CDBModule_MQData bool DBModule_MQData_Init(DATABASE_MYSQL_CONNECTINFO* pSt_DBConnector, bool bMemoryQuery = true, bool bMemoryInsert = true); bool DBModule_MQData_Destory(); bool DBModule_MQData_Insert(XENGINE_DBMESSAGEQUEUE* pSt_DBInfo); + bool DBModule_MQData_Delete(XENGINE_DBMESSAGEQUEUE* pSt_DBInfo); bool DBModule_MQData_Query(XENGINE_DBMESSAGEQUEUE* pSt_DBInfo); bool DBModule_MQData_Modify(XENGINE_DBMESSAGEQUEUE* pSt_DBInfo); bool DBModule_MQData_GetSerial(LPCXSTR lpszName, __int64x* pInt_DBCount, XENGINE_DBMESSAGEQUEUE* pSt_DBStart, XENGINE_DBMESSAGEQUEUE* pSt_DBEnd); diff --git a/XEngine_Source/MQCore_DBModule/MQCore_DBModule.def b/XEngine_Source/MQCore_DBModule/MQCore_DBModule.def index eebc8cf..6600c8c 100644 --- a/XEngine_Source/MQCore_DBModule/MQCore_DBModule.def +++ b/XEngine_Source/MQCore_DBModule/MQCore_DBModule.def @@ -6,6 +6,7 @@ EXPORTS DBModule_MQData_Init DBModule_MQData_Destory DBModule_MQData_Insert + DBModule_MQData_Delete DBModule_MQData_Query DBModule_MQData_Modify DBModule_MQData_GetSerial diff --git a/XEngine_Source/MQCore_DBModule/pch.cpp b/XEngine_Source/MQCore_DBModule/pch.cpp index a2707e4..43db119 100644 --- a/XEngine_Source/MQCore_DBModule/pch.cpp +++ b/XEngine_Source/MQCore_DBModule/pch.cpp @@ -43,6 +43,10 @@ extern "C" bool DBModule_MQData_Insert(XENGINE_DBMESSAGEQUEUE * pSt_DBManage) { return m_DBData.DBModule_MQData_Insert(pSt_DBManage); } +extern "C" bool DBModule_MQData_Delete(XENGINE_DBMESSAGEQUEUE* pSt_DBInfo) +{ + return m_DBData.DBModule_MQData_Delete(pSt_DBInfo); +} extern "C" bool DBModule_MQData_Query(XENGINE_DBMESSAGEQUEUE * pSt_DBInfo) { return m_DBData.DBModule_MQData_Query(pSt_DBInfo); diff --git a/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp b/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp index 8b36da7..7ef4641 100644 --- a/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp +++ b/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp @@ -654,6 +654,30 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("%s消息端:%s,主题:%s,序列:%lld,获取消息数据成功,消息大小:%d"), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey, st_MessageQueue.nQueueSerial, st_MessageQueue.nMsgLen); } + else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQDELETE == pSt_ProtocolHdr->unOperatorCode) + { + XENGINE_DBMESSAGEQUEUE st_MessageQueue; + memset(&st_MessageQueue, '\0', sizeof(XENGINE_DBMESSAGEQUEUE)); + + pSt_ProtocolHdr->unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPDELETE; + if (st_MQProtocol.nSerial <= 0) + { + pSt_ProtocolHdr->wReserve = 722; + ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); + XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s消息端:%s,主题:%s,获取消息数据失败,获取指定消息序列:%lld 失败,错误:%lX"), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey, st_MQProtocol.nSerial, DBModule_GetLastError()); + return false; + } + st_MessageQueue.nQueueSerial = st_MQProtocol.nSerial; + _tcsxcpy(st_MessageQueue.tszQueueName, st_MQProtocol.tszMQKey); + DBModule_MQData_Delete(&st_MessageQueue); + + pSt_ProtocolHdr->wReserve = 0; + pSt_ProtocolHdr->byVersion = st_MessageQueue.byMsgType; + ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); + XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("%s消息端:%s,主题:%s,序列:%lld,删除消息数据成功"), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey, st_MessageQueue.nQueueSerial); + } else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQTOPICCREATE == pSt_ProtocolHdr->unOperatorCode) { pSt_ProtocolHdr->unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPTOPICCREATE; From a7f0cd49dd37ff83d1fddcdac5f201c460cd3bfb Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 16 Jan 2025 14:18:47 +0800 Subject: [PATCH 15/29] fixed:memory not delete old message when modify message --- .../MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp b/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp index d0a7924..01f1ab4 100644 --- a/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp +++ b/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp @@ -352,6 +352,7 @@ bool CDBModule_MQData::DBModule_MQData_Modify(XENGINE_DBMESSAGEQUEUE* pSt_DBInfo } if (m_bMemoryQuery) { + MemoryCache_DBData_DataDelete(pSt_DBInfo); MemoryCache_DBData_DataInsert(pSt_DBInfo); } return true; From 956f6ab0ec0f6811c37b3eabf63eb6813101cfa2 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 16 Jan 2025 14:51:29 +0800 Subject: [PATCH 16/29] update:Network error codes use a new method definition --- .../MQService_TCPTask.cpp | 58 +++++++++---------- XEngine_Source/XQueue_ProtocolHdr.h | 30 ++++++++++ 2 files changed, 59 insertions(+), 29 deletions(-) diff --git a/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp b/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp index 7ef4641..31a35b6 100644 --- a/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp +++ b/XEngine_Source/XEngine_MQServiceApp/MQService_TCPTask.cpp @@ -88,7 +88,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC if (SessionModule_Client_GetAddr(st_ProtocolAuth.tszUserName)) { - pSt_ProtocolHdr->wReserve = 700; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_AUTH_LOGGED; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, NULL, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s客户端:%s,请求登录到服务失败,因为用户已经登录了"), lpszClientType, lpszClientAddr); @@ -111,7 +111,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC APIClient_Http_Request(_X("POST"), st_ServiceCfg.st_XPass.tszPassLogin, tszSDBuffer, &nHTTPCode, &ptszSDBuffer, &nSDLen, NULL, NULL, &st_HTTPParament); if (200 != nHTTPCode) { - pSt_ProtocolHdr->wReserve = 701; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_AUTH_HTTP; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, NULL, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s客户端:%s,请求远程验证失败,HTTPCode:%d"), lpszClientType, lpszClientAddr, nHTTPCode); @@ -124,7 +124,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC { if (!DBModule_MQUser_UserQuery(&st_UserInfo)) { - pSt_ProtocolHdr->wReserve = 701; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_AUTH_USERPASS; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, NULL, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s客户端:%s,请求本地验证失败,用户或者密码不正确,错误:%lX"), lpszClientType, lpszClientAddr, SessionModule_GetLastError()); @@ -146,7 +146,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC if (!SessionModule_Client_GetUser(lpszClientAddr, tszUserName)) { - pSt_ProtocolHdr->wReserve = 711; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_AUTH_NOTLOGIN; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, NULL, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s客户端:%s,请求登出失败,用户没有登录"), lpszClientType, lpszClientAddr); @@ -201,7 +201,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC APIClient_Http_Request(_X("POST"), st_ServiceCfg.st_XPass.tszPassRegister, tszSDBuffer, &nHTTPCode, NULL, NULL, NULL, NULL, &st_HTTPParament); if (200 != nHTTPCode) { - pSt_ProtocolHdr->wReserve = 701; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_AUTH_APIREG; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, NULL, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s客户端:%s,请求远程注册失败,HTTPCode:%d"), lpszClientType, lpszClientAddr, nHTTPCode); @@ -212,7 +212,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC { if (DBModule_MQUser_UserQuery(&st_UserInfo)) { - pSt_ProtocolHdr->wReserve = 721; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_AUTH_EXISTED; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, NULL, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s客户端:%s,请求用户注册失败,用户已经存在,错误:%lX"), lpszClientType, lpszClientAddr, SessionModule_GetLastError()); @@ -220,7 +220,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC } if (!DBModule_MQUser_UserInsert(&st_UserInfo)) { - pSt_ProtocolHdr->wReserve = 722; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_AUTH_REGISTER; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, NULL, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s客户端:%s,请求用户注册失败,插入数据库失败,错误:%lX"), lpszClientType, lpszClientAddr, SessionModule_GetLastError()); @@ -266,7 +266,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC APIClient_Http_Request(_X("POST"), st_ServiceCfg.st_XPass.tszPassUNReg, tszSDBuffer, &nHTTPCode, NULL, NULL, NULL, NULL, &st_HTTPParament); if (200 != nHTTPCode) { - pSt_ProtocolHdr->wReserve = 701; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_AUTH_APIDEL; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, NULL, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s客户端:%s,请求远程注销失败,错误:%lX,HTTPCode:%d"), lpszClientType, lpszClientAddr, nHTTPCode); @@ -277,7 +277,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC { if (!DBModule_MQUser_UserDelete(&st_UserInfo)) { - pSt_ProtocolHdr->wReserve = 721; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_AUTH_DELETE; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, NULL, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s客户端:%s,请求用户删除失败,删除数据库失败,错误:%lX"), lpszClientType, lpszClientAddr, SessionModule_GetLastError()); @@ -311,7 +311,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC if (!SessionModule_Client_GetUser(lpszClientAddr, tszUserName)) { - pSt_ProtocolHdr->wReserve = 700; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_AUTH_NOTLOGIN; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s客户端:%s,请求失败,用户没有通过验证"), lpszClientType, lpszClientAddr); @@ -367,7 +367,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC //找到了返回错误 if (pSt_ProtocolHdr->byIsReply) { - pSt_ProtocolHdr->wReserve = 701; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_EXISTED; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); } @@ -492,7 +492,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC { if (pSt_ProtocolHdr->byIsReply) { - pSt_ProtocolHdr->wReserve = 702; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_INSERT; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); } @@ -524,7 +524,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC if (!DBModule_MQData_Query(&st_MessageQueue)) { - pSt_ProtocolHdr->wReserve = 722; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_MSGQUERY; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s消息端:%s,主题:%s,获取消息数据失败,获取指定消息序列:%lld 失败,错误:%lX"), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey, st_MQProtocol.nSerial, DBModule_GetLastError()); @@ -538,7 +538,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC { if (1 != st_MSGAttr.byAttrActive) { - pSt_ProtocolHdr->wReserve = 723; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_BELONG; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s消息端:%s,主题:%s,获取消息数据失败,获取指定消息序列:%lld 失败,错误:此消息不属于此用户"), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey, st_MQProtocol.nSerial); @@ -556,7 +556,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC //如果超时并且不允许主动获取,返回错误 if ((nTimeRet < 0) && (1 != st_MSGAttr.byAttrActive)) { - pSt_ProtocolHdr->wReserve = 724; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_TIMEOUT; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s消息端:%s,主题:%s,获取消息数据失败,获取指定消息序列:%lld 失败,错误:消息超时"), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey, st_MQProtocol.nSerial); @@ -568,7 +568,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC { if (1 != st_MSGAttr.byAttrActive) { - pSt_ProtocolHdr->wReserve = 725; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_PUBTIME; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s消息端:%s,主题:%s,获取消息数据失败,获取指定消息序列:%lld 失败,错误:此为定时发布任务"), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey, st_MQProtocol.nSerial); @@ -583,7 +583,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC _tcsxcpy(st_UserKey.tszUserName, tszUserName); if (!DBModule_MQUser_KeyQuery(&st_UserKey)) { - pSt_ProtocolHdr->wReserve = 723; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_KEYQUERY; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s消息端:%s,主题:%s,获取消息数据失败,获取绑定信息失败,错误:%lX"), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey, DBModule_GetLastError()); @@ -596,7 +596,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC _tcsxcpy(st_MessageQueue.tszQueueName, st_MQProtocol.tszMQKey); if (!DBModule_MQData_Query(&st_MessageQueue)) { - pSt_ProtocolHdr->wReserve = 724; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_MSGQUERY; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s消息端:%s,主题:%s,序列:%lld,获取消息数据失败,无法继续,错误:%lX"), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey, st_MQProtocol.nSerial, DBModule_GetLastError()); @@ -662,7 +662,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC pSt_ProtocolHdr->unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPDELETE; if (st_MQProtocol.nSerial <= 0) { - pSt_ProtocolHdr->wReserve = 722; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_SERIAL; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s消息端:%s,主题:%s,获取消息数据失败,获取指定消息序列:%lld 失败,错误:%lX"), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey, st_MQProtocol.nSerial, DBModule_GetLastError()); @@ -686,7 +686,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC { if (pSt_ProtocolHdr->byIsReply) { - pSt_ProtocolHdr->wReserve = 751; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_CREATEKEY; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); } @@ -704,7 +704,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC { if (pSt_ProtocolHdr->byIsReply) { - pSt_ProtocolHdr->wReserve = 752; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_BINDOWNER; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); } @@ -741,7 +741,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC { if (pSt_ProtocolHdr->byIsReply) { - pSt_ProtocolHdr->wReserve = 761; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_DELOWNER; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); } @@ -777,7 +777,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC st_Userkey.nKeySerial = st_MQProtocol.nSerial; if (!DBModule_MQUser_KeyUPDate(&st_Userkey)) { - pSt_ProtocolHdr->wReserve = 710; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_KEYUP; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s消息端:%s,设置消息队列主题更新失败,主题名称:%s,序列号:%lld,错误:%lX"), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey, st_MQProtocol.nSerial, DBModule_GetLastError()); @@ -790,7 +790,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC st_Userkey.nKeySerial = st_MQProtocol.nSerial; if (!DBModule_MQUser_KeyInsert(&st_Userkey)) { - pSt_ProtocolHdr->wReserve = 711; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_BINDKEY; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s消息端:%s,设置消息队列主题创建失败,主题名称:%s,序列号:%lld,错误:%lX"), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey, st_MQProtocol.nSerial, DBModule_GetLastError()); @@ -814,7 +814,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC if (!DBModule_MQUser_KeyDelete(&st_Userkey)) { - pSt_ProtocolHdr->wReserve = 721; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_DELKEY; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s消息端:%s,解除消息绑定订阅失败,可能没有找到主题用户,主题名称:%s,用户名称:%s,错误:%lX"), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey, tszUserName, DBModule_GetLastError()); @@ -835,7 +835,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC memset(&st_MQNumber, '\0', sizeof(XENGINE_MQNUMBER)); if (!DBModule_MQData_GetSerial(st_MQProtocol.tszMQKey, &st_MQNumber.nCount, &st_DBStart, &st_DBEnd)) { - pSt_ProtocolHdr->wReserve = 741; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_SERIAL; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s消息端:%s,获取消息队列序列属性失败,主题名称:%s,序列号:%lld,错误:%lX"), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey, st_MQProtocol.nKeepTime == 1 ? "顺序" : "倒序", st_MQProtocol.nSerial, DBModule_GetLastError()); @@ -869,7 +869,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC { if (pSt_ProtocolHdr->byIsReply) { - pSt_ProtocolHdr->wReserve = 781; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_QUERYOWNER; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); } @@ -879,7 +879,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC //修改主题 if (!DBModule_MQData_ModifyTable(st_MQProtocol.tszMQKey, st_MQTopic.tszMQKey)) { - pSt_ProtocolHdr->wReserve = 782; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_MODIFYTOPIC; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s消息端:%s,修改主题名称失败,原名称:%s,目标名:%s,错误:%lX"), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey, st_MQTopic.tszMQKey, DBModule_GetLastError()); @@ -935,7 +935,7 @@ bool MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR lpszC } if (!DBModule_MQData_Modify(&st_DBQueue)) { - pSt_ProtocolHdr->wReserve = 791; + pSt_ProtocolHdr->wReserve = ERROR_XENGINE_MESSAGE_XMQ_MODIFYMSG; ProtocolModule_Packet_Common(nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen); XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("%s消息端:%s,修改消息:%s,序列号:%lld,失败,错误:%lX"), lpszClientType, lpszClientAddr, st_DBQueue.tszQueueName, st_DBQueue.nQueueSerial, DBModule_GetLastError()); diff --git a/XEngine_Source/XQueue_ProtocolHdr.h b/XEngine_Source/XQueue_ProtocolHdr.h index 60034be..d03b55f 100644 --- a/XEngine_Source/XQueue_ProtocolHdr.h +++ b/XEngine_Source/XQueue_ProtocolHdr.h @@ -52,6 +52,36 @@ //Only TCP and WEBSOCKET #define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_MSGNOTIFY 0x70A0 //消息通知 /////////////////////////////////////////////////////////////////////////// +// 协议错误定义 +/////////////////////////////////////////////////////////////////////////// +#define ERROR_XENGINE_MESSAGE_AUTH_LOGGED 0x1001 //已经登陆过了 +#define ERROR_XENGINE_MESSAGE_AUTH_HTTP 0x1002 //HTTP PASS验证失败 +#define ERROR_XENGINE_MESSAGE_AUTH_USERPASS 0x1003 //用户或者密码错误 +#define ERROR_XENGINE_MESSAGE_AUTH_NOTLOGIN 0x1004 //没有登陆,禁止操作 +#define ERROR_XENGINE_MESSAGE_AUTH_APIREG 0x1005 //HTTP 远程注册失败 +#define ERROR_XENGINE_MESSAGE_AUTH_EXISTED 0x1006 //用户已经存在 +#define ERROR_XENGINE_MESSAGE_AUTH_REGISTER 0x1007 //用户注册失败,数据错误 +#define ERROR_XENGINE_MESSAGE_AUTH_APIDEL 0x1008 //HTTP API删除失败 +#define ERROR_XENGINE_MESSAGE_AUTH_DELETE 0x1009 //本地删除失败 + +#define ERROR_XENGINE_MESSAGE_XMQ_EXISTED 0x2001 //消息存在 +#define ERROR_XENGINE_MESSAGE_XMQ_INSERT 0x2002 //插入数据库失败 +#define ERROR_XENGINE_MESSAGE_XMQ_MSGQUERY 0x2003 //查询消息失败 +#define ERROR_XENGINE_MESSAGE_XMQ_BELONG 0x2004 //指定用户消息,无权使用 +#define ERROR_XENGINE_MESSAGE_XMQ_TIMEOUT 0x2005 //消息超时,无权使用 +#define ERROR_XENGINE_MESSAGE_XMQ_PUBTIME 0x2006 //定时消息,无权使用 +#define ERROR_XENGINE_MESSAGE_XMQ_KEYQUERY 0x2007 //查询绑定消息失败 +#define ERROR_XENGINE_MESSAGE_XMQ_SERIAL 0x2008 //消息序号错误 +#define ERROR_XENGINE_MESSAGE_XMQ_CREATEKEY 0x2009 //创建消息KEY失败 +#define ERROR_XENGINE_MESSAGE_XMQ_BINDOWNER 0x2010 //绑定所有者失败 +#define ERROR_XENGINE_MESSAGE_XMQ_DELOWNER 0x2011 //删除所有者失败 +#define ERROR_XENGINE_MESSAGE_XMQ_KEYUP 0x2012 //更新KEY失败 +#define ERROR_XENGINE_MESSAGE_XMQ_BINDKEY 0x2013 //绑定KEY失败 +#define ERROR_XENGINE_MESSAGE_XMQ_DELKEY 0x2014 //删除KEY失败 +#define ERROR_XENGINE_MESSAGE_XMQ_QUERYOWNER 0x2015 //查询所有者失败 +#define ERROR_XENGINE_MESSAGE_XMQ_MODIFYTOPIC 0x2016 //修改主题失败 +#define ERROR_XENGINE_MESSAGE_XMQ_MODIFYMSG 0x2017 //修改消息失败 +/////////////////////////////////////////////////////////////////////////// // 导出的数据结构 /////////////////////////////////////////////////////////////////////////// #pragma pack(push) From 33b4592249052e9dc176f70e5fecaf7dc3676033 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 16 Jan 2025 15:06:40 +0800 Subject: [PATCH 17/29] update:example x86_64 build on windows supported --- XEngine_Apps/MQCore_HTTPApp/MQCore_HTTPApp.vcxproj | 2 ++ XEngine_Apps/MQCore_TCPApp/MQCore_TCPApp.vcxproj | 4 +++- XEngine_Apps/MQCore_WSApp/MQCore_WSApp.cpp | 4 ++++ XEngine_Apps/MQCore_WSApp/MQCore_WSApp.vcxproj | 2 ++ XEngine_Apps/VSCopy-x64.bat | 7 +++++++ 5 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 XEngine_Apps/VSCopy-x64.bat diff --git a/XEngine_Apps/MQCore_HTTPApp/MQCore_HTTPApp.vcxproj b/XEngine_Apps/MQCore_HTTPApp/MQCore_HTTPApp.vcxproj index 214f3e8..28e53fe 100644 --- a/XEngine_Apps/MQCore_HTTPApp/MQCore_HTTPApp.vcxproj +++ b/XEngine_Apps/MQCore_HTTPApp/MQCore_HTTPApp.vcxproj @@ -80,6 +80,8 @@ true + $(XEngine_Include);$(IncludePath) + $(XEngine_Lib64);$(LibraryPath) false diff --git a/XEngine_Apps/MQCore_TCPApp/MQCore_TCPApp.vcxproj b/XEngine_Apps/MQCore_TCPApp/MQCore_TCPApp.vcxproj index 89a44ab..f3877e1 100644 --- a/XEngine_Apps/MQCore_TCPApp/MQCore_TCPApp.vcxproj +++ b/XEngine_Apps/MQCore_TCPApp/MQCore_TCPApp.vcxproj @@ -80,6 +80,8 @@ true + $(XEngine_Include);$(IncludePath) + $(XEngine_Lib64);$(LibraryPath) false @@ -116,7 +118,7 @@ Level3 true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + _DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true diff --git a/XEngine_Apps/MQCore_WSApp/MQCore_WSApp.cpp b/XEngine_Apps/MQCore_WSApp/MQCore_WSApp.cpp index 1615fe4..0b36765 100644 --- a/XEngine_Apps/MQCore_WSApp/MQCore_WSApp.cpp +++ b/XEngine_Apps/MQCore_WSApp/MQCore_WSApp.cpp @@ -5,8 +5,12 @@ #pragma comment(lib,"Ws2_32") #pragma comment(lib,"XEngine_Client/XClient_Socket") #pragma comment(lib,"XEngine_RfcComponents/RfcComponents_WSProtocol") +#ifdef _WIN64 +#pragma comment(lib,"../../XEngine_Source/x64/Debug/jsoncpp") +#else #pragma comment(lib,"../../XEngine_Source/Debug/jsoncpp") #endif +#endif #include #include #include diff --git a/XEngine_Apps/MQCore_WSApp/MQCore_WSApp.vcxproj b/XEngine_Apps/MQCore_WSApp/MQCore_WSApp.vcxproj index 677f792..21d4d52 100644 --- a/XEngine_Apps/MQCore_WSApp/MQCore_WSApp.vcxproj +++ b/XEngine_Apps/MQCore_WSApp/MQCore_WSApp.vcxproj @@ -80,6 +80,8 @@ true + $(XEngine_Include);../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Lib64);$(LibraryPath) false diff --git a/XEngine_Apps/VSCopy-x64.bat b/XEngine_Apps/VSCopy-x64.bat new file mode 100644 index 0000000..369235a --- /dev/null +++ b/XEngine_Apps/VSCopy-x64.bat @@ -0,0 +1,7 @@ +copy /y "%XEngine_Lib64%\XEngine_BaseLib\XEngine_BaseLib.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_BaseLib\XEngine_Algorithm.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_Core\XEngine_Cryption.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_Core\XEngine_ManagePool.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_RfcComponents\RfcComponents_WSProtocol.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_Client\XClient_APIHelp.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_Client\XClient_Socket.dll" "./" \ No newline at end of file From 5f522ae4e255a442b1e48022bc7478e889a1e7f9 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 16 Jan 2025 15:08:35 +0800 Subject: [PATCH 18/29] update:depend library --- XEngine_Source/XEngine_Depend | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_Depend b/XEngine_Source/XEngine_Depend index 60eac07..bcf8d94 160000 --- a/XEngine_Source/XEngine_Depend +++ b/XEngine_Source/XEngine_Depend @@ -1 +1 @@ -Subproject commit 60eac0753192a4a66fc90b561d8fde4e5282e2d9 +Subproject commit bcf8d946890a2f2fb39eec16e64a634a8ece52c7 From 4f868e0091387a3c117be5ffc8909490a930c41b Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 16 Jan 2025 15:28:35 +0800 Subject: [PATCH 19/29] update:c++ compiler 20 and c compiler 17 --- .../MQCore_ConfigModule/MQCore_ConfigModule.vcxproj | 8 ++++++++ XEngine_Source/MQCore_ConfigModule/Makefile | 2 +- XEngine_Source/MQCore_DBModule/MQCore_DBModule.vcxproj | 8 ++++++++ XEngine_Source/MQCore_DBModule/Makefile | 2 +- XEngine_Source/MQCore_MemoryCache/Makefile | 2 +- .../MQCore_ProtocolModule/MQCore_ProtocolModule.vcxproj | 8 ++++++++ XEngine_Source/MQCore_ProtocolModule/Makefile | 2 +- .../MQCore_SessionModule/MQCore_SessionModule.vcxproj | 8 ++++++++ XEngine_Source/MQCore_SessionModule/Makefile | 2 +- XEngine_Source/XEngine_MQServiceApp/Makefile | 2 +- .../XEngine_MQServiceApp/XEngine_MQServiceApp.vcxproj | 8 ++++++++ 11 files changed, 46 insertions(+), 6 deletions(-) diff --git a/XEngine_Source/MQCore_ConfigModule/MQCore_ConfigModule.vcxproj b/XEngine_Source/MQCore_ConfigModule/MQCore_ConfigModule.vcxproj index 2abc357..2013539 100644 --- a/XEngine_Source/MQCore_ConfigModule/MQCore_ConfigModule.vcxproj +++ b/XEngine_Source/MQCore_ConfigModule/MQCore_ConfigModule.vcxproj @@ -97,6 +97,8 @@ Use pch.h 4819 + stdcpp20 + stdc17 Windows @@ -117,6 +119,8 @@ pch.h MultiThreaded 4819 + stdcpp20 + stdc17 Windows @@ -135,6 +139,8 @@ true Use pch.h + stdcpp20 + stdc17 Windows @@ -155,6 +161,8 @@ pch.h MultiThreaded 4819 + stdcpp20 + stdc17 Windows diff --git a/XEngine_Source/MQCore_ConfigModule/Makefile b/XEngine_Source/MQCore_ConfigModule/Makefile index bdd6bd9..e6ecf33 100644 --- a/XEngine_Source/MQCore_ConfigModule/Makefile +++ b/XEngine_Source/MQCore_ConfigModule/Makefile @@ -1,4 +1,4 @@ -CC = g++ -Wall -std=c++17 -fPIC +CC = g++ -Wall -std=c++20 -fPIC PLATFORM = linux PLATVER = PLATDIR = diff --git a/XEngine_Source/MQCore_DBModule/MQCore_DBModule.vcxproj b/XEngine_Source/MQCore_DBModule/MQCore_DBModule.vcxproj index 1a8517b..c390472 100644 --- a/XEngine_Source/MQCore_DBModule/MQCore_DBModule.vcxproj +++ b/XEngine_Source/MQCore_DBModule/MQCore_DBModule.vcxproj @@ -98,6 +98,8 @@ true Use pch.h + stdcpp20 + stdc17 Windows @@ -116,6 +118,8 @@ true Use pch.h + stdcpp20 + stdc17 Windows @@ -134,6 +138,8 @@ true Use pch.h + stdcpp20 + stdc17 Windows @@ -152,6 +158,8 @@ true Use pch.h + stdcpp20 + stdc17 Windows diff --git a/XEngine_Source/MQCore_DBModule/Makefile b/XEngine_Source/MQCore_DBModule/Makefile index cb608ab..1c3d89f 100644 --- a/XEngine_Source/MQCore_DBModule/Makefile +++ b/XEngine_Source/MQCore_DBModule/Makefile @@ -1,4 +1,4 @@ -CC = g++ -Wall -std=c++17 -fPIC +CC = g++ -Wall -std=c++20 -fPIC PLATFORM = linux PLATVER = PLATDIR = diff --git a/XEngine_Source/MQCore_MemoryCache/Makefile b/XEngine_Source/MQCore_MemoryCache/Makefile index 03b11ce..545d008 100644 --- a/XEngine_Source/MQCore_MemoryCache/Makefile +++ b/XEngine_Source/MQCore_MemoryCache/Makefile @@ -1,4 +1,4 @@ -CC = g++ -Wall -std=c++17 -fPIC +CC = g++ -Wall -std=c++20 -fPIC PLATFORM = linux PLATVER = PLATDIR = diff --git a/XEngine_Source/MQCore_ProtocolModule/MQCore_ProtocolModule.vcxproj b/XEngine_Source/MQCore_ProtocolModule/MQCore_ProtocolModule.vcxproj index fd96ff1..dfa7d80 100644 --- a/XEngine_Source/MQCore_ProtocolModule/MQCore_ProtocolModule.vcxproj +++ b/XEngine_Source/MQCore_ProtocolModule/MQCore_ProtocolModule.vcxproj @@ -99,6 +99,8 @@ Use pch.h 4819 + stdcpp20 + stdc17 Windows @@ -119,6 +121,8 @@ pch.h MultiThreaded 4819 + stdcpp20 + stdc17 Windows @@ -137,6 +141,8 @@ true Use pch.h + stdcpp20 + stdc17 Windows @@ -157,6 +163,8 @@ pch.h MultiThreaded 4819 + stdcpp20 + stdc17 Windows diff --git a/XEngine_Source/MQCore_ProtocolModule/Makefile b/XEngine_Source/MQCore_ProtocolModule/Makefile index 023d27b..da415a8 100644 --- a/XEngine_Source/MQCore_ProtocolModule/Makefile +++ b/XEngine_Source/MQCore_ProtocolModule/Makefile @@ -1,4 +1,4 @@ -CC = g++ -Wall -std=c++17 -fPIC +CC = g++ -Wall -std=c++20 -fPIC PLATFORM = linux PLATVER = PLATDIR = diff --git a/XEngine_Source/MQCore_SessionModule/MQCore_SessionModule.vcxproj b/XEngine_Source/MQCore_SessionModule/MQCore_SessionModule.vcxproj index 0f67398..5d71b96 100644 --- a/XEngine_Source/MQCore_SessionModule/MQCore_SessionModule.vcxproj +++ b/XEngine_Source/MQCore_SessionModule/MQCore_SessionModule.vcxproj @@ -99,6 +99,8 @@ Use pch.h 4819 + stdcpp20 + stdc17 Windows @@ -119,6 +121,8 @@ pch.h MultiThreaded 4819 + stdcpp20 + stdc17 Windows @@ -137,6 +141,8 @@ true Use pch.h + stdcpp20 + stdc17 Windows @@ -157,6 +163,8 @@ pch.h MultiThreaded 4819 + stdcpp20 + stdc17 Windows diff --git a/XEngine_Source/MQCore_SessionModule/Makefile b/XEngine_Source/MQCore_SessionModule/Makefile index 8661497..afdd9b7 100644 --- a/XEngine_Source/MQCore_SessionModule/Makefile +++ b/XEngine_Source/MQCore_SessionModule/Makefile @@ -1,4 +1,4 @@ -CC = g++ -Wall -std=c++17 -fPIC +CC = g++ -Wall -std=c++20 -fPIC PLATFORM = linux PLATVER = PLATDIR = diff --git a/XEngine_Source/XEngine_MQServiceApp/Makefile b/XEngine_Source/XEngine_MQServiceApp/Makefile index 21f212f..e6710ce 100644 --- a/XEngine_Source/XEngine_MQServiceApp/Makefile +++ b/XEngine_Source/XEngine_MQServiceApp/Makefile @@ -1,4 +1,4 @@ -CC = g++ -Wall -std=c++17 +CC = g++ -Wall -std=c++20 PLATFORM = linux PLATVER = PLATDIR = diff --git a/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.vcxproj b/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.vcxproj index f41e924..012d75d 100644 --- a/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.vcxproj +++ b/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.vcxproj @@ -97,6 +97,8 @@ WIN32;_DEBUG;_CONSOLE;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true 4819 + stdcpp20 + stdc17 Console @@ -113,6 +115,8 @@ true MultiThreaded 4819 + stdcpp20 + stdc17 Console @@ -127,6 +131,8 @@ true _DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true + stdcpp20 + stdc17 Console @@ -143,6 +149,8 @@ true MultiThreaded 4819 + stdcpp20 + stdc17 Console From 01d938cc49756b7902b98f38d63be9bb30461261 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 17 Jan 2025 09:54:52 +0800 Subject: [PATCH 20/29] fixed:Character set garbled problem --- .../MQCore_ConfigModule/MQCore_ConfigModule.vcxproj | 2 ++ XEngine_Source/MQCore_DBModule/MQCore_DBModule.vcxproj | 2 ++ .../MQCore_MemoryCache/MQCore_MemoryCache.vcxproj | 2 ++ .../MQCore_ProtocolModule/MQCore_ProtocolModule.vcxproj | 2 ++ .../MQCore_SessionModule/MQCore_SessionModule.vcxproj | 2 ++ XEngine_Source/XEngine_MQServiceApp/MQService_Hdr.h | 1 + .../XEngine_MQServiceApp/XEngine_MQServiceApp.cpp | 7 +++++++ .../XEngine_MQServiceApp/XEngine_MQServiceApp.vcxproj | 2 ++ 8 files changed, 20 insertions(+) diff --git a/XEngine_Source/MQCore_ConfigModule/MQCore_ConfigModule.vcxproj b/XEngine_Source/MQCore_ConfigModule/MQCore_ConfigModule.vcxproj index 2013539..c64a8b5 100644 --- a/XEngine_Source/MQCore_ConfigModule/MQCore_ConfigModule.vcxproj +++ b/XEngine_Source/MQCore_ConfigModule/MQCore_ConfigModule.vcxproj @@ -121,6 +121,7 @@ 4819 stdcpp20 stdc17 + /utf-8 %(AdditionalOptions) Windows @@ -163,6 +164,7 @@ 4819 stdcpp20 stdc17 + /utf-8 %(AdditionalOptions) Windows diff --git a/XEngine_Source/MQCore_DBModule/MQCore_DBModule.vcxproj b/XEngine_Source/MQCore_DBModule/MQCore_DBModule.vcxproj index c390472..10cd8ac 100644 --- a/XEngine_Source/MQCore_DBModule/MQCore_DBModule.vcxproj +++ b/XEngine_Source/MQCore_DBModule/MQCore_DBModule.vcxproj @@ -120,6 +120,7 @@ pch.h stdcpp20 stdc17 + /utf-8 %(AdditionalOptions) Windows @@ -160,6 +161,7 @@ pch.h stdcpp20 stdc17 + /utf-8 %(AdditionalOptions) Windows diff --git a/XEngine_Source/MQCore_MemoryCache/MQCore_MemoryCache.vcxproj b/XEngine_Source/MQCore_MemoryCache/MQCore_MemoryCache.vcxproj index 49b13b3..eca93c8 100644 --- a/XEngine_Source/MQCore_MemoryCache/MQCore_MemoryCache.vcxproj +++ b/XEngine_Source/MQCore_MemoryCache/MQCore_MemoryCache.vcxproj @@ -117,6 +117,7 @@ pch.h stdcpp20 stdc17 + /utf-8 %(AdditionalOptions) Windows @@ -157,6 +158,7 @@ pch.h stdcpp20 stdc17 + /utf-8 %(AdditionalOptions) Windows diff --git a/XEngine_Source/MQCore_ProtocolModule/MQCore_ProtocolModule.vcxproj b/XEngine_Source/MQCore_ProtocolModule/MQCore_ProtocolModule.vcxproj index dfa7d80..1729975 100644 --- a/XEngine_Source/MQCore_ProtocolModule/MQCore_ProtocolModule.vcxproj +++ b/XEngine_Source/MQCore_ProtocolModule/MQCore_ProtocolModule.vcxproj @@ -123,6 +123,7 @@ 4819 stdcpp20 stdc17 + /utf-8 %(AdditionalOptions) Windows @@ -165,6 +166,7 @@ 4819 stdcpp20 stdc17 + /utf-8 %(AdditionalOptions) Windows diff --git a/XEngine_Source/MQCore_SessionModule/MQCore_SessionModule.vcxproj b/XEngine_Source/MQCore_SessionModule/MQCore_SessionModule.vcxproj index 5d71b96..6cd75df 100644 --- a/XEngine_Source/MQCore_SessionModule/MQCore_SessionModule.vcxproj +++ b/XEngine_Source/MQCore_SessionModule/MQCore_SessionModule.vcxproj @@ -123,6 +123,7 @@ 4819 stdcpp20 stdc17 + /utf-8 %(AdditionalOptions) Windows @@ -165,6 +166,7 @@ 4819 stdcpp20 stdc17 + /utf-8 %(AdditionalOptions) Windows diff --git a/XEngine_Source/XEngine_MQServiceApp/MQService_Hdr.h b/XEngine_Source/XEngine_MQServiceApp/MQService_Hdr.h index 7caae34..fd4c49c 100644 --- a/XEngine_Source/XEngine_MQServiceApp/MQService_Hdr.h +++ b/XEngine_Source/XEngine_MQServiceApp/MQService_Hdr.h @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include diff --git a/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp b/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp index 7fc1e47..ef105f6 100644 --- a/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp +++ b/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp @@ -116,6 +116,13 @@ int main(int argc, char** argv) WSAStartup(MAKEWORD(2, 2), &st_WSAData); SetUnhandledExceptionFilter(Coredump_ExceptionFilter); +#ifndef _DEBUG + if (setlocale(LC_ALL, ".UTF8") == NULL) + { + fprintf(stderr, "Error setting locale.\n"); + return 1; + } +#endif #endif int nRet = -1; LPCXSTR lpszHTTPMime = _X("./XEngine_Config/HttpMime.types"); diff --git a/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.vcxproj b/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.vcxproj index 012d75d..1923395 100644 --- a/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.vcxproj +++ b/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.vcxproj @@ -117,6 +117,7 @@ 4819 stdcpp20 stdc17 + /utf-8 %(AdditionalOptions) Console @@ -151,6 +152,7 @@ 4819 stdcpp20 stdc17 + /utf-8 %(AdditionalOptions) Console From 8929157936792829638b3e7161d51e96f1bb0e99 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 17 Jan 2025 10:31:18 +0800 Subject: [PATCH 21/29] modify:callback export type for memory cache --- .../MemoryCache_DBData/MemoryCache_DBData.cpp | 8 ++++---- XEngine_Source/MQCore_MemoryCache/MemoryCache_Define.h | 5 +++-- XEngine_Source/XEngine_MQServiceApp/MQService_Task.cpp | 10 +++++----- XEngine_Source/XEngine_MQServiceApp/MQService_Task.h | 2 +- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp index 772a61f..dcb15c2 100644 --- a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp +++ b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp @@ -313,11 +313,11 @@ XHTHREAD CALLBACK CMemoryCache_DBData::DBModule_MQUser_TimeThread(XPVOID lParam) XENGINE_DBMESSAGEQUEUE st_DBMessage = *stl_ListIterator; if (pClass_This->MemoryCache_DBData_DataDelete(&st_DBMessage)) { - pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_QUERY, true, pClass_This->stl_ListInsert.size(), &st_DBMessage, pClass_This->m_lParam); + pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_QUERY, true, pClass_This->stl_ListInsert.size(), (XPVOID)&st_DBMessage, pClass_This->m_lParam); } else { - pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_QUERY, false, pClass_This->stl_ListInsert.size(), &st_DBMessage, pClass_This->m_lParam); + pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_QUERY, false, pClass_This->stl_ListInsert.size(), (XPVOID)&st_DBMessage, pClass_This->m_lParam); } } std::this_thread::sleep_for(std::chrono::seconds(1)); @@ -339,11 +339,11 @@ XHTHREAD CALLBACK CMemoryCache_DBData::DBModule_MQUser_InsertThread(XPVOID lPara if (DataBase_MySQL_Execute(pClass_This->m_xhDBSQL, st_DBInsert.m_StrSQL.c_str())) { - pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_INSERT, true, pClass_This->stl_ListInsert.size(), &st_DBInsert.st_DBMessageInfo, pClass_This->m_lParam); + pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_INSERT, true, pClass_This->stl_ListInsert.size(), (XPVOID)&st_DBInsert.st_DBMessageInfo, pClass_This->m_lParam); } else { - pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_INSERT, false, pClass_This->stl_ListInsert.size(), &st_DBInsert.st_DBMessageInfo, pClass_This->m_lParam); + pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_INSERT, false, pClass_This->stl_ListInsert.size(), (XPVOID)&st_DBInsert.st_DBMessageInfo, pClass_This->m_lParam); } } std::this_thread::sleep_for(std::chrono::milliseconds(1)); diff --git a/XEngine_Source/MQCore_MemoryCache/MemoryCache_Define.h b/XEngine_Source/MQCore_MemoryCache/MemoryCache_Define.h index 98d6b74..500d6ed 100644 --- a/XEngine_Source/MQCore_MemoryCache/MemoryCache_Define.h +++ b/XEngine_Source/MQCore_MemoryCache/MemoryCache_Define.h @@ -13,12 +13,13 @@ typedef enum { ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_QUERY = 0, - ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_INSERT = 1 + ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_INSERT = 1, + ENUM_MEMORYCACHE_CALLBACK_TYPE_USER_INFO = 10 }ENUM_MEMORYCACHE_CALLBACK_TYPE; ////////////////////////////////////////////////////////////////////////// // 导出的回调 ////////////////////////////////////////////////////////////////////////// -typedef void(CALLBACK* CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE)(ENUM_MEMORYCACHE_CALLBACK_TYPE enMemoryType, bool bSuccess, size_t nListCount, XENGINE_DBMESSAGEQUEUE* pSt_DBInfo, XPVOID lParam); +typedef void(CALLBACK* CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE)(ENUM_MEMORYCACHE_CALLBACK_TYPE enMemoryType, bool bSuccess, size_t nListCount, XPVOID pSt_DBInfo, XPVOID lParam); ////////////////////////////////////////////////////////////////////////// // 导出的函数 ////////////////////////////////////////////////////////////////////////// diff --git a/XEngine_Source/XEngine_MQServiceApp/MQService_Task.cpp b/XEngine_Source/XEngine_MQServiceApp/MQService_Task.cpp index dd2f223..edf65ce 100644 --- a/XEngine_Source/XEngine_MQServiceApp/MQService_Task.cpp +++ b/XEngine_Source/XEngine_MQServiceApp/MQService_Task.cpp @@ -61,28 +61,28 @@ void CALLBACK MessageQueue_CBTask_TimePublish(XENGINE_DBTIMERELEASE* pSt_DBInfo, } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("定时任务,消息主题:%s,序列:%lld,定时任务分发成功,客户端个数:%d"), pSt_DBInfo->tszQueueName, pSt_DBInfo->nIDMsg, nListCount); } -void CALLBACK MessageQueue_CBTask_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE enMemoryType, bool bSuccess, size_t nListCount, XENGINE_DBMESSAGEQUEUE* pSt_DBInfo, XPVOID lParam) +void CALLBACK MessageQueue_CBTask_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE enMemoryType, bool bSuccess, size_t nListCount, XPVOID pSt_DBInfo, XPVOID lParam) { if (ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_QUERY == enMemoryType) { if (bSuccess) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("高速缓存,消息主题:%s,序列:%lld,删除过期缓存成功,缓存剩余队列:%ld"), pSt_DBInfo->tszQueueName, pSt_DBInfo->nQueueSerial, nListCount); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("高速缓存,消息主题:%s,序列:%lld,删除过期缓存成功,缓存剩余队列:%ld"), ((XENGINE_DBMESSAGEQUEUE*)pSt_DBInfo)->tszQueueName, ((XENGINE_DBMESSAGEQUEUE*)pSt_DBInfo)->nQueueSerial, nListCount); } else { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("高速缓存,消息主题:%s,序列:%lld,删除过期缓存成功,缓存剩余队列:%ld"), pSt_DBInfo->tszQueueName, pSt_DBInfo->nQueueSerial, nListCount); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("高速缓存,消息主题:%s,序列:%lld,删除过期缓存成功,缓存剩余队列:%ld"), ((XENGINE_DBMESSAGEQUEUE*)pSt_DBInfo)->tszQueueName, ((XENGINE_DBMESSAGEQUEUE*)pSt_DBInfo)->nQueueSerial, nListCount); } } else if (ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_INSERT == enMemoryType) { if (bSuccess) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("高速缓存,消息主题:%s,序列:%lld,插入缓存队列到数据库成功,缓存剩余队列:%ld"), pSt_DBInfo->tszQueueName, pSt_DBInfo->nQueueSerial, nListCount); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("高速缓存,消息主题:%s,序列:%lld,插入缓存队列到数据库成功,缓存剩余队列:%ld"), ((XENGINE_DBMESSAGEQUEUE*)pSt_DBInfo)->tszQueueName, ((XENGINE_DBMESSAGEQUEUE*)pSt_DBInfo)->nQueueSerial, nListCount); } else { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("高速缓存,消息主题:%s,序列:%lld,插入缓存队列到数据库失败,缓存剩余队列:%ld"), pSt_DBInfo->tszQueueName, pSt_DBInfo->nQueueSerial, nListCount); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("高速缓存,消息主题:%s,序列:%lld,插入缓存队列到数据库失败,缓存剩余队列:%ld"), ((XENGINE_DBMESSAGEQUEUE*)pSt_DBInfo)->tszQueueName, ((XENGINE_DBMESSAGEQUEUE*)pSt_DBInfo)->nQueueSerial, nListCount); } } } \ No newline at end of file diff --git a/XEngine_Source/XEngine_MQServiceApp/MQService_Task.h b/XEngine_Source/XEngine_MQServiceApp/MQService_Task.h index b92c117..2f5f5a5 100644 --- a/XEngine_Source/XEngine_MQServiceApp/MQService_Task.h +++ b/XEngine_Source/XEngine_MQServiceApp/MQService_Task.h @@ -1,4 +1,4 @@ #pragma once void CALLBACK MessageQueue_CBTask_TimePublish(XENGINE_DBTIMERELEASE* pSt_DBInfo, XPVOID lParam); -void CALLBACK MessageQueue_CBTask_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE enMemoryType, bool bSuccess, size_t nListCount, XENGINE_DBMESSAGEQUEUE* pSt_DBInfo, XPVOID lParam); \ No newline at end of file +void CALLBACK MessageQueue_CBTask_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE enMemoryType, bool bSuccess, size_t nListCount, XPVOID pSt_DBInfo, XPVOID lParam); \ No newline at end of file From 480a6b21023a61c3eba37df25eb6c28b78c7c100 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 17 Jan 2025 10:42:49 +0800 Subject: [PATCH 22/29] added:user info memory cache supported --- .github/workflows/msbuild.yml | 2 +- .../XEngine_Config/XEngine_Config.json | 3 +- .../MQCore_ConfigModule/Config_Define.h | 1 + .../Config_Json/Config_Json.cpp | 3 +- .../MQCore_MemoryCache/MQCore_MemoryCache.def | 9 +- .../MQCore_MemoryCache.vcxproj | 2 + .../MQCore_MemoryCache.vcxproj.filters | 12 + XEngine_Source/MQCore_MemoryCache/Makefile | 4 +- .../MemoryCache_DBUser/MemoryCache_DBUser.cpp | 254 ++++++++++++++++++ .../MemoryCache_DBUser/MemoryCache_DBUser.h | 48 ++++ .../MQCore_MemoryCache/MemoryCache_Define.h | 91 ++++++- XEngine_Source/MQCore_MemoryCache/pch.cpp | 29 ++ .../XEngine_MQServiceApp/MQService_Task.cpp | 11 + .../XEngine_MQServiceApp.cpp | 21 +- 14 files changed, 480 insertions(+), 10 deletions(-) create mode 100644 XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.cpp create mode 100644 XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.h diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index def9f50..d2bd79b 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -74,7 +74,7 @@ jobs: ./VSCopy_x86.bat ./XEngine_MQServiceApp.exe -t shell: pwsh - - name: Conditional Step for x86 Debug + - name: Conditional Step for x64 Release if: matrix.configuration == 'Release' && matrix.platform == 'x64' run: | cp -r XEngine_Source/x64/Release/*.dll XEngine_Release/ diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index e271651..d66d9ba 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -22,7 +22,7 @@ "LogLeave":17 }, "XSql":{ - "SQLAddr":"10.0.3.154", + "SQLAddr":"10.0.2.6", "SQLPort":3306, "SQLUser":"root", "SQLPass":"123123aa" @@ -37,6 +37,7 @@ "XMemory":{ "bDataQueryEnable":true, "bDataInsertEnable":true, + "bUserQueryEnable":true, "nTimeLast":3600, "nTimeStart":0 }, diff --git a/XEngine_Source/MQCore_ConfigModule/Config_Define.h b/XEngine_Source/MQCore_ConfigModule/Config_Define.h index 38b0ed2..3c2e137 100644 --- a/XEngine_Source/MQCore_ConfigModule/Config_Define.h +++ b/XEngine_Source/MQCore_ConfigModule/Config_Define.h @@ -59,6 +59,7 @@ typedef struct { bool bDataQueryEnable; bool bDataInsertEnable; + bool bUserQueryEnable; int nTimeLast; int nTimeStart; }st_XMemory; diff --git a/XEngine_Source/MQCore_ConfigModule/Config_Json/Config_Json.cpp b/XEngine_Source/MQCore_ConfigModule/Config_Json/Config_Json.cpp index ba4acaf..74342de 100644 --- a/XEngine_Source/MQCore_ConfigModule/Config_Json/Config_Json.cpp +++ b/XEngine_Source/MQCore_ConfigModule/Config_Json/Config_Json.cpp @@ -123,7 +123,7 @@ bool CConfig_Json::Config_Json_File(LPCXSTR lpszConfigFile,XENGINE_SERVERCONFIG _tcsxcpy(pSt_ServerConfig->st_XPass.tszPassRegister, st_JsonXPass["tszPassRegister"].asCString()); _tcsxcpy(pSt_ServerConfig->st_XPass.tszPassUNReg, st_JsonXPass["tszPassUNReg"].asCString()); - if (st_JsonRoot["XMemory"].empty() || (4 != st_JsonRoot["XMemory"].size())) + if (st_JsonRoot["XMemory"].empty() || (5 != st_JsonRoot["XMemory"].size())) { Config_IsErrorOccur = true; Config_dwErrorCode = ERROR_MQ_MODULE_CONFIG_JSON_XMEMORY; @@ -132,6 +132,7 @@ bool CConfig_Json::Config_Json_File(LPCXSTR lpszConfigFile,XENGINE_SERVERCONFIG Json::Value st_JsonXMemory = st_JsonRoot["XMemory"]; pSt_ServerConfig->st_XMemory.bDataQueryEnable = st_JsonXMemory["bDataQueryEnable"].asBool(); pSt_ServerConfig->st_XMemory.bDataInsertEnable = st_JsonXMemory["bDataInsertEnable"].asBool(); + pSt_ServerConfig->st_XMemory.bUserQueryEnable = st_JsonXMemory["bUserQueryEnable"].asBool(); pSt_ServerConfig->st_XMemory.nTimeLast = st_JsonXMemory["nTimeLast"].asInt(); pSt_ServerConfig->st_XMemory.nTimeStart = st_JsonXMemory["nTimeStart"].asInt(); diff --git a/XEngine_Source/MQCore_MemoryCache/MQCore_MemoryCache.def b/XEngine_Source/MQCore_MemoryCache/MQCore_MemoryCache.def index a5881ce..516e3d5 100644 --- a/XEngine_Source/MQCore_MemoryCache/MQCore_MemoryCache.def +++ b/XEngine_Source/MQCore_MemoryCache/MQCore_MemoryCache.def @@ -9,4 +9,11 @@ EXPORTS MemoryCache_DBData_DataInsert MemoryCache_DBData_DataQuery MemoryCache_DBData_DataDelete - MemoryCache_DBData_QueueInsert \ No newline at end of file + MemoryCache_DBData_QueueInsert + + MemoryCache_DBUser_Init + MemoryCache_DBUser_SetHandle + MemoryCache_DBUser_Destory + MemoryCache_DBUser_DataInsert + MemoryCache_DBUser_DataQuery + MemoryCache_DBUser_DataDelete \ No newline at end of file diff --git a/XEngine_Source/MQCore_MemoryCache/MQCore_MemoryCache.vcxproj b/XEngine_Source/MQCore_MemoryCache/MQCore_MemoryCache.vcxproj index eca93c8..534202a 100644 --- a/XEngine_Source/MQCore_MemoryCache/MQCore_MemoryCache.vcxproj +++ b/XEngine_Source/MQCore_MemoryCache/MQCore_MemoryCache.vcxproj @@ -172,6 +172,7 @@ + @@ -179,6 +180,7 @@ + Create Create diff --git a/XEngine_Source/MQCore_MemoryCache/MQCore_MemoryCache.vcxproj.filters b/XEngine_Source/MQCore_MemoryCache/MQCore_MemoryCache.vcxproj.filters index da7be03..c55a542 100644 --- a/XEngine_Source/MQCore_MemoryCache/MQCore_MemoryCache.vcxproj.filters +++ b/XEngine_Source/MQCore_MemoryCache/MQCore_MemoryCache.vcxproj.filters @@ -19,6 +19,12 @@ {d3182e9a-8f45-4138-b4e2-a793c976d18d} + + {b3468e30-1493-4bfe-88a0-7752163b8820} + + + {9e8d921c-e3ab-4610-a4e9-040dc71a57b4} + @@ -36,6 +42,9 @@ 头文件\MemoryCache_DBData + + 头文件\MemoryCache_DBUser + @@ -47,6 +56,9 @@ 源文件\MemoryCache_DBData + + 源文件\MemoryCache_DBUser + diff --git a/XEngine_Source/MQCore_MemoryCache/Makefile b/XEngine_Source/MQCore_MemoryCache/Makefile index 545d008..0bf5aa7 100644 --- a/XEngine_Source/MQCore_MemoryCache/Makefile +++ b/XEngine_Source/MQCore_MemoryCache/Makefile @@ -9,7 +9,7 @@ LOADHDR = -I ./ LOADSO = LIB = -lHelpComponents_DataBase LIBEX = -OBJECTS = MemoryCache_DBData.o pch.o +OBJECTS = MemoryCache_DBData.o MemoryCache_DBUser.o pch.o ifeq ($(RELEASE),1) FLAGS = -c @@ -52,6 +52,8 @@ all:$(OBJECTS) MemoryCache_DBData.o:./MemoryCache_DBData/MemoryCache_DBData.cpp $(CC) $(DEBUG) $(FLAGS) $(PLATVER) $(LOADHDR) ./MemoryCache_DBData/MemoryCache_DBData.cpp +MemoryCache_DBUser.o:./MemoryCache_DBUser/MemoryCache_DBUser.cpp + $(CC) $(DEBUG) $(FLAGS) $(PLATVER) $(LOADHDR) ./MemoryCache_DBUser/MemoryCache_DBUser.cpp pch.o:./pch.cpp $(CC) $(DEBUG) $(FLAGS) $(PLATVER) $(LOADHDR) ./pch.cpp diff --git a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.cpp b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.cpp new file mode 100644 index 0000000..e06f06f --- /dev/null +++ b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.cpp @@ -0,0 +1,254 @@ +#include "pch.h" +#include "MemoryCache_DBUser.h" +/******************************************************************** +// Created: 2025/01/17 10:09:09 +// File Name: D:\XEngine_MQService\XEngine_Source\MQCore_MemoryCache\MemoryCache_DBUser\MemoryCache_DBUser.cpp +// File Path: D:\XEngine_MQService\XEngine_Source\MQCore_MemoryCache\MemoryCache_DBUser +// File Base: MemoryCache_DBUser +// File Ext: cpp +// Project: XEngine(网络通信引擎) +// Author: qyt +// Purpose: 数据库高速缓存 +// History: +*********************************************************************/ +CMemoryCache_DBUser::CMemoryCache_DBUser() +{ +} +CMemoryCache_DBUser::~CMemoryCache_DBUser() +{ + +} +////////////////////////////////////////////////////////////////////////// +// 公有函数 +////////////////////////////////////////////////////////////////////////// +/******************************************************************** +函数名称:MemoryCache_DBUser_Init +函数功能:初始化高速缓存管理器 + 参数.一:nTimeLast + In/Out:In + 类型:整数型 + 可空:N + 意思:允许的最后更新时间存在秒数 + 参数.二:nTimeStart + In/Out:In + 类型:整数型 + 可空:N + 意思:允许的最大保留时间 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CMemoryCache_DBUser::MemoryCache_DBUser_Init(int nTimeLast, int nTimeStart, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam /* = NULL */) +{ + MemoryCache_IsErrorOccur = false; + + bIsRun = true; + + m_nTimeLast = nTimeLast; + m_nTimeStart = nTimeStart; + m_lParam = lParam; + lpCall_MemoryCache = fpCall_MemoryCache; + + pSTDThread_Query = std::make_unique(DBModule_MQUser_TimeThread, this); + if (NULL == pSTDThread_Query) + { + MemoryCache_IsErrorOccur = true; + MemoryCache_dwErrorCode = ERROR_XENGINE_MQCORE_MEMORYCACHE_DBDATA_THREAD; + return false; + } + return true; +} +/******************************************************************** +函数名称:MemoryCache_DBUser_SetHandle +函数功能:设置句柄 + 参数.一:xhDBSQL + In/Out:In + 类型:句柄 + 可空:N + 意思:数据库句柄 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CMemoryCache_DBUser::MemoryCache_DBUser_SetHandle(XNETHANDLE xhDBSQL) +{ + MemoryCache_IsErrorOccur = false; + + m_xhDBSQL = xhDBSQL; + + return true; +} +/******************************************************************** +函数名称:MemoryCache_DBUser_Destory +函数功能:销毁高速缓存管理器 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CMemoryCache_DBUser::MemoryCache_DBUser_Destory() +{ + MemoryCache_IsErrorOccur = false; + + bIsRun = false; + if (NULL != pSTDThread_Query) + { + pSTDThread_Query->join(); + } + return true; +} +/******************************************************************** +函数名称:MemoryCache_DBUser_DataInsert +函数功能:插入一条数据到高速缓存 + 参数.一:pSt_DBUserInfo + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要插入的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CMemoryCache_DBUser::MemoryCache_DBUser_DataInsert(XENGINE_PROTOCOL_USERINFO* pSt_DBUserInfo) +{ + MemoryCache_IsErrorOccur = false; + + if (NULL == pSt_DBUserInfo) + { + MemoryCache_IsErrorOccur = true; + MemoryCache_dwErrorCode = ERROR_XENGINE_MQCORE_MEMORYCACHE_DBDATA_PARAMENT; + return false; + } + + st_LockerQuery.lock(); + auto stl_MapIterator = stl_MapQuery.find(pSt_DBUserInfo->tszUserName); + if (stl_MapIterator == stl_MapQuery.end()) + { + MEMORYCACHE_DBUSER st_DBInfo = {}; + + st_DBInfo.nTimeStart = time(NULL); + st_DBInfo.st_DBUserInfo = *pSt_DBUserInfo; + stl_MapQuery[pSt_DBUserInfo->tszUserName] = st_DBInfo; + } + else + { + stl_MapIterator->second.st_DBUserInfo = *pSt_DBUserInfo; + } + st_LockerQuery.unlock(); + return true; +} +/******************************************************************** +函数名称:MemoryCache_DBUser_DataQuery +函数功能:查询高速缓存 + 参数.一:pSt_DBUserInfo + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要查询的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CMemoryCache_DBUser::MemoryCache_DBUser_DataQuery(XENGINE_PROTOCOL_USERINFO* pSt_DBUserInfo) +{ + MemoryCache_IsErrorOccur = false; + + if (NULL == pSt_DBUserInfo) + { + MemoryCache_IsErrorOccur = true; + MemoryCache_dwErrorCode = ERROR_XENGINE_MQCORE_MEMORYCACHE_DBDATA_PARAMENT; + return false; + } + + st_LockerQuery.lock_shared(); + auto stl_MapIterator = stl_MapQuery.find(pSt_DBUserInfo->tszUserName); + if (stl_MapIterator == stl_MapQuery.end()) + { + MemoryCache_IsErrorOccur = true; + MemoryCache_dwErrorCode = ERROR_XENGINE_MQCORE_MEMORYCACHE_DBDATA_NOTFOUND; + st_LockerQuery.unlock_shared(); + return false; + } + stl_MapIterator->second.nTimeLast = time(NULL); + *pSt_DBUserInfo = stl_MapIterator->second.st_DBUserInfo; + st_LockerQuery.unlock_shared(); + return true; +} +/******************************************************************** +函数名称:MemoryCache_DBUser_DataDelete +函数功能:删除高速缓存 + 参数.一:pSt_DBUserInfo + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要操作的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CMemoryCache_DBUser::MemoryCache_DBUser_DataDelete(XENGINE_PROTOCOL_USERINFO* pSt_DBUserInfo) +{ + MemoryCache_IsErrorOccur = false; + + if (NULL == pSt_DBUserInfo) + { + MemoryCache_IsErrorOccur = true; + MemoryCache_dwErrorCode = ERROR_XENGINE_MQCORE_MEMORYCACHE_DBDATA_PARAMENT; + return false; + } + + st_LockerQuery.lock(); + auto stl_MapIterator = stl_MapQuery.find(pSt_DBUserInfo->tszUserName); + if (stl_MapIterator != stl_MapQuery.end()) + { + stl_MapQuery.erase(stl_MapIterator); + } + st_LockerQuery.unlock(); + return true; +} +////////////////////////////////////////////////////////////////////////// +// 线程函数 +////////////////////////////////////////////////////////////////////////// +XHTHREAD CALLBACK CMemoryCache_DBUser::DBModule_MQUser_TimeThread(XPVOID lParam) +{ + CMemoryCache_DBUser* pClass_This = (CMemoryCache_DBUser*)lParam; + + std::list stl_ListDelete; + while (pClass_This->bIsRun) + { + time_t nTimeEnd = time(NULL); + pClass_This->st_LockerQuery.lock_shared(); + for (auto stl_MapIterator = pClass_This->stl_MapQuery.begin(); stl_MapIterator != pClass_This->stl_MapQuery.end(); stl_MapIterator++) + { + if (stl_MapIterator->second.nTimeLast > (nTimeEnd - pClass_This->m_nTimeLast)) + { + stl_ListDelete.push_back(stl_MapIterator->second.st_DBUserInfo); + } + else if (pClass_This->m_nTimeStart > 0 && (nTimeEnd - pClass_This->m_nTimeStart)) + { + stl_ListDelete.push_back(stl_MapIterator->second.st_DBUserInfo); + } + } + pClass_This->st_LockerQuery.unlock_shared(); + + for (auto stl_ListIterator = stl_ListDelete.begin(); stl_ListIterator != stl_ListDelete.end(); stl_ListIterator++) + { + XENGINE_PROTOCOL_USERINFO st_DBUser = *stl_ListIterator; + if (pClass_This->MemoryCache_DBUser_DataDelete(&st_DBUser)) + { + pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_USER_QUERY, true, pClass_This->stl_MapQuery.size(), (XPVOID)&st_DBUser, pClass_This->m_lParam); + } + else + { + pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_USER_QUERY, false, pClass_This->stl_MapQuery.size(), (XPVOID)&st_DBUser, pClass_This->m_lParam); + } + } + std::this_thread::sleep_for(std::chrono::seconds(1)); + } + return 0; +} \ No newline at end of file diff --git a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.h b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.h new file mode 100644 index 0000000..f197924 --- /dev/null +++ b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.h @@ -0,0 +1,48 @@ +#pragma once +/******************************************************************** +// Created: 2025/01/17 10:08:29 +// File Name: D:\XEngine_MQService\XEngine_Source\MQCore_MemoryCache\MemoryCache_DBUser\MemoryCache_DBUser.h +// File Path: D:\XEngine_MQService\XEngine_Source\MQCore_MemoryCache\MemoryCache_DBUser +// File Base: MemoryCache_DBUser +// File Ext: h +// Project: XEngine(网络通信引擎) +// Author: qyt +// Purpose: 数据库高速缓存 +// History: +*********************************************************************/ +typedef struct +{ + XENGINE_PROTOCOL_USERINFO st_DBUserInfo; + time_t nTimeStart; + time_t nTimeLast; +}MEMORYCACHE_DBUSER; + +class CMemoryCache_DBUser +{ +public: + CMemoryCache_DBUser(); + ~CMemoryCache_DBUser(); +public: + bool MemoryCache_DBUser_Init(int nTimeLast, int nTimeStart, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam = NULL); + bool MemoryCache_DBUser_SetHandle(XNETHANDLE xhDBSQL); + bool MemoryCache_DBUser_Destory(); +public: + bool MemoryCache_DBUser_DataInsert(XENGINE_PROTOCOL_USERINFO* pSt_DBUserInfo); + bool MemoryCache_DBUser_DataQuery(XENGINE_PROTOCOL_USERINFO* pSt_DBUserInfo); + bool MemoryCache_DBUser_DataDelete(XENGINE_PROTOCOL_USERINFO* pSt_DBUserInfo); +protected: + static XHTHREAD CALLBACK DBModule_MQUser_TimeThread(XPVOID lParam); +private: + bool bIsRun = false; + int m_nTimeLast = 0; + int m_nTimeStart = 0; + XNETHANDLE m_xhDBSQL = 0; + + XPVOID m_lParam; + CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE lpCall_MemoryCache; +private: + std::shared_mutex st_LockerQuery; + std::unique_ptr pSTDThread_Query; +private: + std::unordered_map stl_MapQuery; +}; \ No newline at end of file diff --git a/XEngine_Source/MQCore_MemoryCache/MemoryCache_Define.h b/XEngine_Source/MQCore_MemoryCache/MemoryCache_Define.h index 500d6ed..51cfc26 100644 --- a/XEngine_Source/MQCore_MemoryCache/MemoryCache_Define.h +++ b/XEngine_Source/MQCore_MemoryCache/MemoryCache_Define.h @@ -14,7 +14,7 @@ typedef enum { ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_QUERY = 0, ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_INSERT = 1, - ENUM_MEMORYCACHE_CALLBACK_TYPE_USER_INFO = 10 + ENUM_MEMORYCACHE_CALLBACK_TYPE_USER_QUERY = 10 }ENUM_MEMORYCACHE_CALLBACK_TYPE; ////////////////////////////////////////////////////////////////////////// // 导出的回调 @@ -129,4 +129,91 @@ extern "C" bool MemoryCache_DBData_DataDelete(XENGINE_DBMESSAGEQUEUE* pSt_DBMess 意思:是否成功 备注: *********************************************************************/ -extern "C" bool MemoryCache_DBData_QueueInsert(LPCXSTR lpszSQLStr, XENGINE_DBMESSAGEQUEUE* pSt_DBMessageInfo); \ No newline at end of file +extern "C" bool MemoryCache_DBData_QueueInsert(LPCXSTR lpszSQLStr, XENGINE_DBMESSAGEQUEUE* pSt_DBMessageInfo); +/************************************************************************* + 用户信息高速缓存导出函数 +**************************************************************************/ +/******************************************************************** +函数名称:MemoryCache_DBUser_Init +函数功能:初始化高速缓存管理器 + 参数.一:nTimeLast + In/Out:In + 类型:整数型 + 可空:N + 意思:允许的最后更新时间存在秒数 + 参数.二:nTimeStart + In/Out:In + 类型:整数型 + 可空:N + 意思:允许的最大保留时间 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool MemoryCache_DBUser_Init(int nTimeLast, int nTimeStart, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam = NULL); +/******************************************************************** +函数名称:MemoryCache_DBUser_SetHandle +函数功能:设置句柄 + 参数.一:xhDBSQL + In/Out:In + 类型:句柄 + 可空:N + 意思:数据库句柄 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool MemoryCache_DBUser_SetHandle(XNETHANDLE xhDBSQL); +/******************************************************************** +函数名称:MemoryCache_DBUser_Destory +函数功能:销毁高速缓存管理器 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool MemoryCache_DBUser_Destory(); +/******************************************************************** +函数名称:MemoryCache_DBUser_DataInsert +函数功能:插入一条数据到高速缓存 + 参数.一:pSt_DBUserInfo + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要插入的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool MemoryCache_DBUser_DataInsert(XENGINE_PROTOCOL_USERINFO* pSt_DBUserInfo); +/******************************************************************** +函数名称:MemoryCache_DBUser_DataQuery +函数功能:查询高速缓存 + 参数.一:pSt_DBUserInfo + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要查询的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool MemoryCache_DBUser_DataQuery(XENGINE_PROTOCOL_USERINFO* pSt_DBUserInfo); +/******************************************************************** +函数名称:MemoryCache_DBUser_DataDelete +函数功能:删除高速缓存 + 参数.一:pSt_DBUserInfo + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要操作的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool MemoryCache_DBUser_DataDelete(XENGINE_PROTOCOL_USERINFO* pSt_DBUserInfo); \ No newline at end of file diff --git a/XEngine_Source/MQCore_MemoryCache/pch.cpp b/XEngine_Source/MQCore_MemoryCache/pch.cpp index fe28202..342e9f7 100644 --- a/XEngine_Source/MQCore_MemoryCache/pch.cpp +++ b/XEngine_Source/MQCore_MemoryCache/pch.cpp @@ -1,5 +1,6 @@ #include "pch.h" #include "MemoryCache_DBData/MemoryCache_DBData.h" +#include "MemoryCache_DBUser/MemoryCache_DBUser.h" /******************************************************************** // Created: 2024/11/21 15:01:53 // File Name: D:\XEngine_MQService\XEngine_Source\MQCore_MemoryCache\pch.cpp @@ -15,6 +16,7 @@ bool MemoryCache_IsErrorOccur = false; XLONG MemoryCache_dwErrorCode = 0; ////////////////////////////////////////////////////////////////////////// CMemoryCache_DBData m_MemoryDBData; +CMemoryCache_DBUser m_MemoryDBUser; ////////////////////////////////////////////////////////////////////////// // 导出的函数 ////////////////////////////////////////////////////////////////////////// @@ -56,4 +58,31 @@ extern "C" bool MemoryCache_DBData_DataDelete(XENGINE_DBMESSAGEQUEUE* pSt_DBMess extern "C" bool MemoryCache_DBData_QueueInsert(LPCXSTR lpszSQLStr, XENGINE_DBMESSAGEQUEUE* pSt_DBMessageInfo) { return m_MemoryDBData.MemoryCache_DBData_QueueInsert(lpszSQLStr, pSt_DBMessageInfo); +} +/************************************************************************* + 用户信息高速缓存导出函数 +**************************************************************************/ +extern "C" bool MemoryCache_DBUser_Init(int nTimeLast, int nTimeStart, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam) +{ + return m_MemoryDBUser.MemoryCache_DBUser_Init(nTimeLast, nTimeStart, fpCall_MemoryCache, lParam); +} +extern "C" bool MemoryCache_DBUser_SetHandle(XNETHANDLE xhDBSQL) +{ + return m_MemoryDBUser.MemoryCache_DBUser_SetHandle(xhDBSQL); +} +extern "C" bool MemoryCache_DBUser_Destory() +{ + return m_MemoryDBUser.MemoryCache_DBUser_Destory(); +} +extern "C" bool MemoryCache_DBUser_DataInsert(XENGINE_PROTOCOL_USERINFO* pSt_DBUserInfo) +{ + return m_MemoryDBUser.MemoryCache_DBUser_DataInsert(pSt_DBUserInfo); +} +extern "C" bool MemoryCache_DBUser_DataQuery(XENGINE_PROTOCOL_USERINFO* pSt_DBUserInfo) +{ + return m_MemoryDBUser.MemoryCache_DBUser_DataQuery(pSt_DBUserInfo); +} +extern "C" bool MemoryCache_DBUser_DataDelete(XENGINE_PROTOCOL_USERINFO* pSt_DBUserInfo) +{ + return m_MemoryDBUser.MemoryCache_DBUser_DataDelete(pSt_DBUserInfo); } \ No newline at end of file diff --git a/XEngine_Source/XEngine_MQServiceApp/MQService_Task.cpp b/XEngine_Source/XEngine_MQServiceApp/MQService_Task.cpp index edf65ce..7b13e65 100644 --- a/XEngine_Source/XEngine_MQServiceApp/MQService_Task.cpp +++ b/XEngine_Source/XEngine_MQServiceApp/MQService_Task.cpp @@ -85,4 +85,15 @@ void CALLBACK MessageQueue_CBTask_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE enM XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("高速缓存,消息主题:%s,序列:%lld,插入缓存队列到数据库失败,缓存剩余队列:%ld"), ((XENGINE_DBMESSAGEQUEUE*)pSt_DBInfo)->tszQueueName, ((XENGINE_DBMESSAGEQUEUE*)pSt_DBInfo)->nQueueSerial, nListCount); } } + else if (ENUM_MEMORYCACHE_CALLBACK_TYPE_USER_QUERY == enMemoryType) + { + if (bSuccess) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("高速缓存,用户:%s,删除过期缓存成功,缓存剩余队列:%ld"), ((XENGINE_PROTOCOL_USERINFO*)pSt_DBInfo)->tszUserName, nListCount); + } + else + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("高速缓存,用户:%s,删除过期缓存失败,缓存剩余队列:%ld"), ((XENGINE_PROTOCOL_USERINFO*)pSt_DBInfo)->tszUserName, nListCount); + } + } } \ No newline at end of file diff --git a/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp b/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp index ef105f6..c32a841 100644 --- a/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp +++ b/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp @@ -45,6 +45,7 @@ void ServiceApp_Stop(int signo) DBModule_MQData_Destory(); DBModule_MQUser_Destory(); MemoryCache_DBData_Destory(); + MemoryCache_DBUser_Destory(); SessionModule_Client_Destory(); HelpComponents_XLog_Destroy(xhLog); @@ -177,14 +178,27 @@ int main(int argc, char** argv) { if (!MemoryCache_DBData_Init(st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeStart, MessageQueue_CBTask_MemoryCache)) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化高速缓存服务失败,错误:%lX"), MemoryCache_GetLastError()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化消息内容高速缓存服务失败,错误:%lX"), MemoryCache_GetLastError()); goto NETSERVICEEXIT; } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化高速缓存服务成功,更新最大时间:%d,存储最大时间:%d"), st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeStart); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化消息内容高速缓存服务成功,更新最大时间:%d,存储最大时间:%d"), st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeStart); } else { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,检测到没有启用高速缓存服务"), st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeStart); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,检测到没有启用消息内容高速缓存服务"), st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeStart); + } + if (st_ServiceCfg.st_XMemory.bUserQueryEnable) + { + if (!MemoryCache_DBUser_Init(st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeStart, MessageQueue_CBTask_MemoryCache)) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化用户信息高速缓存服务失败,错误:%lX"), MemoryCache_GetLastError()); + goto NETSERVICEEXIT; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化用户信息高速缓存服务成功,更新最大时间:%d,存储最大时间:%d"), st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeStart); + } + else + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,检测到没有启用用户信息高速缓存服务"), st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeStart); } if (!bIsTest) @@ -442,6 +456,7 @@ int main(int argc, char** argv) DBModule_MQData_Destory(); DBModule_MQUser_Destory(); MemoryCache_DBData_Destory(); + MemoryCache_DBUser_Destory(); SessionModule_Client_Destory(); HelpComponents_XLog_Destroy(xhLog); From 38fadad5cd8f4f40d24df88a3fedee30b96e5971 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 17 Jan 2025 10:49:18 +0800 Subject: [PATCH 23/29] fixed:sometimes get left count value is incorrect --- XEngine_Source/MQCore_DBModule/DBModule_Define.h | 2 +- .../MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp | 4 ++-- .../MQCore_DBModule/DBModule_MQData/DBModule_MQData.h | 2 +- XEngine_Source/MQCore_DBModule/pch.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/XEngine_Source/MQCore_DBModule/DBModule_Define.h b/XEngine_Source/MQCore_DBModule/DBModule_Define.h index f6d19c6..1955630 100644 --- a/XEngine_Source/MQCore_DBModule/DBModule_Define.h +++ b/XEngine_Source/MQCore_DBModule/DBModule_Define.h @@ -270,7 +270,7 @@ extern "C" bool DBModule_MQData_ShowTable(XCHAR*** pppszTableName, int* pInt_Lis 意思:是否成功 备注: *********************************************************************/ -extern "C" bool DBModule_MQData_GetLeftCount(LPCXSTR lpszTableName, int nSerial, int* pInt_Count); +extern "C" bool DBModule_MQData_GetLeftCount(LPCXSTR lpszTableName, __int64x nSerial, int* pInt_Count); /************************************************************************* 消息用户导出函数 **************************************************************************/ diff --git a/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp b/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp index 01f1ab4..f44c265 100644 --- a/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp +++ b/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp @@ -802,7 +802,7 @@ bool CDBModule_MQData::DBModule_MQData_ShowTable(XCHAR*** pppszTableName, int* p 意思:是否成功 备注: *********************************************************************/ -bool CDBModule_MQData::DBModule_MQData_GetLeftCount(LPCXSTR lpszTableName, int nSerial, int* pInt_Count) +bool CDBModule_MQData::DBModule_MQData_GetLeftCount(LPCXSTR lpszTableName, __int64x nSerial, int* pInt_Count) { DBModule_IsErrorOccur = false; @@ -820,7 +820,7 @@ bool CDBModule_MQData::DBModule_MQData_GetLeftCount(LPCXSTR lpszTableName, int n XCHAR tszSQLStatement[1024]; memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); - _xstprintf(tszSQLStatement, _X("SELECT COUNT(*) FROM %s WHERE nQueueSerial > %d"), lpszTableName, nSerial); + _xstprintf(tszSQLStatement, _X("SELECT COUNT(*) FROM %s WHERE nQueueSerial > %lld"), lpszTableName, nSerial); if (!DataBase_MySQL_ExecuteQuery(xhDBSQL, &xhTable, tszSQLStatement, &nllLine, &nllRow)) { DBModule_IsErrorOccur = true; diff --git a/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.h b/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.h index e61789c..97f9b4d 100644 --- a/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.h +++ b/XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.h @@ -28,7 +28,7 @@ class CDBModule_MQData bool DBModule_MQData_DeleteTable(LPCXSTR lpszQueueName); bool DBModule_MQData_ModifyTable(LPCXSTR lpszSrcTable, LPCXSTR lpszDstTable); bool DBModule_MQData_ShowTable(XCHAR*** pppszTableName, int* pInt_ListCount); - bool DBModule_MQData_GetLeftCount(LPCXSTR lpszTableName, int nSerial, int* pInt_Count); + bool DBModule_MQData_GetLeftCount(LPCXSTR lpszTableName, __int64x nSerial, int* pInt_Count); private: bool m_bMemoryQuery = false; bool m_bMemoryInsert = false; diff --git a/XEngine_Source/MQCore_DBModule/pch.cpp b/XEngine_Source/MQCore_DBModule/pch.cpp index 43db119..2c4ffc9 100644 --- a/XEngine_Source/MQCore_DBModule/pch.cpp +++ b/XEngine_Source/MQCore_DBModule/pch.cpp @@ -75,7 +75,7 @@ extern "C" bool DBModule_MQData_ShowTable(XCHAR * **pppszTableName, int* pInt_Li { return m_DBData.DBModule_MQData_ShowTable(pppszTableName, pInt_ListCount); } -extern "C" bool DBModule_MQData_GetLeftCount(LPCXSTR lpszTableName, int nSerial, int* pInt_Count) +extern "C" bool DBModule_MQData_GetLeftCount(LPCXSTR lpszTableName, __int64x nSerial, int* pInt_Count) { return m_DBData.DBModule_MQData_GetLeftCount(lpszTableName, nSerial, pInt_Count); } From 8660615602f17bb51e75764c9b72e79ac5429fb1 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 17 Jan 2025 10:56:19 +0800 Subject: [PATCH 24/29] fixed:get count is incorrect in data memory cache --- .../MemoryCache_DBData/MemoryCache_DBData.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp index dcb15c2..eb5979a 100644 --- a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp +++ b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp @@ -313,11 +313,11 @@ XHTHREAD CALLBACK CMemoryCache_DBData::DBModule_MQUser_TimeThread(XPVOID lParam) XENGINE_DBMESSAGEQUEUE st_DBMessage = *stl_ListIterator; if (pClass_This->MemoryCache_DBData_DataDelete(&st_DBMessage)) { - pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_QUERY, true, pClass_This->stl_ListInsert.size(), (XPVOID)&st_DBMessage, pClass_This->m_lParam); + pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_QUERY, true, pClass_This->stl_MapQuery.size(), (XPVOID)&st_DBMessage, pClass_This->m_lParam); } else { - pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_QUERY, false, pClass_This->stl_ListInsert.size(), (XPVOID)&st_DBMessage, pClass_This->m_lParam); + pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_QUERY, false, pClass_This->stl_MapQuery.size(), (XPVOID)&st_DBMessage, pClass_This->m_lParam); } } std::this_thread::sleep_for(std::chrono::seconds(1)); From 72950e43252da14c83904f81b778a21c79af3294 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 17 Jan 2025 14:19:20 +0800 Subject: [PATCH 25/29] fixed:The total available time of memory cache data is not handled correctly --- XEngine_Release/XEngine_Config/XEngine_Config.json | 2 +- XEngine_Source/MQCore_ConfigModule/Config_Define.h | 2 +- .../MQCore_ConfigModule/Config_Json/Config_Json.cpp | 2 +- .../MemoryCache_DBData/MemoryCache_DBData.cpp | 12 ++++++------ .../MemoryCache_DBData/MemoryCache_DBData.h | 4 ++-- .../MemoryCache_DBUser/MemoryCache_DBUser.cpp | 10 +++++----- .../MemoryCache_DBUser/MemoryCache_DBUser.h | 4 ++-- .../MQCore_MemoryCache/MemoryCache_Define.h | 12 ++++++------ XEngine_Source/MQCore_MemoryCache/pch.cpp | 8 ++++---- .../XEngine_MQServiceApp/XEngine_MQServiceApp.cpp | 12 ++++++------ 10 files changed, 34 insertions(+), 34 deletions(-) diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index d66d9ba..67b2e98 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -39,7 +39,7 @@ "bDataInsertEnable":true, "bUserQueryEnable":true, "nTimeLast":3600, - "nTimeStart":0 + "nTimeCount":0 }, "XReport":{ "bEnable":true, diff --git a/XEngine_Source/MQCore_ConfigModule/Config_Define.h b/XEngine_Source/MQCore_ConfigModule/Config_Define.h index 3c2e137..29ee591 100644 --- a/XEngine_Source/MQCore_ConfigModule/Config_Define.h +++ b/XEngine_Source/MQCore_ConfigModule/Config_Define.h @@ -61,7 +61,7 @@ typedef struct bool bDataInsertEnable; bool bUserQueryEnable; int nTimeLast; - int nTimeStart; + int nTimeCount; }st_XMemory; struct { diff --git a/XEngine_Source/MQCore_ConfigModule/Config_Json/Config_Json.cpp b/XEngine_Source/MQCore_ConfigModule/Config_Json/Config_Json.cpp index 74342de..e6f4744 100644 --- a/XEngine_Source/MQCore_ConfigModule/Config_Json/Config_Json.cpp +++ b/XEngine_Source/MQCore_ConfigModule/Config_Json/Config_Json.cpp @@ -134,7 +134,7 @@ bool CConfig_Json::Config_Json_File(LPCXSTR lpszConfigFile,XENGINE_SERVERCONFIG pSt_ServerConfig->st_XMemory.bDataInsertEnable = st_JsonXMemory["bDataInsertEnable"].asBool(); pSt_ServerConfig->st_XMemory.bUserQueryEnable = st_JsonXMemory["bUserQueryEnable"].asBool(); pSt_ServerConfig->st_XMemory.nTimeLast = st_JsonXMemory["nTimeLast"].asInt(); - pSt_ServerConfig->st_XMemory.nTimeStart = st_JsonXMemory["nTimeStart"].asInt(); + pSt_ServerConfig->st_XMemory.nTimeCount = st_JsonXMemory["nTimeCount"].asInt(); if (st_JsonRoot["XReport"].empty() || (3 != st_JsonRoot["XReport"].size())) { diff --git a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp index eb5979a..22db577 100644 --- a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp +++ b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp @@ -29,24 +29,24 @@ CMemoryCache_DBData::~CMemoryCache_DBData() 类型:整数型 可空:N 意思:允许的最后更新时间存在秒数 - 参数.二:nTimeStart + 参数.二:nTimeCount In/Out:In 类型:整数型 可空:N - 意思:允许的最大保留时间 + 意思:允许的最大保留时间.将不关心是否使用,0不启用 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CMemoryCache_DBData::MemoryCache_DBData_Init(int nTimeLast, int nTimeStart, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam /* = NULL */) +bool CMemoryCache_DBData::MemoryCache_DBData_Init(int nTimeLast, int nTimeCount, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam /* = NULL */) { MemoryCache_IsErrorOccur = false; bIsRun = true; m_nTimeLast = nTimeLast; - m_nTimeStart = nTimeStart; + m_nTimeCount = nTimeCount; m_lParam = lParam; lpCall_MemoryCache = fpCall_MemoryCache; @@ -201,7 +201,7 @@ bool CMemoryCache_DBData::MemoryCache_DBData_DataQuery(XENGINE_DBMESSAGEQUEUE* p In/Out:In 类型:数据结构指针 可空:N - 意思:输入要操作的信息 + 意思:输入要操作的信息` 返回值 类型:逻辑型 意思:是否成功 @@ -301,7 +301,7 @@ XHTHREAD CALLBACK CMemoryCache_DBData::DBModule_MQUser_TimeThread(XPVOID lParam) { stl_ListDelete.push_back(stl_MapIterator->second.st_DBMessageInfo); } - else if (pClass_This->m_nTimeStart > 0 && (nTimeEnd - pClass_This->m_nTimeStart)) + else if (pClass_This->m_nTimeCount > 0 && ((nTimeEnd - stl_MapIterator->second.nTimeLast) > pClass_This->m_nTimeCount)) { stl_ListDelete.push_back(stl_MapIterator->second.st_DBMessageInfo); } diff --git a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.h b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.h index 09ecd58..6cb9638 100644 --- a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.h +++ b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.h @@ -42,7 +42,7 @@ class CMemoryCache_DBData CMemoryCache_DBData(); ~CMemoryCache_DBData(); public: - bool MemoryCache_DBData_Init(int nTimeLast, int nTimeStart, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam = NULL); + bool MemoryCache_DBData_Init(int nTimeLast, int nTimeCount, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam = NULL); bool MemoryCache_DBData_SetHandle(XNETHANDLE xhDBSQL); bool MemoryCache_DBData_Destory(); public: @@ -57,7 +57,7 @@ class CMemoryCache_DBData private: bool bIsRun = false; int m_nTimeLast = 0; - int m_nTimeStart = 0; + int m_nTimeCount = 0; XNETHANDLE m_xhDBSQL = 0; XPVOID m_lParam; diff --git a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.cpp b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.cpp index e06f06f..40ef238 100644 --- a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.cpp +++ b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.cpp @@ -29,24 +29,24 @@ CMemoryCache_DBUser::~CMemoryCache_DBUser() 类型:整数型 可空:N 意思:允许的最后更新时间存在秒数 - 参数.二:nTimeStart + 参数.二:nTimeCount In/Out:In 类型:整数型 可空:N - 意思:允许的最大保留时间 + 意思:允许的最大保留时间.将不关心是否使用,0不启用 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CMemoryCache_DBUser::MemoryCache_DBUser_Init(int nTimeLast, int nTimeStart, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam /* = NULL */) +bool CMemoryCache_DBUser::MemoryCache_DBUser_Init(int nTimeLast, int nTimeCount, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam /* = NULL */) { MemoryCache_IsErrorOccur = false; bIsRun = true; m_nTimeLast = nTimeLast; - m_nTimeStart = nTimeStart; + m_nTimeCount = nTimeCount; m_lParam = lParam; lpCall_MemoryCache = fpCall_MemoryCache; @@ -229,7 +229,7 @@ XHTHREAD CALLBACK CMemoryCache_DBUser::DBModule_MQUser_TimeThread(XPVOID lParam) { stl_ListDelete.push_back(stl_MapIterator->second.st_DBUserInfo); } - else if (pClass_This->m_nTimeStart > 0 && (nTimeEnd - pClass_This->m_nTimeStart)) + else if (pClass_This->m_nTimeCount > 0 && ((nTimeEnd - stl_MapIterator->second.nTimeLast) > pClass_This->m_nTimeCount)) { stl_ListDelete.push_back(stl_MapIterator->second.st_DBUserInfo); } diff --git a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.h b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.h index f197924..171dc88 100644 --- a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.h +++ b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.h @@ -23,7 +23,7 @@ class CMemoryCache_DBUser CMemoryCache_DBUser(); ~CMemoryCache_DBUser(); public: - bool MemoryCache_DBUser_Init(int nTimeLast, int nTimeStart, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam = NULL); + bool MemoryCache_DBUser_Init(int nTimeLast, int nTimeCount, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam = NULL); bool MemoryCache_DBUser_SetHandle(XNETHANDLE xhDBSQL); bool MemoryCache_DBUser_Destory(); public: @@ -35,7 +35,7 @@ class CMemoryCache_DBUser private: bool bIsRun = false; int m_nTimeLast = 0; - int m_nTimeStart = 0; + int m_nTimeCount = 0; XNETHANDLE m_xhDBSQL = 0; XPVOID m_lParam; diff --git a/XEngine_Source/MQCore_MemoryCache/MemoryCache_Define.h b/XEngine_Source/MQCore_MemoryCache/MemoryCache_Define.h index 51cfc26..7f27fd2 100644 --- a/XEngine_Source/MQCore_MemoryCache/MemoryCache_Define.h +++ b/XEngine_Source/MQCore_MemoryCache/MemoryCache_Define.h @@ -35,17 +35,17 @@ extern "C" XLONG MemoryCache_GetLastError(int *pInt_SysError = NULL); 类型:整数型 可空:N 意思:允许的最后更新时间存在秒数 - 参数.二:nTimeStart + 参数.二:nTimeCount In/Out:In 类型:整数型 可空:N - 意思:允许的最大保留时间 + 意思:允许的最大保留时间.将不关心是否使用,0不启用 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" bool MemoryCache_DBData_Init(int nTimeLast, int nTimeStart, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam = NULL); +extern "C" bool MemoryCache_DBData_Init(int nTimeLast, int nTimeCount, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam = NULL); /******************************************************************** 函数名称:MemoryCache_DBData_SetHandle 函数功能:设置句柄 @@ -141,17 +141,17 @@ extern "C" bool MemoryCache_DBData_QueueInsert(LPCXSTR lpszSQLStr, XENGINE_DBMES 类型:整数型 可空:N 意思:允许的最后更新时间存在秒数 - 参数.二:nTimeStart + 参数.二:nTimeCount In/Out:In 类型:整数型 可空:N - 意思:允许的最大保留时间 + 意思:允许的最大保留时间.将不关心是否使用,0不启用 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" bool MemoryCache_DBUser_Init(int nTimeLast, int nTimeStart, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam = NULL); +extern "C" bool MemoryCache_DBUser_Init(int nTimeLast, int nTimeCount, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam = NULL); /******************************************************************** 函数名称:MemoryCache_DBUser_SetHandle 函数功能:设置句柄 diff --git a/XEngine_Source/MQCore_MemoryCache/pch.cpp b/XEngine_Source/MQCore_MemoryCache/pch.cpp index 342e9f7..1a33eb5 100644 --- a/XEngine_Source/MQCore_MemoryCache/pch.cpp +++ b/XEngine_Source/MQCore_MemoryCache/pch.cpp @@ -31,9 +31,9 @@ extern "C" XLONG MemoryCache_GetLastError(int* pInt_SysError) /************************************************************************* 高速缓存导出函数 **************************************************************************/ -extern "C" bool MemoryCache_DBData_Init(int nTimeLast, int nTimeStart, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam) +extern "C" bool MemoryCache_DBData_Init(int nTimeLast, int nTimeCount, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam) { - return m_MemoryDBData.MemoryCache_DBData_Init(nTimeLast, nTimeStart, fpCall_MemoryCache, lParam); + return m_MemoryDBData.MemoryCache_DBData_Init(nTimeLast, nTimeCount, fpCall_MemoryCache, lParam); } extern "C" bool MemoryCache_DBData_SetHandle(XNETHANDLE xhDBSQL) { @@ -62,9 +62,9 @@ extern "C" bool MemoryCache_DBData_QueueInsert(LPCXSTR lpszSQLStr, XENGINE_DBMES /************************************************************************* 用户信息高速缓存导出函数 **************************************************************************/ -extern "C" bool MemoryCache_DBUser_Init(int nTimeLast, int nTimeStart, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam) +extern "C" bool MemoryCache_DBUser_Init(int nTimeLast, int nTimeCount, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_CACHE fpCall_MemoryCache, XPVOID lParam) { - return m_MemoryDBUser.MemoryCache_DBUser_Init(nTimeLast, nTimeStart, fpCall_MemoryCache, lParam); + return m_MemoryDBUser.MemoryCache_DBUser_Init(nTimeLast, nTimeCount, fpCall_MemoryCache, lParam); } extern "C" bool MemoryCache_DBUser_SetHandle(XNETHANDLE xhDBSQL) { diff --git a/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp b/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp index c32a841..a9db0fd 100644 --- a/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp +++ b/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp @@ -176,29 +176,29 @@ int main(int argc, char** argv) if (st_ServiceCfg.st_XMemory.bDataQueryEnable || st_ServiceCfg.st_XMemory.bDataInsertEnable) { - if (!MemoryCache_DBData_Init(st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeStart, MessageQueue_CBTask_MemoryCache)) + if (!MemoryCache_DBData_Init(st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeCount, MessageQueue_CBTask_MemoryCache)) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化消息内容高速缓存服务失败,错误:%lX"), MemoryCache_GetLastError()); goto NETSERVICEEXIT; } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化消息内容高速缓存服务成功,更新最大时间:%d,存储最大时间:%d"), st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeStart); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化消息内容高速缓存服务成功,更新最大时间:%d,存储最大时间:%d"), st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeCount); } else { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,检测到没有启用消息内容高速缓存服务"), st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeStart); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,检测到没有启用消息内容高速缓存服务"), st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeCount); } if (st_ServiceCfg.st_XMemory.bUserQueryEnable) { - if (!MemoryCache_DBUser_Init(st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeStart, MessageQueue_CBTask_MemoryCache)) + if (!MemoryCache_DBUser_Init(st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeCount, MessageQueue_CBTask_MemoryCache)) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化用户信息高速缓存服务失败,错误:%lX"), MemoryCache_GetLastError()); goto NETSERVICEEXIT; } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化用户信息高速缓存服务成功,更新最大时间:%d,存储最大时间:%d"), st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeStart); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化用户信息高速缓存服务成功,更新最大时间:%d,存储最大时间:%d"), st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeCount); } else { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,检测到没有启用用户信息高速缓存服务"), st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeStart); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,检测到没有启用用户信息高速缓存服务"), st_ServiceCfg.st_XMemory.nTimeLast, st_ServiceCfg.st_XMemory.nTimeCount); } if (!bIsTest) From 3e59917b9e5137bf24eb5e14e39d3ad0989b607d Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 17 Jan 2025 14:34:38 +0800 Subject: [PATCH 26/29] fixed:memory cache query is incorrect --- .../MemoryCache_DBData/MemoryCache_DBData.cpp | 5 +++-- .../MemoryCache_DBUser/MemoryCache_DBUser.cpp | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp index 22db577..3a59ddd 100644 --- a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp +++ b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp @@ -136,7 +136,7 @@ bool CMemoryCache_DBData::MemoryCache_DBData_DataInsert(XENGINE_DBMESSAGEQUEUE* MEMORYCACHE_DBINFO st_DBInfo = {}; - st_DBInfo.nTimeStart = time(NULL); + st_DBInfo.nTimeLast = st_DBInfo.nTimeStart = time(NULL); st_DBInfo.st_DBMessageInfo = *pSt_DBMessageInfo; std::tuple<__int64x, std::string> stl_Key(pSt_DBMessageInfo->nQueueSerial, pSt_DBMessageInfo->tszQueueName); @@ -297,7 +297,7 @@ XHTHREAD CALLBACK CMemoryCache_DBData::DBModule_MQUser_TimeThread(XPVOID lParam) pClass_This->st_LockerQuery.lock_shared(); for (auto stl_MapIterator = pClass_This->stl_MapQuery.begin(); stl_MapIterator != pClass_This->stl_MapQuery.end(); stl_MapIterator++) { - if (stl_MapIterator->second.nTimeLast > (nTimeEnd - pClass_This->m_nTimeLast)) + if ((nTimeEnd - stl_MapIterator->second.nTimeLast) > pClass_This->m_nTimeLast) { stl_ListDelete.push_back(stl_MapIterator->second.st_DBMessageInfo); } @@ -320,6 +320,7 @@ XHTHREAD CALLBACK CMemoryCache_DBData::DBModule_MQUser_TimeThread(XPVOID lParam) pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_DATA_QUERY, false, pClass_This->stl_MapQuery.size(), (XPVOID)&st_DBMessage, pClass_This->m_lParam); } } + stl_ListDelete.clear(); std::this_thread::sleep_for(std::chrono::seconds(1)); } return 0; diff --git a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.cpp b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.cpp index 40ef238..52aae56 100644 --- a/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.cpp +++ b/XEngine_Source/MQCore_MemoryCache/MemoryCache_DBUser/MemoryCache_DBUser.cpp @@ -129,7 +129,7 @@ bool CMemoryCache_DBUser::MemoryCache_DBUser_DataInsert(XENGINE_PROTOCOL_USERINF { MEMORYCACHE_DBUSER st_DBInfo = {}; - st_DBInfo.nTimeStart = time(NULL); + st_DBInfo.nTimeLast = st_DBInfo.nTimeStart = time(NULL); st_DBInfo.st_DBUserInfo = *pSt_DBUserInfo; stl_MapQuery[pSt_DBUserInfo->tszUserName] = st_DBInfo; } @@ -225,7 +225,7 @@ XHTHREAD CALLBACK CMemoryCache_DBUser::DBModule_MQUser_TimeThread(XPVOID lParam) pClass_This->st_LockerQuery.lock_shared(); for (auto stl_MapIterator = pClass_This->stl_MapQuery.begin(); stl_MapIterator != pClass_This->stl_MapQuery.end(); stl_MapIterator++) { - if (stl_MapIterator->second.nTimeLast > (nTimeEnd - pClass_This->m_nTimeLast)) + if ((nTimeEnd - stl_MapIterator->second.nTimeLast) > pClass_This->m_nTimeLast) { stl_ListDelete.push_back(stl_MapIterator->second.st_DBUserInfo); } @@ -248,6 +248,7 @@ XHTHREAD CALLBACK CMemoryCache_DBUser::DBModule_MQUser_TimeThread(XPVOID lParam) pClass_This->lpCall_MemoryCache(ENUM_MEMORYCACHE_CALLBACK_TYPE_USER_QUERY, false, pClass_This->stl_MapQuery.size(), (XPVOID)&st_DBUser, pClass_This->m_lParam); } } + stl_ListDelete.clear(); std::this_thread::sleep_for(std::chrono::seconds(1)); } return 0; From 4f4807208267411ed9f168a40144498f52590d86 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 17 Jan 2025 15:00:33 +0800 Subject: [PATCH 27/29] fixed:user memory not work --- .../MQCore_DBModule/DBModule_Define.h | 11 ++++-- .../DBModule_MQUser/DBModule_MQUser.cpp | 34 +++++++++++++++++-- .../DBModule_MQUser/DBModule_MQUser.h | 7 ++-- XEngine_Source/MQCore_DBModule/pch.cpp | 4 +-- .../XEngine_MQServiceApp.cpp | 2 +- 5 files changed, 46 insertions(+), 12 deletions(-) diff --git a/XEngine_Source/MQCore_DBModule/DBModule_Define.h b/XEngine_Source/MQCore_DBModule/DBModule_Define.h index 1955630..f107773 100644 --- a/XEngine_Source/MQCore_DBModule/DBModule_Define.h +++ b/XEngine_Source/MQCore_DBModule/DBModule_Define.h @@ -282,12 +282,17 @@ extern "C" bool DBModule_MQData_GetLeftCount(LPCXSTR lpszTableName, __int64x nSe 类型:数据结构指针 可空:N 意思:数据MYSQL数据库连接信息 - 参数.二:fpCall_TimePublish + 参数.二:bMemoryQuery + In/Out:In + 类型:逻辑型 + 可空:N + 意思:是否启用高速缓存查询 + 参数.三:fpCall_TimePublish In/Out:In 类型:回调函数 可空:N 意思:定时消息发布回调函数 - 参数.三:lParam + 参数.四:lParam In/Out:In 类型:无类型指针 可空:Y @@ -297,7 +302,7 @@ extern "C" bool DBModule_MQData_GetLeftCount(LPCXSTR lpszTableName, __int64x nSe 意思:是否成功 备注: *********************************************************************/ -extern "C" bool DBModule_MQUser_Init(DATABASE_MYSQL_CONNECTINFO* pSt_DBConnector, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_TIMEPUBLISH fpCall_TimePublish, XPVOID lParam = NULL); +extern "C" bool DBModule_MQUser_Init(DATABASE_MYSQL_CONNECTINFO* pSt_DBConnector, bool bMemoryQuery, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_TIMEPUBLISH fpCall_TimePublish, XPVOID lParam = NULL); /******************************************************************** 函数名称:DBModule_MQUser_Destory 函数功能:销毁数据库管理器 diff --git a/XEngine_Source/MQCore_DBModule/DBModule_MQUser/DBModule_MQUser.cpp b/XEngine_Source/MQCore_DBModule/DBModule_MQUser/DBModule_MQUser.cpp index f4a588d..1ee3bce 100644 --- a/XEngine_Source/MQCore_DBModule/DBModule_MQUser/DBModule_MQUser.cpp +++ b/XEngine_Source/MQCore_DBModule/DBModule_MQUser/DBModule_MQUser.cpp @@ -30,12 +30,17 @@ CDBModule_MQUser::~CDBModule_MQUser() 类型:数据结构指针 可空:N 意思:数据MYSQL数据库连接信息 - 参数.二:fpCall_TimePublish + 参数.二:bMemoryQuery + In/Out:In + 类型:逻辑型 + 可空:N + 意思:是否启用高速缓存查询 + 参数.三:fpCall_TimePublish In/Out:In 类型:回调函数 可空:N 意思:定时消息发布回调函数 - 参数.三:lParam + 参数.四:lParam In/Out:In 类型:无类型指针 可空:Y @@ -45,7 +50,7 @@ CDBModule_MQUser::~CDBModule_MQUser() 意思:是否成功 备注: *********************************************************************/ -bool CDBModule_MQUser::DBModule_MQUser_Init(DATABASE_MYSQL_CONNECTINFO* pSt_DBConnector, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_TIMEPUBLISH fpCall_TimePublish, XPVOID lParam /* = NULL */) +bool CDBModule_MQUser::DBModule_MQUser_Init(DATABASE_MYSQL_CONNECTINFO* pSt_DBConnector, bool bMemoryQuery, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_TIMEPUBLISH fpCall_TimePublish, XPVOID lParam /* = NULL */) { DBModule_IsErrorOccur = false; @@ -64,6 +69,7 @@ bool CDBModule_MQUser::DBModule_MQUser_Init(DATABASE_MYSQL_CONNECTINFO* pSt_DBCo return false; } + m_bMemoryQuery = bMemoryQuery; bIsRun = true; m_lParam = lParam; lpCall_TimePublish = fpCall_TimePublish; @@ -155,6 +161,13 @@ bool CDBModule_MQUser::DBModule_MQUser_UserQuery(XENGINE_PROTOCOL_USERINFO* pSt_ DBModule_dwErrorCode = ERROR_XENGINE_MQCORE_DATABASE_PARAMENT; return false; } + if (m_bMemoryQuery) + { + if (MemoryCache_DBUser_DataQuery(pSt_UserInfo)) + { + return true; + } + } //查询 XNETHANDLE xhTable = 0; __int64u nllLine = 0; @@ -206,6 +219,11 @@ bool CDBModule_MQUser::DBModule_MQUser_UserQuery(XENGINE_PROTOCOL_USERINFO* pSt_ _tcsxcpy(pSt_UserInfo->tszCreateTime, pptszResult[9]); } DataBase_MySQL_FreeResult(xhDBSQL, xhTable); + + if (m_bMemoryQuery) + { + MemoryCache_DBUser_DataInsert(pSt_UserInfo); + } return true; } /******************************************************************** @@ -241,6 +259,10 @@ bool CDBModule_MQUser::DBModule_MQUser_UserDelete(XENGINE_PROTOCOL_USERINFO* pSt DBModule_dwErrorCode = DataBase_GetLastError(); return false; } + if (m_bMemoryQuery) + { + MemoryCache_DBUser_DataDelete(pSt_UserInfo); + } return true; } /******************************************************************** @@ -284,6 +306,12 @@ bool CDBModule_MQUser::DBModule_MQUser_UserUPDate(XENGINE_PROTOCOL_USERINFO* pSt return false; } + if (m_bMemoryQuery) + { + MemoryCache_DBUser_DataDelete(pSt_UserInfo); + MemoryCache_DBUser_DataInsert(pSt_UserInfo); + } + return true; } /******************************************************************** diff --git a/XEngine_Source/MQCore_DBModule/DBModule_MQUser/DBModule_MQUser.h b/XEngine_Source/MQCore_DBModule/DBModule_MQUser/DBModule_MQUser.h index b9df976..51473ce 100644 --- a/XEngine_Source/MQCore_DBModule/DBModule_MQUser/DBModule_MQUser.h +++ b/XEngine_Source/MQCore_DBModule/DBModule_MQUser/DBModule_MQUser.h @@ -17,7 +17,7 @@ class CDBModule_MQUser CDBModule_MQUser(); ~CDBModule_MQUser(); public: - bool DBModule_MQUser_Init(DATABASE_MYSQL_CONNECTINFO* pSt_DBConnector, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_TIMEPUBLISH fpCall_TimePublish, XPVOID lParam = NULL); + bool DBModule_MQUser_Init(DATABASE_MYSQL_CONNECTINFO* pSt_DBConnector, bool bMemoryQuery, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_TIMEPUBLISH fpCall_TimePublish, XPVOID lParam = NULL); bool DBModule_MQUser_Destory(); bool DBModule_MQUser_UserInsert(XENGINE_PROTOCOL_USERINFO* pSt_UserInfo); bool DBModule_MQUser_UserQuery(XENGINE_PROTOCOL_USERINFO* pSt_UserInfo); @@ -51,6 +51,7 @@ class CDBModule_MQUser XPVOID m_lParam; CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_TIMEPUBLISH lpCall_TimePublish; private: - bool bIsRun; - XNETHANDLE xhDBSQL; + bool bIsRun = false; + bool m_bMemoryQuery = false; + XNETHANDLE xhDBSQL = 0; }; \ No newline at end of file diff --git a/XEngine_Source/MQCore_DBModule/pch.cpp b/XEngine_Source/MQCore_DBModule/pch.cpp index 2c4ffc9..0ff9e09 100644 --- a/XEngine_Source/MQCore_DBModule/pch.cpp +++ b/XEngine_Source/MQCore_DBModule/pch.cpp @@ -82,9 +82,9 @@ extern "C" bool DBModule_MQData_GetLeftCount(LPCXSTR lpszTableName, __int64x nSe /************************************************************************* 消息用户导出函数 **************************************************************************/ -extern "C" bool DBModule_MQUser_Init(DATABASE_MYSQL_CONNECTINFO * pSt_DBConnector, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_TIMEPUBLISH fpCall_TimePublish, XPVOID lParam) +extern "C" bool DBModule_MQUser_Init(DATABASE_MYSQL_CONNECTINFO * pSt_DBConnector, bool bMemoryQuery, CALLBACK_MESSAGEQUEUE_MODULE_DATABASE_TIMEPUBLISH fpCall_TimePublish, XPVOID lParam) { - return m_DBUser.DBModule_MQUser_Init(pSt_DBConnector, fpCall_TimePublish, lParam); + return m_DBUser.DBModule_MQUser_Init(pSt_DBConnector, bMemoryQuery, fpCall_TimePublish, lParam); } extern "C" bool DBModule_MQUser_Destory() { diff --git a/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp b/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp index a9db0fd..5842154 100644 --- a/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp +++ b/XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp @@ -208,7 +208,7 @@ int main(int argc, char** argv) XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化消息数据数据库失败,错误:%lX"), DBModule_GetLastError()); goto NETSERVICEEXIT; } - if (!DBModule_MQUser_Init((DATABASE_MYSQL_CONNECTINFO*)&st_ServiceCfg.st_XSql, MessageQueue_CBTask_TimePublish)) + if (!DBModule_MQUser_Init((DATABASE_MYSQL_CONNECTINFO*)&st_ServiceCfg.st_XSql, st_ServiceCfg.st_XMemory.bUserQueryEnable, MessageQueue_CBTask_TimePublish)) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化消息用户数据库失败,错误:%lX"), DBModule_GetLastError()); goto NETSERVICEEXIT; From 3f06fea26cdf0e820c827c0d37c19e406ed26e2b Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 20 Jan 2025 09:40:29 +0800 Subject: [PATCH 28/29] update:read me and document --- CHANGELOG | 36 ++++++++++++++++++++++++++++++++ README.en.md | 4 ++-- README.md | 4 ++-- XEngine_Docment/Docment_en.docx | Bin 142371 -> 145089 bytes XEngine_Docment/Docment_zh.docx | Bin 143326 -> 145500 bytes 5 files changed, 40 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index abf0fa7..328a57e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,39 @@ +XEngine_MQService V3.14.0.1001 + +增加:删除消息协议支持 +增加:用户信息内存数据库支持 +更新:依赖库 +更新:支持xengine v9版本 +更新:网络错误现在使用新的方法定义 +更新:编译器版本更新到C++20,C17 +优化:自动发布支持更多系统 +修改:消息协议定义值 +修改:VS的字符集从ansi改为unicode +修改:回调函数返回数据类型 +修正:内存没有删除老旧消息当修改消息的时候 +修正:字符集乱码问题 +修正:某些时候获取统计信息错误的问题 +修正:内存数据库获取统计信息错误的问题 +修正:总可用时间在内存数据库处理不正确的问题 +修正:内存数据查询不正确的问题 + +added:delete message support +added:user info memory cache supported +update:depend library +update:match xengine v9.x support +update:Network error codes use a new method definition +update:c++ compiler 20 and c compiler 17 +improved:ci workflows release more support +modify:msg protocol define value. +modify:change ansi to unicode character set on vs +modify:callback export type for memory cache +fixed:memory not delete old message when modify message +fixed:Character set garbled problem +fixed:sometimes get left count value is incorrect +fixed:get count is incorrect in data memory cache +fixed:The total available time of memory cache data is not handled correctly +fixed:memory cache query is incorrect +====================================================================================== XEngine_MQService V3.13.0.1001 增加:为DATA消息数据库增加高速缓存支持 diff --git a/README.en.md b/README.en.md index 7ff4846..ba1f938 100644 --- a/README.en.md +++ b/README.en.md @@ -39,7 +39,7 @@ this software support following features ## install #### XEngine Evn -you must install XEngine,need V8.31 or above,install XEngine can be refer to xengine Readme docment +you must install XEngine,need V9 or above,install XEngine can be refer to xengine Readme docment GITEE:https://gitee.com/libxengine/libxengine GITHUB:https://github.com/libxengine/libxengine @@ -64,7 +64,7 @@ Just Run it. #### Linux Linux use Makefile to complie -supproted ubuntu22.04 x64 or RockyLinux9 x64 +supproted ubuntu24.04 x64 or RockyLinux9 x64 ###### complie execute command in XEngine_Source path diff --git a/README.md b/README.md index b2abad3..87fdfd5 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ c c++Message Service ## 安装教程 #### XEngine环境 -必须安装XEngine,版本需要V8.31或者以上版本,安装XEngine可以参考其Readme文档 +必须安装XEngine,版本需要V9或者以上版本,安装XEngine可以参考其Readme文档 GITEE:https://gitee.com/libxengine/libxengine GITHUB:https://github.com/libxengine/libxengine @@ -67,7 +67,7 @@ git submodule update #### Linux Linux使用Makefile编译 -UBUNTU22.04 x64或者RockyLinux9 x64均可 +UBUNTU24.04 x64或者RockyLinux9 x64均可 在控制台运行 ###### 编译命令 diff --git a/XEngine_Docment/Docment_en.docx b/XEngine_Docment/Docment_en.docx index 120cb24fe97bb131266da6da9a0437c7b89a6105..51793ca58ca85eb862e98ec770f0eae3831adb6b 100644 GIT binary patch delta 129010 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
M!ML$wW8Vd{pB75*spFMFkuoR>4O7;46 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 delta 126151 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�+AI`FI6;YOV=BxW)ik#I}; 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

rUruzU7E4lM7%YDOqo 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

Q)1l@g$!Q*OZBWq?KT2*x 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 delta 126854 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 z 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 Date: Mon, 20 Jan 2025 09:41:14 +0800 Subject: [PATCH 29/29] update:configure --- XEngine_Release/XEngine_Config/XEngine_VerConfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/XEngine_Release/XEngine_Config/XEngine_VerConfig.json b/XEngine_Release/XEngine_Config/XEngine_VerConfig.json index 09e04b5..83d4fcb 100644 --- a/XEngine_Release/XEngine_Config/XEngine_VerConfig.json +++ b/XEngine_Release/XEngine_Config/XEngine_VerConfig.json @@ -1,5 +1,6 @@ { "XVer":[ + "3.14.0.1001 Build20250120", "3.13.0.1001 Build20241129", "3.12.0.1001 Build20240919", "3.11.0.1001 Build20240517",