diff --git a/.github/workflows/RockyArm64_build.yml b/.github/workflows/RockyArm64_build.yml deleted file mode 100644 index 2c52119cd5e1179a2afec954516679bec1b0c11a..0000000000000000000000000000000000000000 --- a/.github/workflows/RockyArm64_build.yml +++ /dev/null @@ -1,82 +0,0 @@ -name: rocky Arm64 build workflows - -on: - push: - branches: - - 'develop' - paths: - - 'XEngine_Source/**' - - 'XEngine_Release/**' - - '.github/**' - -permissions: - contents: read - -jobs: - build: - runs-on: ubuntu-24.04 - env: - IMAGE_NAME: rockylinux/rockylinux:9.5 - - strategy: - fail-fast: false - matrix: - arch: [linux/arm64] - - steps: - # 检出您的主仓库代码 - - name: Checkout main repository code - uses: actions/checkout@v4 - with: - ref: 'develop' - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Build ${{ matrix.arch }} - run: | - docker run --platform ${{ matrix.arch }} --rm \ - -v ${{ github.workspace }}:/workspace \ - -w /workspace ${{ env.IMAGE_NAME }} /bin/sh -c ' - set -e - dnf update -y - dnf install --allowerasing git make g++ wget curl jq unzip -y - - git config --global --add safe.directory /workspace - git submodule init - git submodule update - - 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_RockyLinux_9_Arm64.zip - unzip ./XEngine_RockyLinux_9_Arm64.zip -d ./XEngine_RockyLinux_9_Arm64 - cd XEngine_RockyLinux_9_Arm64 - - chmod 777 ./XEngine_LINEnv.sh - ./XEngine_LINEnv.sh -i 0 - - dnf install lua-devel opencv-devel qrencode-devel leptonica-devel tesseract-devel -y - - cp -rf ./XEngine_Include /usr/local/include - find ./XEngine_Linux -name "*.so" -exec cp {} /usr/lib64 \; - ldconfig - cd .. - - cd XEngine_Source - make ARCH=Arm64 RELEASE=1 - make FLAGS=InstallAll - make FLAGS=CleanAll - cd .. - - cd XEngine_Release - chmod 777 copydb.sh - ./copydb.sh - ./XEngine_APIServiceApp -t - chown -R $(id -u):$(id -g) . - chmod -R a+r . ' - - - name: Upload folder as artifact with RockyLinux - uses: actions/upload-artifact@v4 - with: - name: XEngine_APIServiceApp-RockyLinux_9_Arm64 - path: XEngine_Release/ - retention-days: 1 diff --git a/.github/workflows/RockyX86_64_build.yml b/.github/workflows/Rocky_build.yml similarity index 69% rename from .github/workflows/RockyX86_64_build.yml rename to .github/workflows/Rocky_build.yml index b856786c750b55cdb477e6933748bb4e4191f71a..f5e43dc1fea815cd7a16e7872a1f288b12190122 100644 --- a/.github/workflows/RockyX86_64_build.yml +++ b/.github/workflows/Rocky_build.yml @@ -1,4 +1,4 @@ -name: rocky x86_64 build workflows +name: rocky build workflows on: push: @@ -14,18 +14,28 @@ permissions: jobs: build: - runs-on: ubuntu-latest + runs-on: ${{ matrix.runner }} container: image: rockylinux/rockylinux:9.5 + options: --platform ${{ matrix.platform }} + strategy: + matrix: + include: + - arch: amd64 + runner: ubuntu-24.04 + platform: linux/amd64 + artifact: x86-64 + - arch: arm64 + runner: ubuntu-24.04-arm + platform: linux/arm64 + artifact: Arm64 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: @@ -48,31 +58,27 @@ jobs: repository: libxengine/XEngine_IPMacData path: XEngine_Source/XEngine_DBDepend/XEngine_IPMacData + - name: Set TERM variable + run: echo "TERM=xterm" >> $GITHUB_ENV + - name: install system package run: | dnf update -y - ls -al ./XEngine_Source/XEngine_DBDepend/ - ls -al ./XEngine_Source/XEngine_DBDepend/XEngine_IPMacData/XEngine_Source - dnf install gcc g++ make git jq unzip -y - # 设置依赖库的环境变量 - - name: Set up Dependency rocky linux Environment - run: | - cd libxengine - chmod 777 * - ./XEngine_LINEnv.sh -i 0 - dnf install lua-devel opencv-devel qrencode-devel leptonica-devel tesseract-devel -y - + dnf install gcc g++ make git jq unzip wget -y + - name: install xengine library - run: | + run: | 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_RockyLinux_9_x86-64.zip - unzip ./XEngine_RockyLinux_9_x86-64.zip -d ./XEngine_RockyLinux_9_x86-64 - cd XEngine_RockyLinux_9_x86-64 + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_RockyLinux_9_${{ matrix.artifact }}.zip + unzip ./XEngine_RockyLinux_9_${{ matrix.artifact }}.zip -d ./XEngine_RockyLinux_9_${{ matrix.artifact }} + cd XEngine_RockyLinux_9_${{ matrix.artifact }} - cp -rf ./XEngine_Include /usr/local/include - find ./XEngine_Linux -name "*.so" -exec cp {} /usr/lib64 \; - ldconfig + chmod 777 * + ./XEngine_LINEnv.sh -i 3 + - name: install build package + run: | + dnf install lua-devel opencv-devel qrencode-devel leptonica-devel tesseract-devel -y - name: make run: | cd XEngine_Source @@ -94,6 +100,6 @@ jobs: - name: Upload folder as artifact with RockyLinux uses: actions/upload-artifact@v4 with: - name: XEngine_APIServiceApp-RockyLinux_9_x86_64 + name: XEngine_APIServiceApp-RockyLinux_9_${{ matrix.artifact }} path: XEngine_Release/ retention-days: 1 diff --git a/.github/workflows/Ubuntux86_64_build.yml b/.github/workflows/Ubuntu_build.yml similarity index 60% rename from .github/workflows/Ubuntux86_64_build.yml rename to .github/workflows/Ubuntu_build.yml index 54c494ffda53750da500466e91e0d179c61ab42a..bbf6b5a7c2d5036eb44255835a8f351ed7a17fd4 100644 --- a/.github/workflows/Ubuntux86_64_build.yml +++ b/.github/workflows/Ubuntu_build.yml @@ -1,4 +1,4 @@ -name: ubuntu x86_64 build workflows +name: ubuntu build workflows on: push: @@ -19,6 +19,8 @@ jobs: include: - os: ubuntu-22.04 - os: ubuntu-24.04 + - os: ubuntu-22.04-arm + - os: ubuntu-24.04-arm runs-on: ${{ matrix.os }} steps: @@ -46,7 +48,9 @@ jobs: sudo apt upgrade -y sudo apt install liblua5.4-dev libopencv-dev libopencv-contrib-dev libqrencode-dev libleptonica-dev libtesseract-dev -y - # 设置依赖库的环境变量 + - name: Set TERM variable + run: echo "TERM=xterm" >> $GITHUB_ENV + - name: Set up Dependency ubuntu24.04 Environment if: matrix.os == 'ubuntu-24.04' run: | @@ -56,19 +60,34 @@ jobs: - 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 - #编译 + chmod 777 * + sudo ./XEngine_LINEnv.sh -i 3 + - name: Set up Dependency ubuntu22.04 Environment + if: matrix.os == 'ubuntu-22.04-arm' + run: | + 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_Arm64.zip + unzip ./XEngine_UBuntu_22.04_Arm64.zip -d ./XEngine_UBuntu_22.04_Arm64 + cd XEngine_UBuntu_22.04_Arm64 + + chmod 777 * + sudo ./XEngine_LINEnv.sh -i 3 + - name: Set up Dependency ubuntu22.04 Environment + if: matrix.os == 'ubuntu-24.04-arm' + run: | + 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_24.04_Arm64.zip + unzip ./XEngine_UBuntu_24.04_Arm64.zip -d ./XEngine_UBuntu_24.04_Arm64 + cd XEngine_UBuntu_24.04_Arm64 + + chmod 777 * + sudo ./XEngine_LINEnv.sh -i 3 + - name: make run: | cd XEngine_Source @@ -94,11 +113,24 @@ jobs: name: XEngine_APIServiceApp-Ubuntu_22.04_x86_64 path: XEngine_Release/ retention-days: 1 - - name: Upload folder as artifact with ubuntu24.04 if: matrix.os == 'ubuntu-24.04' uses: actions/upload-artifact@v4 with: name: XEngine_APIServiceApp-Ubuntu_24.04_x86_64 path: XEngine_Release/ + retention-days: 1 + - name: Upload folder as artifact with ubuntu22.04-arm + if: matrix.os == 'ubuntu-22.04-arm' + uses: actions/upload-artifact@v4 + with: + name: XEngine_APIServiceApp-Ubuntu_22.04_Arm64 + path: XEngine_Release/ + retention-days: 1 + - name: Upload folder as artifact with ubuntu24.04-arm + if: matrix.os == 'ubuntu-24.04-arm' + uses: actions/upload-artifact@v4 + with: + name: XEngine_APIServiceApp-Ubuntu_24.04_Arm64 + path: XEngine_Release/ retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 6e30ff17df0de5578dfd4b37c2c07779ef07b7fd..845803755d1ec6b4edd1872833908b4e7adb866b 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -46,6 +46,9 @@ jobs: sudo apt upgrade -y sudo apt install liblua5.4-dev libopencv-dev libopencv-contrib-dev libqrencode-dev libleptonica-dev libtesseract-dev -y + - name: Set TERM variable + run: echo "TERM=xterm" >> $GITHUB_ENV + - name: Set up Dependency Environment run: | cd libxengine diff --git a/.github/workflows/UbuntuArm64_build.yml b/.github/workflows/debian_build.yml similarity index 31% rename from .github/workflows/UbuntuArm64_build.yml rename to .github/workflows/debian_build.yml index 8500750148f8e5f8e53606adb6b40b4b1691e6e9..0c687c619562875f6e4d401a74ec9d109a47b495 100644 --- a/.github/workflows/UbuntuArm64_build.yml +++ b/.github/workflows/debian_build.yml @@ -1,77 +1,98 @@ -name: ubuntu Arm64 build workflows +name: debian build workflows on: push: - branches: + branches: - 'develop' paths: - 'XEngine_Source/**' - 'XEngine_Release/**' - '.github/**' - + +permissions: + contents: read + jobs: build: - runs-on: ubuntu-24.04 - env: - IMAGE_NAME: ubuntu:24.04 - + runs-on: ${{ matrix.runner }} + container: + image: debian:bookworm + options: --platform ${{ matrix.platform }} strategy: - fail-fast: false matrix: - arch: [linux/arm64] + include: + - arch: amd64 + runner: ubuntu-24.04 + platform: linux/amd64 + artifact: x86-64 steps: - name: Checkout main repository code uses: actions/checkout@v4 with: ref: 'develop' - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - name: Build ${{ matrix.arch }} + - name: Checkout dependency repository (xengine) + uses: actions/checkout@v4 + with: + repository: libxengine/libxengine + path: libxengine + + - name: sub module checkout (XEngine_OPenSource) + uses: actions/checkout@v4 + with: + repository: libxengine/XEngine_OPenSource + path: XEngine_Source/XEngine_Depend + - name: sub module checkout (XEngine_PhoneData) + uses: actions/checkout@v4 + with: + repository: libxengine/XEngine_PhoneData + path: XEngine_Source/XEngine_DBDepend/XEngine_PhoneData + - name: sub module checkout (XEngine_IPMacData) + uses: actions/checkout@v4 + with: + repository: libxengine/XEngine_IPMacData + path: XEngine_Source/XEngine_DBDepend/XEngine_IPMacData + + - name: Set TERM variable + run: echo "TERM=xterm" >> $GITHUB_ENV + + - name: install system package run: | - docker run --platform ${{ matrix.arch }} --rm \ - -v ${{ github.workspace }}:/workspace \ - -w /workspace ${{ env.IMAGE_NAME }} /bin/sh -c ' - set -e apt update -y - apt install git make g++ wget curl jq unzip -y + apt install gcc g++ make git jq unzip curl wget -y apt install liblua5.4-dev libopencv-dev libopencv-contrib-dev libqrencode-dev libleptonica-dev libtesseract-dev -y - git config --global --add safe.directory /workspace - git submodule init - git submodule update - + - name: install xengine library + run: | 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_24.04_Arm64.zip - unzip ./XEngine_UBuntu_24.04_Arm64.zip -d ./XEngine_UBuntu_24.04_Arm64 - cd XEngine_UBuntu_24.04_Arm64 - - chmod 777 ./XEngine_LINEnv.sh - ./XEngine_LINEnv.sh -i 0 - - cp -rf ./XEngine_Include /usr/local/include - find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; - ldconfig - cd .. - + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_Debian_12_${{ matrix.artifact }}.zip + unzip ./XEngine_Debian_12_${{ matrix.artifact }}.zip -d ./XEngine_Debian_12_${{ matrix.artifact }} + cd XEngine_Debian_12_${{ matrix.artifact }} + + chmod 777 * + ./XEngine_LINEnv.sh -i 3 + - name: make + run: | cd XEngine_Source - make ARCH=Arm64 RELEASE=1 + make make FLAGS=InstallAll - make FLAGS=CleanAll - cd .. + make FLAGS=CleanAll + make RELEASE=1 + make FLAGS=InstallAll + make FLAGS=CleanAll + cd .. + - name: test + run: | cd XEngine_Release chmod 777 copydb.sh ./copydb.sh - ./XEngine_APIServiceApp -t - chown -R $(id -u):$(id -g) . - chmod -R a+r . ' + ./XEngine_APIServiceApp -t - - name: Upload folder as artifact with ubuntu Arm64 + - name: Upload folder as artifact uses: actions/upload-artifact@v4 with: - name: XEngine_APIServiceApp-Ubuntu_24.04_Arm64 + name: XEngine_APIServiceApp-Debian_12_x86-64 path: XEngine_Release/ retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/fedora_build.yml b/.github/workflows/fedora_build.yml new file mode 100644 index 0000000000000000000000000000000000000000..1cca796b7a07ee92f2d4f49d1e253515b4cea048 --- /dev/null +++ b/.github/workflows/fedora_build.yml @@ -0,0 +1,102 @@ +name: fedora build workflows + +on: + push: + branches: + - 'develop' + paths: + - 'XEngine_Source/**' + - 'XEngine_Release/**' + - '.github/**' + +permissions: + contents: read + +jobs: + build: + runs-on: ${{ matrix.runner }} + container: + image: fedora:${{ matrix.fedora-version }} + options: --platform ${{ matrix.platform }} + strategy: + matrix: + include: + - arch: amd64 + runner: ubuntu-24.04 + platform: linux/amd64 + fedora-version: 42 + artifact: x86-64 + - arch: amd64 + runner: ubuntu-24.04 + platform: linux/amd64 + fedora-version: 41 + artifact: x86-64 + + steps: + - name: Checkout main repository code + uses: actions/checkout@v4 + + - name: Checkout dependency repository (xengine) + uses: actions/checkout@v4 + with: + repository: libxengine/libxengine + path: libxengine + + - name: sub module checkout (XEngine_OPenSource) + uses: actions/checkout@v4 + with: + repository: libxengine/XEngine_OPenSource + path: XEngine_Source/XEngine_Depend + - name: sub module checkout (XEngine_PhoneData) + uses: actions/checkout@v4 + with: + repository: libxengine/XEngine_PhoneData + path: XEngine_Source/XEngine_DBDepend/XEngine_PhoneData + - name: sub module checkout (XEngine_IPMacData) + uses: actions/checkout@v4 + with: + repository: libxengine/XEngine_IPMacData + path: XEngine_Source/XEngine_DBDepend/XEngine_IPMacData + + - name: install system package + run: | + dnf update -y + dnf install gcc g++ make git jq unzip wget -y + dnf install lua-devel opencv-devel qrencode-devel leptonica-devel tesseract-devel -y + + - name: Set TERM variable + run: echo "TERM=xterm" >> $GITHUB_ENV + + - name: install xengine library + run: | + 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_Fedora_${{ matrix.fedora-version }}_${{ matrix.artifact }}.zip + unzip ./XEngine_Fedora_${{ matrix.fedora-version }}_${{ matrix.artifact }}.zip -d ./XEngine_Fedora_${{ matrix.fedora-version }}_${{ matrix.artifact }} + cd XEngine_Fedora_${{ matrix.fedora-version }}_${{ matrix.artifact }} + + chmod 777 * + ./XEngine_LINEnv.sh -i 3 + - 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 + chmod 777 copydb.sh + ./copydb.sh + ./XEngine_APIServiceApp -t + + - name: Upload folder as artifact + uses: actions/upload-artifact@v4 + with: + name: XEngine_APIServiceApp-Fedora_${{ matrix.fedora-version }}_${{ matrix.artifact }} + path: XEngine_Release/ + retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index 5e494df3c9fa693faef795503b387b715bd84a76..b93d2e40790c0287fe6bb1ac09f1584fbf8c7bb3 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -40,6 +40,9 @@ jobs: run: | brew install lua opencv qrencode + - name: Set TERM variable + run: echo "TERM=xterm" >> $GITHUB_ENV + - name: Set up Dependency x86_64 Environment if: matrix.os == 'macos-13' run: | @@ -49,20 +52,13 @@ jobs: - 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 \; + chmod 777 * + ./XEngine_LINEnv.sh -i 3 - name: make debug run: | diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index eb027b21c3dd93bc4095e418536ed6fe233032e7..b9663c50cd35744426bc41acd03e183c0a362e19 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -130,7 +130,7 @@ jobs: cd XEngine_Release ./copydb.bat ./VSCopy_x86.bat - # ./XEngine_HttpApp.exe -t + ./XEngine_HttpApp.exe -t - name: Conditional Step for x64 Release if: matrix.configuration == 'Release' && matrix.platform == 'x64' run: | @@ -140,6 +140,7 @@ jobs: cd XEngine_Release ./copydb.bat ./VSCopy_x64.bat + ./XEngine_HttpApp.exe -t shell: pwsh - name: Conditional Step for ARM64 Release if: matrix.configuration == 'Release' && matrix.platform == 'ARM64' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index eb8898bdb4c08e9e0ee7e375af14cb97671575b2..87c7351f8b67fd2491f13e2448e2ea9262ac252c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,37 +16,37 @@ jobs: with: fetch-depth: 0 - - name: Download ubuntu x86_64 build + - name: Download ubuntu build uses: dawidd6/action-download-artifact@v6 with: - workflow: Ubuntux86_64_build.yml + workflow: Ubuntu_build.yml workflow_conclusion: success check_artifacts: false skip_unpack: true if_no_artifact_found: fail path: ./XRelease/ - - name: Download ubuntu Arm64 build + - name: Download debian build uses: dawidd6/action-download-artifact@v6 with: - workflow: UbuntuArm64_build.yml + workflow: debian_build.yml workflow_conclusion: success check_artifacts: false skip_unpack: true if_no_artifact_found: fail path: ./XRelease/ - - name: Download rocky x86_64 build + - name: Download fedora build uses: dawidd6/action-download-artifact@v6 with: - workflow: RockyX86_64_build.yml + workflow: fedora_build.yml workflow_conclusion: success check_artifacts: false skip_unpack: true if_no_artifact_found: fail path: ./XRelease/ - - name: Download rocky Arm64 build + - name: Download Rocky build uses: dawidd6/action-download-artifact@v6 with: - workflow: RockyArm64_build.yml + workflow: Rocky_build.yml workflow_conclusion: success check_artifacts: false skip_unpack: true diff --git a/CHANGELOG b/CHANGELOG index 23c6123b3cfb6dd394b6d519b8c2e10184f4f165..0bce777c97125ba9692f4eb7d87baa9af86a70df 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,21 @@ +XEngine_APIService V3.11.0.1001 + +增加:更多发布系统支持 +更新:依赖库 +优化:编译脚本 +修改:插件支持获取更多信息了 +修改:删除了插件配置,不在需要 +修改:插件模块支持初始化参数了 +修复:配置文件内存溢出问题 + +ci:added debian and fedora system support +update:depend library +improved:make file build flags +modify:get more info support for plugin module +modify:delete plugin configure and plugin auto load support +modify:init parameter and used now for plugin module +fixed:memory leak for configure parse +====================================================================================== XEngine_APIService V3.10.0.1001 增加:windows服务支持 diff --git a/README.en.md b/README.en.md index 7bacf8ff74d108ad6b153948efad675d36627716..f42ef00cb29e0cc4a7bae7dd786e3e8f226853bd 100644 --- a/README.en.md +++ b/README.en.md @@ -79,6 +79,7 @@ In order to save resources, now the IP and phone and mac databases need to be co #### Database Env MYSQL database version 8.0 or above is required. Create a table through CreateDatabase.sql, and then import other sql table Modify the database configuration in XSQL in the configuration file to your +The default configuration does not enable database support. If the database interface is required, you need to enable the database yourself #### Windows need to vcpkg configure third-part env.refer vcpkg install guide.after installed and execution:vcpkg.exe install lua:x86-windows opencv[contrib]:x86-windows libqrencode:x86-windows lua:x64-windows opencv[contrib]:x64-windows libqrencode:x64-windows diff --git a/README.md b/README.md index 8016713d1c91c9a9524b1c92043c013268e1268f..3a62321fe1326ed2dc41244249a063a218ceb9af 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,7 @@ macos执行:./XEngine_LINEnv.sh -i 3 #### 数据库环境 需要MYSQL数据库8.0以上版本.通过CreateDatabase.sql创建表,然后导入剩余的表 修改配置文件里面XSQL里面的数据库配置为你的 +默认配置没有开启数据库支持,如果需要数据库接口支持,需要自己开启数据库 #### sub module 由于依赖的子模块,在你checkout仓库后,在仓库目录下执行下面的命令拉取子模块 diff --git a/XEngine_Docment/Docment_en.docx b/XEngine_Docment/Docment_en.docx index aae412cf4375fdbbd0db958338364e478802e9d8..aab35b39e8bb0bb036b72284814460bdb9bf9457 100644 Binary files a/XEngine_Docment/Docment_en.docx and b/XEngine_Docment/Docment_en.docx differ diff --git a/XEngine_Docment/Docment_zh.docx b/XEngine_Docment/Docment_zh.docx index 2d744698d0e23f07bd450727e69bf366dce241fe..c49170015ed543199632df76e59d9efb350a289c 100644 Binary files a/XEngine_Docment/Docment_zh.docx and b/XEngine_Docment/Docment_zh.docx differ diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index f6fdc0e642275738bef9ceb7992b7ed2a4bab928..0d04c3a9536c2f705d99a075491e5bfc78eb4a9c 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -24,7 +24,7 @@ "LogType":32 }, "XSql":{ - "bEnable":true, + "bEnable":false, "SQLAddr":"10.0.2.6", "SQLPort":3306, "SQLUser":"root", @@ -42,7 +42,8 @@ }, "XPlugin":{ "bEnable":true, - "tszPlugin":"./XEngine_Config/XEngine_Plugin.json" + "tszLibPlugin":"./XEngine_LibPlugin", + "tszLuaPlugin":"./XEngine_LuaPlugin" }, "XConfig":{ "st_ConfigQRCode":{ diff --git a/XEngine_Release/XEngine_Config/XEngine_Plugin.json b/XEngine_Release/XEngine_Config/XEngine_Plugin.json deleted file mode 100644 index 4298369d26cbf707969f440ae01b0e2a4e890805..0000000000000000000000000000000000000000 --- a/XEngine_Release/XEngine_Config/XEngine_Plugin.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "PluginModule":[ - { - "PluginEnable":true, - "PluginMethod":"zodiac", - "PluginFile":"./XEngine_LibPlugin/libModulePlugin_Zodiac" - }, - { - "PluginEnable":true, - "PluginMethod":"pass", - "PluginFile":"./XEngine_LibPlugin/libModulePlugin_Password" - }, - { - "PluginEnable":true, - "PluginMethod":"timezone", - "PluginFile":"./XEngine_LibPlugin/libModulePlugin_Timezone" - }, - { - "PluginEnable":true, - "PluginMethod":"bmindex", - "PluginFile":"./XEngine_LibPlugin/libModulePlugin_BMIndex" - }, - { - "PluginEnable":true, - "PluginMethod":"meter", - "PluginFile":"./XEngine_LibPlugin/libModulePlugin_Meter" - } - ], - "PluginLua":[ - { - "PluginEnable":true, - "PluginMethod":"cal", - "PluginFile":"./XEngine_LuaPlugin/ModulePlugin_Calculation.lua" - }, - { - "PluginEnable":true, - "PluginMethod":"time", - "PluginFile":"./XEngine_LuaPlugin/ModulePlugin_OSTime.lua" - }, - { - "PluginEnable":true, - "PluginMethod":"heart", - "PluginFile":"./XEngine_LuaPlugin/ModulePlugin_Heart.lua" - } - ] -} \ No newline at end of file diff --git a/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json b/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json index 111c858ee54f580ebf2a4f2763384be9d21a5318..decbd2bb56b543954593e9972998156ae2506955 100644 --- a/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json +++ b/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json @@ -1,5 +1,6 @@ { "XVer":[ + "3.11.0.1001 Build20250506", "3.10.0.1001 Build20250416", "3.9.0.1001 Build20250224", "3.8.0.1001 Build20241227", diff --git a/XEngine_Release/XEngine_LuaPlugin/ModulePlugin_Calculation.lua b/XEngine_Release/XEngine_LuaPlugin/ModulePlugin_Calculation.lua index f3f8bacd14cddffc29bb876e8d76a8ef501c55be..fb268ee8b5cdf138edb876156d0cda2954858d19 100644 --- a/XEngine_Release/XEngine_LuaPlugin/ModulePlugin_Calculation.lua +++ b/XEngine_Release/XEngine_LuaPlugin/ModulePlugin_Calculation.lua @@ -1,4 +1,6 @@ -function PluginCore_Init() +function PluginCore_Init(pSt_PluginParameter) + -- print("API Ver:", pSt_PluginParameter.APIVersion) + -- print("XEngine Ver:", pSt_PluginParameter.XEngineVer) return true end @@ -51,4 +53,14 @@ function PluginCore_Call(lpszStrUrl, nListCount, lpszMsgBuffer, nMsgLen) return true end +function PluginCore_GetInfo() + + ptszPluginName = "cal" + ptszPluginVersion = "1.0.0.1001" + ptszPluginAuthor = "xengine" + ptszPluginDesc = "math cal for XEngine API Service" + + return ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc +end + -- PluginCore_Call("param1=1¶m2=2¶m3=0",3,"hello",5) \ No newline at end of file diff --git a/XEngine_Release/XEngine_LuaPlugin/ModulePlugin_Heart.lua b/XEngine_Release/XEngine_LuaPlugin/ModulePlugin_Heart.lua index f18c52726fcbfc7c32b6d443c104b015b8466f78..2afa4238f19ff7fa7730bdc6ea02cb6e00ea76f5 100644 --- a/XEngine_Release/XEngine_LuaPlugin/ModulePlugin_Heart.lua +++ b/XEngine_Release/XEngine_LuaPlugin/ModulePlugin_Heart.lua @@ -1,4 +1,6 @@ -function PluginCore_Init() +function PluginCore_Init(pSt_PluginParameter) + -- print("API Ver:", pSt_PluginParameter.APIVersion) + -- print("XEngine Ver:", pSt_PluginParameter.XEngineVer) return true end @@ -21,4 +23,14 @@ function PluginCore_Call(lpszStrUrl, nListCount, lpszMsgBuffer, nMsgLen) end return true +end + +function PluginCore_GetInfo() + + ptszPluginName = "heart" + ptszPluginVersion = "1.0.0.1001" + ptszPluginAuthor = "xengine" + ptszPluginDesc = "heartbeat handle for XEngine API Service" + + return ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc end \ No newline at end of file diff --git a/XEngine_Release/XEngine_LuaPlugin/ModulePlugin_OSTime.lua b/XEngine_Release/XEngine_LuaPlugin/ModulePlugin_OSTime.lua index c416b912ded7ca1791ac25507a10664415d76723..0b9b860bca226cdb2b500b39511ec81d3b15e9f2 100644 --- a/XEngine_Release/XEngine_LuaPlugin/ModulePlugin_OSTime.lua +++ b/XEngine_Release/XEngine_LuaPlugin/ModulePlugin_OSTime.lua @@ -1,4 +1,6 @@ -function PluginCore_Init() +function PluginCore_Init(pSt_PluginParameter) + -- print("API Ver:", pSt_PluginParameter.APIVersion) + -- print("XEngine Ver:", pSt_PluginParameter.XEngineVer) return true end @@ -45,4 +47,13 @@ function PluginCore_Call(lpszStrUrl, nListCount, lpszMsgBuffer, nMsgLen) return true end +function PluginCore_GetInfo() + + ptszPluginName = "time" + ptszPluginVersion = "1.0.0.1001" + ptszPluginAuthor = "xengine" + ptszPluginDesc = "get time info for XEngine API Service" + + return ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc +end -- PluginCore_Call("",0,"",0) \ No newline at end of file diff --git a/XEngine_Source/Makefile b/XEngine_Source/Makefile index 25544f7649c817f5671fbee7b1d31f9e0d74fb2b..07a63989d8eedb94d8254cee7e8ad633936001c4 100644 --- a/XEngine_Source/Makefile +++ b/XEngine_Source/Makefile @@ -40,55 +40,54 @@ XENGINE_MODULES = libjsoncpp.so libXEngine_InfoReport.so \ .PHONY:MakeAll MakeAll:$(XENGINE_MODULES) -libXEngine_ModuleConfigure.so: - make -C $(MODULE_CONFIGURE_PATH) PLATFORM=$(PLATFORM) $(FLAGS) -libXEngine_ModuleDatabase.so: - make -C $(MODULE_DATABASE_PATH) PLATFORM=$(PLATFORM) $(FLAGS) -libXEngine_ModuleProtocol.so: - make -C $(MODULE_PROTOCOL_PATH) PLATFORM=$(PLATFORM) $(FLAGS) -libXEngine_ModuleSystem.so: - make -C $(MODULE_SYSTEM_PATH) PLATFORM=$(PLATFORM) $(FLAGS) -libXEngine_ModuleHelp.so: - make -C $(MODULE_HELP_PATH) PLATFORM=$(PLATFORM) $(FLAGS) -libXEngine_ModulePlugin.so: - make -C $(MODULE_PLUGIN_PATH) PLATFORM=$(PLATFORM) $(FLAGS) - -libModulePlugin_Zodiac.so: - make -C $(PLUGIN_MODULE_ZODIAC) PLATFORM=$(PLATFORM) $(FLAGS) -libModulePlugin_Password.so: - make -C $(PLUGIN_MODULE_PASSWORD) PLATFORM=$(PLATFORM) $(FLAGS) -libModulePlugin_Timezone.so: - make -C $(PLUGIN_MODULE_TIMEZONE) PLATFORM=$(PLATFORM) $(FLAGS) -libModulePlugin_BMIndex.so: - make -C $(PLUGIN_MODULE_BMINDEX) PLATFORM=$(PLATFORM) $(FLAGS) -libModulePlugin_Meter.so: - make -C $(PLUGIN_MODULE_METER) PLATFORM=$(PLATFORM) $(FLAGS) - libjsoncpp.so: ifeq ($(FLAGS), InstallAll) cp $(THIRDPART_MODULE_JSONCPP)/libjsoncpp.$(FILEEXT) ../XEngine_Release/ else - make -C $(THIRDPART_MODULE_JSONCPP) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(THIRDPART_MODULE_JSONCPP) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) endif libXEngine_InfoReport.so: ifeq ($(FLAGS), InstallAll) cp $(THIRDPART_MODULE_REPORT)/libXEngine_InfoReport.$(FILEEXT) ../XEngine_Release/ else - make -C $(THIRDPART_MODULE_REPORT) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(THIRDPART_MODULE_REPORT) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) endif - libXEngine_APIModulePhone.so: ifeq ($(FLAGS), InstallAll) cp $(APIMODULE_PHONE_PATH)/libXEngine_APIModulePhone.$(FILEEXT) ../XEngine_Release/ else - make -C $(APIMODULE_PHONE_PATH) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(APIMODULE_PHONE_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) endif libXEngine_APIModuleIPMac.so: ifeq ($(FLAGS), InstallAll) cp $(APIMODULE_IPMAC_PATH)/libXEngine_APIModuleIPMac.$(FILEEXT) ../XEngine_Release/ else - make -C $(APIMODULE_IPMAC_PATH) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(APIMODULE_IPMAC_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) endif + +libXEngine_ModuleConfigure.so: + make -C $(MODULE_CONFIGURE_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) +libXEngine_ModuleDatabase.so: + make -C $(MODULE_DATABASE_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) +libXEngine_ModuleProtocol.so: + make -C $(MODULE_PROTOCOL_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) +libXEngine_ModuleSystem.so: + make -C $(MODULE_SYSTEM_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) +libXEngine_ModuleHelp.so: + make -C $(MODULE_HELP_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) +libXEngine_ModulePlugin.so: + make -C $(MODULE_PLUGIN_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) + +libModulePlugin_Zodiac.so: + make -C $(PLUGIN_MODULE_ZODIAC) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) +libModulePlugin_Password.so: + make -C $(PLUGIN_MODULE_PASSWORD) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) +libModulePlugin_Timezone.so: + make -C $(PLUGIN_MODULE_TIMEZONE) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) +libModulePlugin_BMIndex.so: + make -C $(PLUGIN_MODULE_BMINDEX) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) +libModulePlugin_Meter.so: + make -C $(PLUGIN_MODULE_METER) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) XEngine_HttpApp.exe: - make -C $(APP_HTTP_PATH) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(APP_HTTP_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) diff --git a/XEngine_Source/XEngine_DBDepend/XEngine_IPMacData b/XEngine_Source/XEngine_DBDepend/XEngine_IPMacData index 61db4fbc0846a63bda426bcdebea5c9a76350fbe..a6449e797a2ec10e9e4a3d40c1f9f27487f7dd02 160000 --- a/XEngine_Source/XEngine_DBDepend/XEngine_IPMacData +++ b/XEngine_Source/XEngine_DBDepend/XEngine_IPMacData @@ -1 +1 @@ -Subproject commit 61db4fbc0846a63bda426bcdebea5c9a76350fbe +Subproject commit a6449e797a2ec10e9e4a3d40c1f9f27487f7dd02 diff --git a/XEngine_Source/XEngine_DBDepend/XEngine_PhoneData b/XEngine_Source/XEngine_DBDepend/XEngine_PhoneData index 56dd7962c9e7198f3e7ad9b29b32e23e6c62ced8..2ffa9e3416784d44e07ef77304f4d8cda1570748 160000 --- a/XEngine_Source/XEngine_DBDepend/XEngine_PhoneData +++ b/XEngine_Source/XEngine_DBDepend/XEngine_PhoneData @@ -1 +1 @@ -Subproject commit 56dd7962c9e7198f3e7ad9b29b32e23e6c62ced8 +Subproject commit 2ffa9e3416784d44e07ef77304f4d8cda1570748 diff --git a/XEngine_Source/XEngine_Depend b/XEngine_Source/XEngine_Depend index 865c50f5199f3330ba8a3df48c6397363993fd36..66e6bf39df14cd66d4bcbbb44a3e168ff75fed99 160000 --- a/XEngine_Source/XEngine_Depend +++ b/XEngine_Source/XEngine_Depend @@ -1 +1 @@ -Subproject commit 865c50f5199f3330ba8a3df48c6397363993fd36 +Subproject commit 66e6bf39df14cd66d4bcbbb44a3e168ff75fed99 diff --git a/XEngine_Source/XEngine_ModuleConfigure/Makefile b/XEngine_Source/XEngine_ModuleConfigure/Makefile index 8ef323f4b45d52319ca7d53151e69233ff117642..7a4990d342192d519f9f5e9c8157a71e70f4d77a 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/Makefile +++ b/XEngine_Source/XEngine_ModuleConfigure/Makefile @@ -1,11 +1,7 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ -I ../XEngine_Depend/XEngine_Module/jsoncpp LOADSO = -L ../XEngine_Depend/XEngine_Module/jsoncpp LIB = -ljsoncpp @@ -13,31 +9,29 @@ LIBEX = OBJECTS = ModuleConfigure_Json.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -46,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h index a08ace6da57e50c9df676816abf23bf4f14d5377..10ce8dea70ea09accb63a8aeeea91ec89074b7a1 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h +++ b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h @@ -35,8 +35,8 @@ typedef struct }st_XTime; //次数*时间=超时 struct { - XCHAR tszAPIFile[MAX_PATH]; //日志文件地址 - XCHAR tszServiceFile[MAX_PATH]; + XCHAR tszAPIFile[XPATH_MAX]; //日志文件地址 + XCHAR tszServiceFile[XPATH_MAX]; int nMaxSize; //最大日志大小 int nMaxCount; //最大日志个数 int nLogLeave; //日志等级 @@ -53,46 +53,47 @@ typedef struct }st_XSql; struct { - XCHAR tszWeatherUrl[MAX_PATH]; //天气接口 - XCHAR tszBankUrl[MAX_PATH]; //银行卡验证地址 - XCHAR tszOilUrl[MAX_PATH]; //油价接口 + XCHAR tszWeatherUrl[XPATH_MAX]; //天气接口 + XCHAR tszBankUrl[XPATH_MAX]; //银行卡验证地址 + XCHAR tszOilUrl[XPATH_MAX]; //油价接口 //翻译接口 struct { - XCHAR tszAPPUrl[MAX_PATH]; - XCHAR tszAPPID[MAX_PATH]; - XCHAR tszAPPKey[MAX_PATH]; + XCHAR tszAPPUrl[XPATH_MAX]; + XCHAR tszAPPID[XPATH_MAX]; + XCHAR tszAPPKey[XPATH_MAX]; }st_TranslationInfo; }st_XApi; struct { - bool bEnable; //是否启用 - XCHAR tszPlugin[MAX_PATH]; //配置文件地址 + bool bEnable; //是否启用 + XCHAR tszLibPlugin[XPATH_MAX]; + XCHAR tszLuaPlugin[XPATH_MAX]; }st_XPlugin; struct { //二维码模型库 struct { - XCHAR tszModelDetect[MAX_PATH]; - XCHAR tszModelSr[MAX_PATH]; - XCHAR tszProtoDetect[MAX_PATH]; - XCHAR tszProtoSr[MAX_PATH]; + XCHAR tszModelDetect[XPATH_MAX]; + XCHAR tszModelSr[XPATH_MAX]; + XCHAR tszProtoDetect[XPATH_MAX]; + XCHAR tszProtoSr[XPATH_MAX]; }st_ConfigQRCodec; - XCHAR tszConfigDeamon[MAX_PATH]; //守护进程配置文件 - XCHAR tszConfigHTTPMime[MAX_PATH]; //HTTPMINE配置文件 - XCHAR tszConfigHTTPCode[MAX_PATH]; //HTTP状态配置文件 + XCHAR tszConfigDeamon[XPATH_MAX]; //守护进程配置文件 + XCHAR tszConfigHTTPMime[XPATH_MAX]; //HTTPMINE配置文件 + XCHAR tszConfigHTTPCode[XPATH_MAX]; //HTTP状态配置文件 }st_XConfig; struct { - XCHAR tszHostUrl[MAX_PATH]; //主机地址 + XCHAR tszHostUrl[XPATH_MAX]; //主机地址 int nHTTPCode; //转发模式,301 永久,302 临时 }st_XShortLink; struct { bool bEnable; //是否启用 - XCHAR tszImagePath[MAX_PATH]; //图片文字识别配置 - XCHAR tszImageLanguage[MAX_PATH]; //语言支持 + XCHAR tszImagePath[XPATH_MAX]; //图片文字识别配置 + XCHAR tszImageLanguage[XPATH_MAX]; //语言支持 }st_XImageText; struct { @@ -101,8 +102,8 @@ typedef struct }st_XReload; struct { - XCHAR tszUserName[MAX_PATH]; - XCHAR tszUserPass[MAX_PATH]; + XCHAR tszUserName[XPATH_MAX]; + XCHAR tszUserPass[XPATH_MAX]; struct { bool bBackService; @@ -112,15 +113,15 @@ typedef struct struct { bool bEnable; - XCHAR tszDBPhone[MAX_PATH]; - XCHAR tszDBMac[MAX_PATH]; - XCHAR tszDBIPAddr[MAX_PATH]; - XCHAR tszDBISPAddr[MAX_PATH]; + XCHAR tszDBPhone[XPATH_MAX]; + XCHAR tszDBMac[XPATH_MAX]; + XCHAR tszDBIPAddr[XPATH_MAX]; + XCHAR tszDBISPAddr[XPATH_MAX]; }st_XAPIModule; struct { bool bEnable; - XCHAR tszAPIUrl[MAX_PATH]; + XCHAR tszAPIUrl[XPATH_MAX]; XCHAR tszServiceName[128]; }st_XReport; struct @@ -128,25 +129,13 @@ typedef struct list* pStl_ListVer; }st_XVer; }XENGINE_SERVICECONFIG; -//插件 -typedef struct -{ - bool bEnable; - XCHAR tszPluginMethod[MAX_PATH]; - XCHAR tszPluginFile[MAX_PATH]; -}XENGINE_PLUGININFO; -typedef struct -{ - list* pStl_ListPluginModule; - list* pStl_ListPluginLua; -}XENGINE_PLUGINCONFIG; ////////////////////////////////////////////////////////////////////////// typedef struct { bool bEnable; - XCHAR tszOPMethod[MAX_PATH]; - XCHAR tszOPNote[MAX_PATH]; - XCHAR tszOPExample[MAX_PATH]; + XCHAR tszOPMethod[XPATH_MAX]; + XCHAR tszOPNote[XPATH_MAX]; + XCHAR tszOPExample[XPATH_MAX]; }XENGINE_OPTIONINFO; typedef struct { @@ -157,8 +146,8 @@ typedef struct typedef struct { bool bEnable; //是否启用 - XCHAR tszAPPName[MAX_PATH]; //应用程序名称 - XCHAR tszAPPPath[MAX_PATH]; //应用程序路径 + XCHAR tszAPPName[XPATH_MAX]; //应用程序名称 + XCHAR tszAPPPath[XPATH_MAX]; //应用程序路径 int nReTime; //是否自动重启 int nReNumber; //自定义 @@ -215,25 +204,6 @@ extern "C" bool ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XENGINE_SERVIC *********************************************************************/ extern "C" bool ModuleConfigure_Json_VersionFile(LPCXSTR lpszConfigFile, XENGINE_SERVICECONFIG* pSt_ServerConfig); /******************************************************************** -函数名称:ModuleConfigure_Json_PluginFile -函数功能:读取JSON配置文件 - 参数.一:lpszConfigFile - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:输入要读取的配置文件 - 参数.二:pSt_PluginConfig - In/Out:Out - 类型:数据结构指针 - 可空:N - 意思:输出插件配置信息 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -extern "C" bool ModuleConfigure_Json_PluginFile(LPCXSTR lpszConfigFile, XENGINE_PLUGINCONFIG* pSt_PluginConfig); -/******************************************************************** 函数名称:ModuleConfigure_Json_DeamonList 函数功能:读取JSON配置文件 参数.一:lpszConfigFile diff --git a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp index a07bacf81bac4039991933545f5113be2c0041ac..301ddc3697857c84a3cfc724f380e65ef344bb50 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp +++ b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp @@ -61,21 +61,12 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_OPENFILE; return false; } - size_t nCount = 0; - XCHAR tszMsgBuffer[4096]; - while (1) - { - size_t nRet = fread(tszMsgBuffer + nCount, 1, 2048, pSt_File); - if (nRet <= 0) - { - break; - } - nCount += nRet; - } + XCHAR tszMsgBuffer[8192] = {}; + size_t nRet = fread(tszMsgBuffer, 1, sizeof(tszMsgBuffer), pSt_File); fclose(pSt_File); //开始解析配置文件 std::unique_ptr const pSt_JsonReader(st_JsonBuilder.newCharReader()); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nCount, &st_JsonRoot, &st_JsonError)) + if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nRet, &st_JsonRoot, &st_JsonError)) { Config_IsErrorOccur = true; Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_PARSE; @@ -155,7 +146,7 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE _tcsxcpy(pSt_ServerConfig->st_XSql.tszSQLUser, st_JsonXSql["SQLUser"].asCString()); _tcsxcpy(pSt_ServerConfig->st_XSql.tszSQLPass, st_JsonXSql["SQLPass"].asCString()); - if (st_JsonRoot["XPlugin"].empty() || (2 != st_JsonRoot["XPlugin"].size())) + if (st_JsonRoot["XPlugin"].empty() || (3 != st_JsonRoot["XPlugin"].size())) { Config_IsErrorOccur = true; Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_XPLUGIN; @@ -163,7 +154,8 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE } Json::Value st_JsonXPlugin = st_JsonRoot["XPlugin"]; pSt_ServerConfig->st_XPlugin.bEnable = st_JsonXPlugin["bEnable"].asBool(); - _tcsxcpy(pSt_ServerConfig->st_XPlugin.tszPlugin, st_JsonXPlugin["tszPlugin"].asCString()); + _tcsxcpy(pSt_ServerConfig->st_XPlugin.tszLibPlugin, st_JsonXPlugin["tszLibPlugin"].asCString()); + _tcsxcpy(pSt_ServerConfig->st_XPlugin.tszLuaPlugin, st_JsonXPlugin["tszLuaPlugin"].asCString()); if (st_JsonRoot["XConfig"].empty() || (4 != st_JsonRoot["XConfig"].size())) { @@ -282,21 +274,12 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_VersionFile(LPCXSTR lpszConfigF Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_OPENFILE; return false; } - size_t nCount = 0; - XCHAR tszMsgBuffer[4096]; - while (1) - { - size_t nRet = fread(tszMsgBuffer + nCount, 1, 2048, pSt_File); - if (nRet <= 0) - { - break; - } - nCount += nRet; - } + XCHAR tszMsgBuffer[8192] = {}; + size_t nRet = fread(tszMsgBuffer, 1, sizeof(tszMsgBuffer), pSt_File); fclose(pSt_File); //开始解析配置文件 std::unique_ptr const pSt_JsonReader(st_JsonBuilder.newCharReader()); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nCount, &st_JsonRoot, &st_JsonError)) + if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nRet, &st_JsonRoot, &st_JsonError)) { Config_IsErrorOccur = true; Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_PARSE; @@ -324,109 +307,6 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_VersionFile(LPCXSTR lpszConfigF return true; } /******************************************************************** -函数名称:ModuleConfigure_Json_PluginFile -函数功能:读取JSON配置文件 - 参数.一:lpszConfigFile - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:输入要读取的配置文件 - 参数.二:pSt_PluginConfig - In/Out:Out - 类型:数据结构指针 - 可空:N - 意思:输出插件配置信息 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -bool CModuleConfigure_Json::ModuleConfigure_Json_PluginFile(LPCXSTR lpszConfigFile, XENGINE_PLUGINCONFIG* pSt_PluginConfig) -{ - Config_IsErrorOccur = false; - - if ((NULL == lpszConfigFile) || (NULL == pSt_PluginConfig)) - { - Config_IsErrorOccur = true; - Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_PARAMENT; - return false; - } - Json::Value st_JsonRoot; - JSONCPP_STRING st_JsonError; - Json::CharReaderBuilder st_JsonBuilder; - //读取配置文件所有内容到缓冲区 - FILE* pSt_File = _xtfopen(lpszConfigFile, _X("rb")); - if (NULL == pSt_File) - { - Config_IsErrorOccur = true; - Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_OPENFILE; - return false; - } - size_t nCount = 0; - XCHAR tszMsgBuffer[4096]; - while (1) - { - size_t nRet = fread(tszMsgBuffer + nCount, 1, 2048, pSt_File); - if (nRet <= 0) - { - break; - } - nCount += nRet; - } - fclose(pSt_File); - //开始解析配置文件 - std::unique_ptr const pSt_JsonReader(st_JsonBuilder.newCharReader()); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nCount, &st_JsonRoot, &st_JsonError)) - { - Config_IsErrorOccur = true; - Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_PARSE; - return false; - } - //申请内存 - pSt_PluginConfig->pStl_ListPluginLua = new list; - pSt_PluginConfig->pStl_ListPluginModule = new list; - if (NULL == pSt_PluginConfig->pStl_ListPluginLua || NULL == pSt_PluginConfig->pStl_ListPluginModule) - { - Config_IsErrorOccur = true; - Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_MALLOC; - return false; - } - //解析module列表 - Json::Value st_JsonModuleArray = st_JsonRoot["PluginModule"]; - for (unsigned int i = 0; i < st_JsonModuleArray.size(); i++) - { - XENGINE_PLUGININFO st_PluginInfo; - memset(&st_PluginInfo, '\0', sizeof(XENGINE_PLUGININFO)); - - st_PluginInfo.bEnable = st_JsonModuleArray[i]["PluginEnable"].asBool(); - _tcsxcpy(st_PluginInfo.tszPluginFile, st_JsonModuleArray[i]["PluginFile"].asCString()); -#ifdef _MSC_BUILD - _tcsxcat(st_PluginInfo.tszPluginFile, ".dll"); -#elif __linux__ - _tcsxcat(st_PluginInfo.tszPluginFile, ".so"); -#else - _tcsxcat(st_PluginInfo.tszPluginFile, ".dylib"); -#endif - _tcsxcpy(st_PluginInfo.tszPluginMethod, st_JsonModuleArray[i]["PluginMethod"].asCString()); - - pSt_PluginConfig->pStl_ListPluginModule->push_back(st_PluginInfo); - } - //解析lua列表 - Json::Value st_JsonLuaArray = st_JsonRoot["PluginLua"]; - for (unsigned int i = 0; i < st_JsonLuaArray.size(); i++) - { - XENGINE_PLUGININFO st_PluginInfo; - memset(&st_PluginInfo, '\0', sizeof(XENGINE_PLUGININFO)); - - st_PluginInfo.bEnable = st_JsonLuaArray[i]["PluginEnable"].asBool(); - _tcsxcpy(st_PluginInfo.tszPluginFile, st_JsonLuaArray[i]["PluginFile"].asCString()); - _tcsxcpy(st_PluginInfo.tszPluginMethod, st_JsonLuaArray[i]["PluginMethod"].asCString()); - - pSt_PluginConfig->pStl_ListPluginLua->push_back(st_PluginInfo); - } - return true; -} -/******************************************************************** 函数名称:ModuleConfigure_Json_DeamonList 函数功能:读取JSON配置文件 参数.一:lpszConfigFile @@ -465,21 +345,12 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_DeamonList(LPCXSTR lpszConfigFi Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_OPENFILE; return false; } - int nCount = 0; - XCHAR tszMsgBuffer[4096]; - while (1) - { - int nRet = fread(tszMsgBuffer + nCount, 1, 2048, pSt_File); - if (nRet <= 0) - { - break; - } - nCount += nRet; - } + XCHAR tszMsgBuffer[8192] = {}; + size_t nRet = fread(tszMsgBuffer, 1, sizeof(tszMsgBuffer), pSt_File); fclose(pSt_File); std::unique_ptr const pSt_JsonReader(st_JsonBuilder.newCharReader()); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nCount, &st_JsonRoot, &st_JsonError)) + if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nRet, &st_JsonRoot, &st_JsonError)) { Config_IsErrorOccur = true; Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_PARSE; diff --git a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.h b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.h index 362e773a2daf3b07dbfcf4ef53f7d9cf0adf94b9..3a5f8478d927cf460ee0aa4aa7e26b17c4215e1e 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.h +++ b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.h @@ -19,7 +19,6 @@ public: public: bool ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XENGINE_SERVICECONFIG* pSt_ServerConfig); bool ModuleConfigure_Json_VersionFile(LPCXSTR lpszConfigFile, XENGINE_SERVICECONFIG* pSt_ServerConfig); - bool ModuleConfigure_Json_PluginFile(LPCXSTR lpszConfigFile, XENGINE_PLUGINCONFIG* pSt_PluginConfig); bool ModuleConfigure_Json_DeamonList(LPCXSTR lpszConfigFile, XENGINE_DEAMONAPPLIST* pSt_AppConfig); protected: private: diff --git a/XEngine_Source/XEngine_ModuleConfigure/XEngine_ModuleConfigure.def b/XEngine_Source/XEngine_ModuleConfigure/XEngine_ModuleConfigure.def index 5fe48fa7e9fb9f5d3328dbc0bb0a0c772acfcd5e..5332cde1cd17ad9b815738b190c7566d0d1e5900 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/XEngine_ModuleConfigure.def +++ b/XEngine_Source/XEngine_ModuleConfigure/XEngine_ModuleConfigure.def @@ -5,5 +5,4 @@ EXPORTS ModuleConfigure_Json_File ModuleConfigure_Json_VersionFile - ModuleConfigure_Json_PluginFile ModuleConfigure_Json_DeamonList \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleConfigure/pch.cpp b/XEngine_Source/XEngine_ModuleConfigure/pch.cpp index d903b3c7184e12653ff59d61834c0069d1e2c92a..afb6ec4d6b0fbf37783dcb9daaae75a210024342 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/pch.cpp +++ b/XEngine_Source/XEngine_ModuleConfigure/pch.cpp @@ -37,10 +37,6 @@ extern "C" bool ModuleConfigure_Json_VersionFile(LPCXSTR lpszConfigFile, XENGINE { return m_ConfigJson.ModuleConfigure_Json_VersionFile(lpszConfigFile, pSt_ServerConfig); } -extern "C" bool ModuleConfigure_Json_PluginFile(LPCXSTR lpszConfigFile, XENGINE_PLUGINCONFIG * pSt_PluginConfig) -{ - return m_ConfigJson.ModuleConfigure_Json_PluginFile(lpszConfigFile, pSt_PluginConfig); -} extern "C" bool ModuleConfigure_Json_DeamonList(LPCXSTR lpszConfigFile, XENGINE_DEAMONAPPLIST * pSt_AppConfig) { return m_ConfigJson.ModuleConfigure_Json_DeamonList(lpszConfigFile, pSt_AppConfig); diff --git a/XEngine_Source/XEngine_ModuleDatabase/Makefile b/XEngine_Source/XEngine_ModuleDatabase/Makefile index 9dc1c98f1417d910612fbfc9edf74c09605d9909..dd184a25ad142fe190771f05aab31ec29dc5e80f 100644 --- a/XEngine_Source/XEngine_ModuleDatabase/Makefile +++ b/XEngine_Source/XEngine_ModuleDatabase/Makefile @@ -1,11 +1,7 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ LOADSO = LIB = -lXEngine_BaseLib -lHelpComponents_DataBase @@ -13,31 +9,29 @@ LIBEX = OBJECTS = ModuleDatabase_IDCard.o ModuleDatabase_Bank.o ModuleDatabase_ZIPCode.o ModuleDatabase_XLog.o ModuleDatabase_ShortLink.o ModuleDatabase_WordFilter.o ModuleDatabase_Machine.o ModuleDatabase_OilInfo.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -46,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_XLog/ModuleDatabase_XLog.cpp b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_XLog/ModuleDatabase_XLog.cpp index 39fd24762392c70e038121a262fb9035b76546ec..44e174031a1c4a2b64e1186c94fd915dc0f035ea 100644 --- a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_XLog/ModuleDatabase_XLog.cpp +++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_XLog/ModuleDatabase_XLog.cpp @@ -350,7 +350,7 @@ bool CModuleDatabase_XLog::ModuleDatabase_XLog_Show(XCHAR*** ppptszList, int* pI return false; } *pInt_ListCount = (int)nllLine; - BaseLib_Memory_Malloc((XPPPMEM)ppptszList, (int)nllLine, MAX_PATH); + BaseLib_Memory_Malloc((XPPPMEM)ppptszList, (int)nllLine, XPATH_MAX); for (__int64u i = 0; i < nllLine; i++) { XCHAR** pptszResult = DataBase_MySQL_GetResult(xhDBSQL, xhTable); diff --git a/XEngine_Source/XEngine_ModuleHelp/Makefile b/XEngine_Source/XEngine_ModuleHelp/Makefile index 53ac724a76299b1b4d4ff442465ac8c2226eedc2..25f94c886303239334ea9c516f06284614a80bf1 100644 --- a/XEngine_Source/XEngine_ModuleHelp/Makefile +++ b/XEngine_Source/XEngine_ModuleHelp/Makefile @@ -1,11 +1,7 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ -I /usr/include/opencv4 -I /usr/local/include/opencv4 -I /usr/local/include/lua LOADSO = LIB = -lXEngine_BaseLib -lXClient_Socket -lNetHelp_APIAddr @@ -19,35 +15,33 @@ ifeq ($(MACRO_QR_SUPPORT),1) LIB += -lqrencode endif ifeq ($(MACRO_OPENCV_SUPPORT),1) - LIB += -llzma -lopencv_core -lopencv_imgcodecs -lopencv_imgproc -lopencv_wechat_qrcode -ltesseract -lleptonica + LIB += -lopencv_core -lopencv_imgcodecs -lopencv_imgproc -lopencv_wechat_qrcode -ltesseract -lleptonica endif ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -56,7 +50,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LOADHDR += -I /opt/homebrew/opt/leptonica/include -I /opt/homebrew/opt/opencv/include/opencv4 -I /opt/homebrew/opt/tesseract/include -I /opt/homebrew/opt/qrencode/include LOADSO += -L /opt/homebrew/opt/leptonica/lib -L /opt/homebrew/opt/opencv/lib -L /opt/homebrew/opt/tesseract/lib -L /opt/homebrew/opt/qrencode/lib diff --git a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Define.h b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Define.h index 730994e081ac89118bd05d07cf27daad06dd6a44..1d8f7ce5348a4a02d6cc6780321456bc8b0cfca6 100644 --- a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Define.h +++ b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Define.h @@ -328,9 +328,9 @@ typedef enum ////////////////////////////////////////////////////////////////////////// // 导出回调函数 ////////////////////////////////////////////////////////////////////////// -typedef void(CALLBACK* CALLBACK_APISERVICE_MODULE_HELP_P2PCLIENT)(XENGINE_P2XPPEER_PROTOCOL* pSt_P2PProtocol, XPVOID lParam); +typedef void(XCALLBACK* CALLBACK_APISERVICE_MODULE_HELP_P2PCLIENT)(XENGINE_P2XPPEER_PROTOCOL* pSt_P2PProtocol, XPVOID lParam); //套接字测试回调:测试句柄,测试的服务器地址,测试的端口,当前测试次数,失败次数,成功次数,状态:0成功报告,1失败报告,2结束报告,自定义参数 -typedef void(CALLBACK* CALLBACK_APISERVICE_MODULE_HELP_SOCKETTEST)(XNETHANDLE xhToken, LPCXSTR lpszAddr, int nPort, __int64x nNumber, __int64x nFailed, __int64x nSuccess, int nStatus, XPVOID lParam); +typedef void(XCALLBACK* CALLBACK_APISERVICE_MODULE_HELP_SOCKETTEST)(XNETHANDLE xhToken, LPCXSTR lpszAddr, int nPort, __int64x nNumber, __int64x nFailed, __int64x nSuccess, int nStatus, XPVOID lParam); ////////////////////////////////////////////////////////////////////////// // 导出数据结构 ////////////////////////////////////////////////////////////////////////// diff --git a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Image/ModuleHelp_ImageGet.cpp b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Image/ModuleHelp_ImageGet.cpp index 535f97ec5ed92d5f02afb4ef49ecc0c0443edf2e..6865d6b7b74b7325f77ad570e4c89362d72aa0c4 100644 --- a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Image/ModuleHelp_ImageGet.cpp +++ b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Image/ModuleHelp_ImageGet.cpp @@ -213,7 +213,7 @@ bool CModuleHelp_ImageGet::ModuleHelp_ImageGet_TextGet(LPCXSTR lpszMsgBuffer, in } *pInt_ListCount = stl_ListStr.size(); - BaseLib_Memory_Malloc((XPPPMEM)ppptszListStr, *pInt_ListCount, MAX_PATH); + BaseLib_Memory_Malloc((XPPPMEM)ppptszListStr, *pInt_ListCount, XPATH_MAX); auto stl_ListIterator = stl_ListStr.begin(); for (int i = 0; stl_ListIterator != stl_ListStr.end(); i++, stl_ListIterator++) diff --git a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_P2PClient/ModuleHelp_P2PClient.cpp b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_P2PClient/ModuleHelp_P2PClient.cpp index 4aadafba356b99ad116a9e7895aef1c18a4eaa90..418ad7e8eaa67a489fa007a822356d97af945cda 100644 --- a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_P2PClient/ModuleHelp_P2PClient.cpp +++ b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_P2PClient/ModuleHelp_P2PClient.cpp @@ -506,7 +506,7 @@ bool CModuleHelp_P2PClient::ModuleHelp_P2PClient_Heart(XENGINE_P2XPPEER_PROTOCOL ////////////////////////////////////////////////////////////////////////// // 保护函数 ////////////////////////////////////////////////////////////////////////// -XHTHREAD CALLBACK CModuleHelp_P2PClient::ModuleHelp_P2PClient_Thread(XPVOID lParam) +XHTHREAD XCALLBACK CModuleHelp_P2PClient::ModuleHelp_P2PClient_Thread(XPVOID lParam) { CModuleHelp_P2PClient* pClass_This = (CModuleHelp_P2PClient*)lParam; list stl_ListRemove; diff --git a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_P2PClient/ModuleHelp_P2PClient.h b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_P2PClient/ModuleHelp_P2PClient.h index 6f14a8f9e5c487ac2448c5c6441dd3d1db0b1112..4837475d59794ea5f717594fce16a0bdc27d91a8 100644 --- a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_P2PClient/ModuleHelp_P2PClient.h +++ b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_P2PClient/ModuleHelp_P2PClient.h @@ -26,7 +26,7 @@ public: bool ModuleHelp_P2PClient_DelAll(); bool ModuleHelp_P2PClient_Heart(XENGINE_P2XPPEER_PROTOCOL* pSt_P2PProtocol); protected: - static XHTHREAD CALLBACK ModuleHelp_P2PClient_Thread(XPVOID lParam); + static XHTHREAD XCALLBACK ModuleHelp_P2PClient_Thread(XPVOID lParam); private: bool m_bIsRun; int m_nTimeout; diff --git a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_SocketTest/ModuleHelp_SocketTest.cpp b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_SocketTest/ModuleHelp_SocketTest.cpp index 41b0895c1b8c071a3ea6b1a177ed4723ecd5a2c4..811c0d639664229b74854622553a645fb09d02e1 100644 --- a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_SocketTest/ModuleHelp_SocketTest.cpp +++ b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_SocketTest/ModuleHelp_SocketTest.cpp @@ -339,7 +339,7 @@ XHTHREAD CModuleHelp_SocketTest::ModuleHelp_SocketTest_ThreadConn(XPVOID lParam) break; } //设置TCP - XSOCKET hSocket = INVALID_SOCKET; + XSOCKET hSocket = XSOCKET_ERROR; if (XClient_TCPSelect_Create(&hSocket, pSt_ReConnect->st_SocketConn.tszAddr, pSt_ReConnect->st_SocketConn.nPort, 100)) { pSt_ReConnect->lpCall_ReConnect(pSt_ReConnect->xhToken, pSt_ReConnect->st_SocketConn.tszAddr, pSt_ReConnect->st_SocketConn.nPort, ++nNumber, nFailed, ++nSucess, 0, pSt_ReConnect->lParam); diff --git a/XEngine_Source/XEngine_ModulePlugin/Makefile b/XEngine_Source/XEngine_ModulePlugin/Makefile index 8f77d77415af270f7964239a309862fea76e4a4e..43b6e93f805ea05c825cf89c14e0da134af97447 100644 --- a/XEngine_Source/XEngine_ModulePlugin/Makefile +++ b/XEngine_Source/XEngine_ModulePlugin/Makefile @@ -1,11 +1,7 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ -I /usr/include/lua5.4 -I /usr/local/include/lua LOADSO = LIB = -lXEngine_BaseLib @@ -15,32 +11,30 @@ OBJECTS = ModulePlugin_LibCore.o ModulePlugin_LuaCore.o ModulePlugin_Loader.o pc MACRO_LUA_SUPPORT := $(shell gcc -E -dM ../XEngine_BuildSwitch.h | grep _XENGINE_BUILD_SWITCH_LUA | cut -d ' ' -f 3) ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos LIB += -llua else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu LIB += -llua5.4 endif FILEEXT = so @@ -50,13 +44,10 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib - LOADHDR += -I /opt/homebrew/opt/lua/include/lua LOADSO += -L /opt/homebrew/opt/lua/lib - ifeq ($(MACRO_LUA_SUPPORT),1) LIB += -llua endif @@ -64,7 +55,6 @@ else ifeq ($(PLATFORM),mac) LOADBIN = -Wl,-rpath,@loader_path/./ endif - all:$(OBJECTS) $(CC) $(DEBUG) $(OBJECTS) -o libXEngine_ModulePlugin.$(FILEEXT) $(LIBFLAG) $(LIB) $(LIBEX) $(LOADSO) $(LOADBIN) diff --git a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Define.h b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Define.h index a707ced6a46596b8677d742a1fff31f1ffb6458c..74fe825f14116dda3e291f57937e1b957f93988e 100644 --- a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Define.h +++ b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Define.h @@ -39,17 +39,17 @@ extern "C" bool ModulePlugin_LibCore_Init(); 类型:常量字符指针 可空:N 意思:插件模块路径 - 参数.三:lParam - In/Out:In/Out - 类型:无类型指针 + 参数.三:pSt_PluginParameter + In/Out:In + 类型:数据结构指针 可空:Y - 意思:自定义输入输出参数 + 意思:输入插件初始化参数 返回值 类型:逻辑型 意思:是否成功添加 备注: *********************************************************************/ -extern "C" bool ModulePlugin_LibCore_Push(XNETHANDLE * pxhNet, LPCXSTR lpszPluginFile, XPVOID lParam = NULL); +extern "C" bool ModulePlugin_LibCore_Push(XNETHANDLE * pxhNet, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); /******************************************************************** 函数名称:ModulePlugin_LibCore_Exec 函数功能:执行一次 @@ -100,6 +100,40 @@ extern "C" bool ModulePlugin_LibCore_Push(XNETHANDLE * pxhNet, LPCXSTR lpszPlugi *********************************************************************/ extern "C" bool ModulePlugin_LibCore_Exec(XNETHANDLE xhModule, XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer = NULL, int nMsgLen = 0); /******************************************************************** +函数名称:ModulePlugin_LibCore_Get +函数功能:获取插件基础信息函数 + 参数.一:xhModule + In/Out:In + 类型:句柄 + 可空:N + 意思:要操作的模块句柄 + 参数.二:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.三:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.四:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.五:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModulePlugin_LibCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); +/******************************************************************** 函数名称:ModulePlugin_LibCore_Destroy 函数功能:销毁插件核心并且清理资源 返回值 @@ -133,17 +167,17 @@ extern "C" bool ModulePlugin_LuaCore_Init(); 类型:常量字符指针 可空:N 意思:插件模块路径 - 参数.三:lParam - In/Out:In/Out - 类型:无类型指针 + 参数.三:pSt_PluginParameter + In/Out:In + 类型:数据结构指针 可空:Y - 意思:自定义输入输出参数 + 意思:输入插件初始化参数 返回值 类型:逻辑型 意思:是否成功添加 备注: *********************************************************************/ -extern "C" bool ModulePlugin_LuaCore_Push(XNETHANDLE* pxhModule, LPCXSTR lpszPluginFile, XPVOID lParam = NULL); +extern "C" bool ModulePlugin_LuaCore_Push(XNETHANDLE* pxhModule, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); /******************************************************************** 函数名称:ModulePlugin_LuaCore_Exec 函数功能:执行一次 @@ -194,6 +228,40 @@ extern "C" bool ModulePlugin_LuaCore_Push(XNETHANDLE* pxhModule, LPCXSTR lpszPlu *********************************************************************/ extern "C" bool ModulePlugin_LuaCore_Exec(XNETHANDLE xhModule, XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer = NULL, int nMsgLen = 0); /******************************************************************** +函数名称:ModulePlugin_LuaCore_Get +函数功能:获取插件基础信息函数 + 参数.一:xhModule + In/Out:In + 类型:句柄 + 可空:N + 意思:要操作的模块句柄 + 参数.二:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.三:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.四:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.五:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModulePlugin_LuaCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); +/******************************************************************** 函数名称:ModulePlugin_LuaCore_Destroy 函数功能:销毁插件核心并且清理资源 返回值 @@ -217,27 +285,27 @@ extern "C" bool ModulePlugin_Loader_Init(); /******************************************************************** 函数名称:ModulePlugin_Loader_Insert 函数功能:插入一个模块到加载器 - 参数.一:lpszModuleMethod - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:插件方法名 - 参数.二:lpszModuleName + 参数.一:lpszModuleName In/Out:In 类型:常量字符指针 可空:N 意思:插件路径 - 参数.三:nType + 参数.二:nType In/Out:In 类型:整数型 - 可空:Y + 可空:N 意思:0为lib,1为lua + 参数.三:pSt_PluginParameter + In/Out:In + 类型:数据结构指针 + 可空:Y + 意思:输入插件初始化参数 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" bool ModulePlugin_Loader_Insert(LPCXSTR lpszModuleMethod, LPCXSTR lpszModuleName, int nType = 0); +extern "C" bool ModulePlugin_Loader_Insert(LPCXSTR lpszModuleName, int nType, XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); /******************************************************************** 函数名称:ModulePlugin_Loader_Find 函数功能:查找方法是否注册 @@ -258,6 +326,74 @@ extern "C" bool ModulePlugin_Loader_Insert(LPCXSTR lpszModuleMethod, LPCXSTR lps *********************************************************************/ extern "C" bool ModulePlugin_Loader_Find(LPCXSTR lpszMethodName, int* pInt_Type); /******************************************************************** +函数名称:ModulePlugin_LibCore_Get +函数功能:获取插件基础信息函数 + 参数.一:lpszMethodName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要操作的模块句柄 + 参数.二:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.三:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.四:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.五:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModulePlugin_Loader_Get(LPCXSTR lpszMethodName, XCHAR* ptszPluginName = NULL, XCHAR* ptszPluginVersion = NULL, XCHAR* ptszPluginAuthor = NULL, XCHAR* ptszPluginDesc = NULL); +/******************************************************************** +函数名称:ModulePlugin_Loader_GetForModule +函数功能:通过模块名称获取模块信息 + 参数.一:lpszModuleName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要操作的模块名称 + 参数.二:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.三:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.四:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.五:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModulePlugin_Loader_GetForModule(LPCXSTR lpszModuleName, XCHAR* ptszPluginName = NULL, XCHAR* ptszPluginVersion = NULL, XCHAR* ptszPluginAuthor = NULL, XCHAR* ptszPluginDesc = NULL); +/******************************************************************** 函数名称:ModulePlugin_Loader_Exec 函数功能:执行一次插件 参数.一:lpszMethodName diff --git a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Error.h b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Error.h index c24e97dc0a09461ffa628a67cf58a3771eab9995..45e487c12b56f8009cfee7f406e764af6b986438 100644 --- a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Error.h +++ b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Error.h @@ -23,4 +23,5 @@ #define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_NOTFOUND 0xE1008 //没有找到句柄 #define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_ISINITED 0xE1009 //已经初始化了,不需要再次初始化 #define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_EXECTION 0xE100A //插件执行失败 -#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_MALLOC 0xE100B //申请内存失败 \ No newline at end of file +#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_MALLOC 0xE100B //申请内存失败 +#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_GETINFO 0xE100C //获取插件信息失败 \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LibCore/ModulePlugin_LibCore.cpp b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LibCore/ModulePlugin_LibCore.cpp index f0cffcc0487d6352623e4d88b165d4e4312e074e..2d6ab947a55d05782fffe4638a2967663f60cacb 100644 --- a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LibCore/ModulePlugin_LibCore.cpp +++ b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LibCore/ModulePlugin_LibCore.cpp @@ -56,17 +56,17 @@ bool CModulePlugin_LibCore::ModulePlugin_LibCore_Init() 类型:常量字符指针 可空:N 意思:插件模块路径 - 参数.三:lParam - In/Out:In/Out - 类型:无类型指针 + 参数.三:pSt_PluginParameter + In/Out:In + 类型:数据结构指针 可空:Y - 意思:自定义输入输出参数 + 意思:输入插件初始化参数 返回值 类型:逻辑型 意思:是否成功添加 备注: *********************************************************************/ -bool CModulePlugin_LibCore::ModulePlugin_LibCore_Push(XNETHANDLE* pxhModule, LPCXSTR lpszPluginFile, XPVOID lParam) +bool CModulePlugin_LibCore::ModulePlugin_LibCore_Push(XNETHANDLE* pxhModule, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter) { ModulePlugin_IsErrorOccur = false; @@ -76,7 +76,7 @@ bool CModulePlugin_LibCore::ModulePlugin_LibCore_Push(XNETHANDLE* pxhModule, LPC ModulePlugin_dwErrorCode = BaseLib_GetLastError(); return false; } - if (!ModulePlugin_LibCore_Add(*pxhModule, lpszPluginFile, lParam)) + if (!ModulePlugin_LibCore_Add(*pxhModule, lpszPluginFile, pSt_PluginParameter)) { return false; } @@ -156,6 +156,61 @@ bool CModulePlugin_LibCore::ModulePlugin_LibCore_Exec(XNETHANDLE xhModule, XCHAR return true; } /******************************************************************** +函数名称:ModulePlugin_LibCore_Get +函数功能:获取插件基础信息函数 + 参数.一:xhModule + In/Out:In + 类型:句柄 + 可空:N + 意思:要操作的模块句柄 + 参数.二:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.三:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.四:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.五:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModulePlugin_LibCore::ModulePlugin_LibCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) +{ + ModulePlugin_IsErrorOccur = false; + + st_csStl.lock_shared(); + //执行指定插件函数 + unordered_map::const_iterator stl_MapIterator = stl_MapFrameWork.find(xhModule); + if (stl_MapIterator == stl_MapFrameWork.end()) + { + ModulePlugin_IsErrorOccur = true; + ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_NOTFOUND; + st_csStl.unlock_shared(); + return false; + } + _tcsxcpy(ptszPluginName, stl_MapIterator->second.tszModuleName); + _tcsxcpy(ptszPluginVersion, stl_MapIterator->second.tszModuleVer); + _tcsxcpy(ptszPluginAuthor, stl_MapIterator->second.tszModuleAuthor); + _tcsxcpy(ptszPluginDesc, stl_MapIterator->second.tszModuleDesc); + st_csStl.unlock_shared(); + + return true; +} +/******************************************************************** 函数名称:ModulePlugin_LibCore_Destroy 函数功能:销毁插件核心并且清理资源 返回值 @@ -178,12 +233,8 @@ bool CModulePlugin_LibCore::ModulePlugin_LibCore_Destroy() unordered_map::iterator stl_MapIterator = stl_MapFrameWork.begin(); for (; stl_MapIterator != stl_MapFrameWork.end(); stl_MapIterator++) { - stl_MapIterator->second.fpCall_PluginCore_UnInit(); -#ifdef _MSC_BUILD - FreeLibrary(stl_MapIterator->second.mhFile); -#else - dlclose(stl_MapIterator->second.mhFile); -#endif + stl_MapIterator->second.fpCall_PluginCore_UnInit(); + XFreeModule(stl_MapIterator->second.mhFile); } stl_MapFrameWork.clear(); st_csStl.unlock(); @@ -205,17 +256,17 @@ bool CModulePlugin_LibCore::ModulePlugin_LibCore_Destroy() 类型:常量字符指针 可空:N 意思:插件模块路径 - 参数.三:lParam - In/Out:In/Out - 类型:无类型指针 + 参数.三:pSt_PluginParameter + In/Out:In + 类型:数据结构指针 可空:Y - 意思:自定义输入输出参数 + 意思:输入插件初始化参数 返回值 类型:逻辑型 意思:是否成功执行 备注: *********************************************************************/ -bool CModulePlugin_LibCore::ModulePlugin_LibCore_Add(XNETHANDLE xhNet, LPCXSTR lpszPluginFile, XPVOID lParam) +bool CModulePlugin_LibCore::ModulePlugin_LibCore_Add(XNETHANDLE xhNet, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter) { ModulePlugin_IsErrorOccur = false; @@ -225,9 +276,7 @@ bool CModulePlugin_LibCore::ModulePlugin_LibCore_Add(XNETHANDLE xhNet, LPCXSTR l ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_PARAMENT; return false; } - PLUGINCORE_FRAMEWORK st_FrameWork; - st_FrameWork.mhFile = 0; - memset(st_FrameWork.tszModuleFile, '\0', sizeof(st_FrameWork.tszModuleFile)); + PLUGINCORE_FRAMEWORK st_FrameWork = {}; //打开一个模块 #ifdef _MSC_BUILD st_FrameWork.mhFile = LoadLibraryA(lpszPluginFile); @@ -248,11 +297,7 @@ bool CModulePlugin_LibCore::ModulePlugin_LibCore_Add(XNETHANDLE xhNet, LPCXSTR l #endif if (NULL == st_FrameWork.fpCall_PluginCore_Init) { -#ifdef _MSC_BUILD - FreeLibrary(st_FrameWork.mhFile); -#else - dlclose(st_FrameWork.mhFile); -#endif + XFreeModule(st_FrameWork.mhFile); ModulePlugin_IsErrorOccur = true; ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPINIT; return false; @@ -264,11 +309,7 @@ bool CModulePlugin_LibCore::ModulePlugin_LibCore_Add(XNETHANDLE xhNet, LPCXSTR l #endif if (NULL == st_FrameWork.fpCall_PluginCore_UnInit) { -#ifdef _MSC_BUILD - FreeLibrary(st_FrameWork.mhFile); -#else - dlclose(st_FrameWork.mhFile); -#endif + XFreeModule(st_FrameWork.mhFile); ModulePlugin_IsErrorOccur = true; ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPUNINIT; return false; @@ -280,11 +321,7 @@ bool CModulePlugin_LibCore::ModulePlugin_LibCore_Add(XNETHANDLE xhNet, LPCXSTR l #endif if (NULL == st_FrameWork.fpCall_PluginCore_Call) { -#ifdef _MSC_BUILD - FreeLibrary(st_FrameWork.mhFile); -#else - dlclose(st_FrameWork.mhFile); -#endif + XFreeModule(st_FrameWork.mhFile); ModulePlugin_IsErrorOccur = true; ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPCALL; return false; @@ -296,27 +333,33 @@ bool CModulePlugin_LibCore::ModulePlugin_LibCore_Add(XNETHANDLE xhNet, LPCXSTR l #endif if (NULL == st_FrameWork.fpCall_PluginCore_GetLastError) { -#ifdef _MSC_BUILD - FreeLibrary(st_FrameWork.mhFile); -#else - dlclose(st_FrameWork.mhFile); -#endif + XFreeModule(st_FrameWork.mhFile); ModulePlugin_IsErrorOccur = true; ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPERROR; return false; } - //初始化内部模块 - if (!st_FrameWork.fpCall_PluginCore_Init(lParam)) - { #ifdef _MSC_BUILD - FreeLibrary(st_FrameWork.mhFile); + st_FrameWork.fpCall_PluginCore_GetInfo = (FPCall_PluginCore_GetInfo)GetProcAddress(st_FrameWork.mhFile, _X("PluginCore_GetInfo")); #else - dlclose(st_FrameWork.mhFile); + * (void**)(&st_FrameWork.fpCall_PluginCore_GetInfo) = dlsym(st_FrameWork.mhFile, _X("PluginCore_GetInfo")); #endif + if (NULL == st_FrameWork.fpCall_PluginCore_GetInfo) + { + XFreeModule(st_FrameWork.mhFile); + ModulePlugin_IsErrorOccur = true; + ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPERROR; + return false; + } + //初始化内部模块 + if (!st_FrameWork.fpCall_PluginCore_Init(pSt_PluginParameter)) + { + XFreeModule(st_FrameWork.mhFile); ModulePlugin_IsErrorOccur = true; ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_INIT; return false; } + //获得内部模块信息 + st_FrameWork.fpCall_PluginCore_GetInfo(st_FrameWork.tszModuleName, st_FrameWork.tszModuleVer, st_FrameWork.tszModuleAuthor, st_FrameWork.tszModuleDesc); _tcsxcpy(st_FrameWork.tszModuleFile, lpszPluginFile); //添加模块属性到STL函数中 diff --git a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LibCore/ModulePlugin_LibCore.h b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LibCore/ModulePlugin_LibCore.h index 24eba960e735cc52b12718388fecdb70db6a2eb7..c5d8c4580a686899f8feecdee54cfc063f010d7f 100644 --- a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LibCore/ModulePlugin_LibCore.h +++ b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LibCore/ModulePlugin_LibCore.h @@ -10,8 +10,9 @@ // Purpose: 插件核心架构定义 // History: *********************************************************************/ -typedef bool(*FPCall_PluginCore_Init)(XPVOID lParam); +typedef bool(*FPCall_PluginCore_Init)(XENGINE_PLUGINPARAM* pSt_PluginParameter); typedef void(*FPCall_PluginCore_UnInit)(); +typedef void(*FPCall_PluginCore_GetInfo)(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); typedef bool(*FPCall_PluginCore_Call)(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer, int nMsgLen); typedef XLONG(*FPCall_PluginCore_GetLastError)(); @@ -22,10 +23,15 @@ typedef struct #else void* mhFile; #endif - XCHAR tszModuleFile[MAX_PATH]; + XCHAR tszModuleFile[XPATH_MAX]; + XCHAR tszModuleName[128]; + XCHAR tszModuleAuthor[128]; + XCHAR tszModuleDesc[128]; + XCHAR tszModuleVer[64]; - bool(*fpCall_PluginCore_Init)(XPVOID lParam); + bool(*fpCall_PluginCore_Init)(XENGINE_PLUGINPARAM* pSt_PluginParameter); void(*fpCall_PluginCore_UnInit)(); + void(*fpCall_PluginCore_GetInfo)(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); bool(*fpCall_PluginCore_Call)(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer, int nMsgLen); XLONG(*fpCall_PluginCore_GetLastError)(); }PLUGINCORE_FRAMEWORK, * LPPLUGINCORE_FRAMEWORK; @@ -37,11 +43,12 @@ public: ~CModulePlugin_LibCore(); public: bool ModulePlugin_LibCore_Init(); - bool ModulePlugin_LibCore_Push(XNETHANDLE* pxhModule, LPCXSTR lpszPluginFile, XPVOID lParam = NULL); + bool ModulePlugin_LibCore_Push(XNETHANDLE* pxhModule, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); bool ModulePlugin_LibCore_Exec(XNETHANDLE xhModule, XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer = NULL, int nMsgLen = 0); + bool ModulePlugin_LibCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); bool ModulePlugin_LibCore_Destroy(); protected: - bool ModulePlugin_LibCore_Add(XNETHANDLE xhNet, LPCXSTR lpszPluginFile, XPVOID lParam = NULL); + bool ModulePlugin_LibCore_Add(XNETHANDLE xhNet, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); private: bool bIsInit; private: diff --git a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Loader/ModulePlugin_Loader.cpp b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Loader/ModulePlugin_Loader.cpp index 6899f6f0afcb336451c43d52c7ca66ccdf1efa5f..588bab81c170462b3cedfb9647d9f4055bfc294b 100644 --- a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Loader/ModulePlugin_Loader.cpp +++ b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Loader/ModulePlugin_Loader.cpp @@ -38,31 +38,31 @@ bool CModulePlugin_Loader::ModulePlugin_Loader_Init() /******************************************************************** 函数名称:ModulePlugin_Loader_Insert 函数功能:插入一个模块到加载器 - 参数.一:lpszModuleMethod - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:插件方法名 - 参数.二:lpszModuleName + 参数.一:lpszModuleName In/Out:In 类型:常量字符指针 可空:N 意思:插件路径 - 参数.三:nType + 参数.二:nType In/Out:In 类型:整数型 - 可空:Y + 可空:N 意思:0为lib,1为lua + 参数.三:pSt_PluginParameter + In/Out:In + 类型:数据结构指针 + 可空:Y + 意思:输入插件初始化参数 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CModulePlugin_Loader::ModulePlugin_Loader_Insert(LPCXSTR lpszModuleMethod, LPCXSTR lpszModuleName, int nType /* = 0 */) +bool CModulePlugin_Loader::ModulePlugin_Loader_Insert(LPCXSTR lpszModuleName, int nType, XENGINE_PLUGINPARAM* pSt_PluginParameter /* = NULL */) { ModulePlugin_IsErrorOccur = false; - if ((NULL == lpszModuleMethod) || (NULL == lpszModuleName)) + if (NULL == lpszModuleName) { ModulePlugin_IsErrorOccur = true; ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_PARAMENT; @@ -73,25 +73,26 @@ bool CModulePlugin_Loader::ModulePlugin_Loader_Insert(LPCXSTR lpszModuleMethod, st_PluginLoader.nType = nType; _tcsxcpy(st_PluginLoader.tszModuleFile, lpszModuleName); - _tcsxcpy(st_PluginLoader.tszModuleMethod, lpszModuleMethod); if (0 == nType) { - if (!ModulePlugin_LibCore_Push(&st_PluginLoader.xhToken, lpszModuleName)) + if (!ModulePlugin_LibCore_Push(&st_PluginLoader.xhToken, lpszModuleName, pSt_PluginParameter)) { return false; } + ModulePlugin_LibCore_Get(st_PluginLoader.xhToken, st_PluginLoader.tszModuleName, st_PluginLoader.tszModuleVer, st_PluginLoader.tszModuleAuthor, st_PluginLoader.tszModuleDesc); } else { - if (!ModulePlugin_LuaCore_Push(&st_PluginLoader.xhToken, lpszModuleName)) + if (!ModulePlugin_LuaCore_Push(&st_PluginLoader.xhToken, lpszModuleName, pSt_PluginParameter)) { return false; } + ModulePlugin_LuaCore_Get(st_PluginLoader.xhToken, st_PluginLoader.tszModuleName, st_PluginLoader.tszModuleVer, st_PluginLoader.tszModuleAuthor, st_PluginLoader.tszModuleDesc); } st_Locker.lock(); - stl_MapLoader.insert(make_pair(lpszModuleMethod, st_PluginLoader)); + stl_MapLoader.insert(make_pair(st_PluginLoader.tszModuleName, st_PluginLoader)); st_Locker.unlock(); return true; } @@ -140,6 +141,150 @@ bool CModulePlugin_Loader::ModulePlugin_Loader_Find(LPCXSTR lpszMethodName, int* return true; } /******************************************************************** +函数名称:ModulePlugin_LibCore_Get +函数功能:获取插件基础信息函数 + 参数.一:lpszMethodName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要操作的模块句柄 + 参数.二:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.三:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.四:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.五:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModulePlugin_Loader::ModulePlugin_Loader_Get(LPCXSTR lpszMethodName, XCHAR* ptszPluginName /* = NULL */, XCHAR* ptszPluginVersion /* = NULL */, XCHAR* ptszPluginAuthor /* = NULL */, XCHAR* ptszPluginDesc /* = NULL */) +{ + ModulePlugin_IsErrorOccur = false; + + if (NULL == ptszPluginName || NULL == ptszPluginVersion || NULL == ptszPluginAuthor || NULL == ptszPluginDesc) + { + ModulePlugin_IsErrorOccur = true; + ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_PARAMENT; + return false; + } + st_Locker.lock_shared(); + unordered_map::const_iterator stl_MapIterator = stl_MapLoader.find(lpszMethodName); + if (stl_MapIterator == stl_MapLoader.end()) + { + ModulePlugin_IsErrorOccur = true; + ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_NOTFOUND; + st_Locker.unlock_shared(); + return false; + } + if (NULL != ptszPluginName) + { + _tcsxcpy(ptszPluginName, stl_MapIterator->second.tszModuleName); + } + if (NULL != ptszPluginVersion) + { + _tcsxcpy(ptszPluginVersion, stl_MapIterator->second.tszModuleVer); + } + if (NULL != ptszPluginAuthor) + { + _tcsxcpy(ptszPluginAuthor, stl_MapIterator->second.tszModuleAuthor); + } + if (NULL != ptszPluginDesc) + { + _tcsxcpy(ptszPluginDesc, stl_MapIterator->second.tszModuleDesc); + } + st_Locker.unlock_shared(); + return true; +} +/******************************************************************** +函数名称:ModulePlugin_Loader_GetForModule +函数功能:通过模块名称获取模块信息 + 参数.一:lpszModuleName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要操作的模块名称 + 参数.二:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.三:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.四:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.五:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModulePlugin_Loader::ModulePlugin_Loader_GetForModule(LPCXSTR lpszModuleName, XCHAR* ptszPluginName /* = NULL */, XCHAR* ptszPluginVersion /* = NULL */, XCHAR* ptszPluginAuthor /* = NULL */, XCHAR* ptszPluginDesc /* = NULL */) +{ + ModulePlugin_IsErrorOccur = false; + + bool bFound = false; + st_Locker.lock_shared(); + for (auto stl_MapIterator = stl_MapLoader.begin(); stl_MapIterator != stl_MapLoader.end(); stl_MapIterator++) + { + if (0 == _tcsxnicmp(lpszModuleName, stl_MapIterator->second.tszModuleFile, _tcsxlen(stl_MapIterator->second.tszModuleFile))) + { + if (NULL != ptszPluginName) + { + _tcsxcpy(ptszPluginName, stl_MapIterator->second.tszModuleName); + } + if (NULL != ptszPluginVersion) + { + _tcsxcpy(ptszPluginVersion, stl_MapIterator->second.tszModuleVer); + } + if (NULL != ptszPluginAuthor) + { + _tcsxcpy(ptszPluginAuthor, stl_MapIterator->second.tszModuleAuthor); + } + if (NULL != ptszPluginDesc) + { + _tcsxcpy(ptszPluginDesc, stl_MapIterator->second.tszModuleDesc); + } + bFound = true; + break; + } + } + st_Locker.unlock_shared(); + + if (!bFound) + { + ModulePlugin_IsErrorOccur = true; + ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_NOTFOUND; + return false; + } + return true; +} +/******************************************************************** 函数名称:ModulePlugin_Loader_Exec 函数功能:执行一次插件 参数.一:lpszMethodName diff --git a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Loader/ModulePlugin_Loader.h b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Loader/ModulePlugin_Loader.h index 5a63a5a746249a894ec28306cd7633428d878426..35247ad5589ebb33af05288b3bda2291103593f1 100644 --- a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Loader/ModulePlugin_Loader.h +++ b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Loader/ModulePlugin_Loader.h @@ -12,8 +12,12 @@ *********************************************************************/ typedef struct { - XCHAR tszModuleFile[MAX_PATH]; - XCHAR tszModuleMethod[MAX_PATH]; + XCHAR tszModuleFile[XPATH_MAX]; + XCHAR tszModuleName[128]; + XCHAR tszModuleAuthor[128]; + XCHAR tszModuleDesc[128]; + XCHAR tszModuleVer[128]; + XNETHANDLE xhToken; int nType; }PLUGINCORE_LOADER, * LPPLUGINCORE_LOADER; @@ -25,8 +29,10 @@ public: ~CModulePlugin_Loader(); public: bool ModulePlugin_Loader_Init(); - bool ModulePlugin_Loader_Insert(LPCXSTR lpszModuleMethod, LPCXSTR lpszModuleName, int nType = 0); + bool ModulePlugin_Loader_Insert(LPCXSTR lpszModuleName, int nType, XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); bool ModulePlugin_Loader_Find(LPCXSTR lpszMethodName, int* pInt_Type); + bool ModulePlugin_Loader_Get(LPCXSTR lpszMethodName, XCHAR* ptszPluginName = NULL, XCHAR* ptszPluginVersion = NULL, XCHAR* ptszPluginAuthor = NULL, XCHAR* ptszPluginDesc = NULL); + bool ModulePlugin_Loader_GetForModule(LPCXSTR lpszModuleName, XCHAR* ptszPluginName = NULL, XCHAR* ptszPluginVersion = NULL, XCHAR* ptszPluginAuthor = NULL, XCHAR* ptszPluginDesc = NULL); bool ModulePlugin_Loader_Exec(LPCXSTR lpszMethodName, XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen); bool ModulePlugin_Loader_Destory(); protected: diff --git a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.cpp b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.cpp index c2b559967d2eb59e6890dc1f4c91cb7b9702c761..dd98a5bcd4fe276250bf0a265dfc99623c494ccf 100644 --- a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.cpp +++ b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.cpp @@ -46,17 +46,17 @@ bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Init() 类型:常量字符指针 可空:N 意思:插件模块路径 - 参数.三:lParam - In/Out:In/Out - 类型:无类型指针 + 参数.三:pSt_PluginParameter + In/Out:In + 类型:数据结构指针 可空:Y - 意思:自定义输入输出参数 + 意思:输入插件初始化参数 返回值 类型:逻辑型 意思:是否成功添加 备注: *********************************************************************/ -bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Push(XNETHANDLE* pxhModule, LPCXSTR lpszPluginFile, XPVOID lParam) +bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Push(XNETHANDLE* pxhModule, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter) { ModulePlugin_IsErrorOccur = false; @@ -66,7 +66,7 @@ bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Push(XNETHANDLE* pxhModule, LPC ModulePlugin_dwErrorCode = BaseLib_GetLastError(); return false; } - if (!ModulePlugin_LuaCore_Add(*pxhModule, lpszPluginFile, lParam)) + if (!ModulePlugin_LuaCore_Add(*pxhModule, lpszPluginFile, pSt_PluginParameter)) { return false; } @@ -142,8 +142,8 @@ bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Exec(XNETHANDLE xhModule, XCHAR st_csStl.unlock_shared(); return false; } - XCHAR tszURLParam[MAX_PATH]; - memset(tszURLParam, '\0', MAX_PATH); + XCHAR tszURLParam[XPATH_MAX]; + memset(tszURLParam, '\0', XPATH_MAX); for (int i = 1; i < nListCount; i++) { @@ -183,6 +183,59 @@ bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Exec(XNETHANDLE xhModule, XCHAR return true; } /******************************************************************** +函数名称:ModulePlugin_LuaCore_Get +函数功能:获取插件基础信息函数 + 参数.一:xhModule + In/Out:In + 类型:句柄 + 可空:N + 意思:要操作的模块句柄 + 参数.二:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.三:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.四:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.五:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) +{ + ModulePlugin_IsErrorOccur = false; + + st_csStl.lock_shared(); + unordered_map::const_iterator stl_MapIterator = stl_MapFrameWork.find(xhModule); + if (stl_MapIterator == stl_MapFrameWork.end()) + { + ModulePlugin_IsErrorOccur = true; + ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_NOTFOUND; + st_csStl.unlock_shared(); + return false; + } + _tcsxcpy(ptszPluginName, stl_MapIterator->second.tszModuleName); + _tcsxcpy(ptszPluginVersion, stl_MapIterator->second.tszModuleVer); + _tcsxcpy(ptszPluginAuthor, stl_MapIterator->second.tszModuleAuthor); + _tcsxcpy(ptszPluginDesc, stl_MapIterator->second.tszModuleDesc); + st_csStl.unlock_shared(); + return true; +} +/******************************************************************** 函数名称:ModulePlugin_LuaCore_Destroy 函数功能:销毁插件核心并且清理资源 返回值 @@ -226,17 +279,17 @@ bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Destroy() 类型:常量字符指针 可空:N 意思:插件模块路径 - 参数.三:lParam - In/Out:In/Out - 类型:无类型指针 + 参数.三:pSt_PluginParameter + In/Out:In + 类型:数据结构指针 可空:Y - 意思:自定义输入输出参数 + 意思:输入插件初始化参数 返回值 类型:逻辑型 意思:是否成功执行 备注: *********************************************************************/ -bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Add(XNETHANDLE xhNet, LPCXSTR lpszPluginFile, XPVOID lParam) +bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Add(XNETHANDLE xhNet, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter /* = NULL */) { ModulePlugin_IsErrorOccur = false; @@ -273,15 +326,24 @@ bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Add(XNETHANDLE xhNet, LPCXSTR l ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_EXECTION; return false; } - + //得到初始化函数 if (0 == lua_getglobal(st_LuaCore.pSt_LuaState, "PluginCore_Init")) { ModulePlugin_IsErrorOccur = true; ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPINIT; return false; } + lua_newtable(st_LuaCore.pSt_LuaState); + + lua_pushstring(st_LuaCore.pSt_LuaState, "APIVersion"); + lua_pushstring(st_LuaCore.pSt_LuaState, pSt_PluginParameter->tszAPIVersion); + lua_settable(st_LuaCore.pSt_LuaState, -3); - if (LUA_OK != lua_pcall(st_LuaCore.pSt_LuaState, 0, 1, 0)) + lua_pushstring(st_LuaCore.pSt_LuaState, "XEngineVer"); + lua_pushstring(st_LuaCore.pSt_LuaState, pSt_PluginParameter->tszXEngineVer); + lua_settable(st_LuaCore.pSt_LuaState, -3); + + if (LUA_OK != lua_pcall(st_LuaCore.pSt_LuaState, 1, 1, 0)) { ModulePlugin_IsErrorOccur = true; ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_EXECTION; @@ -293,7 +355,32 @@ bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Add(XNETHANDLE xhNet, LPCXSTR l ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_EXECTION; return false; } - lua_pop(st_LuaCore.pSt_LuaState, -1); + lua_pop(st_LuaCore.pSt_LuaState, 1); + //得到信息函数 + if (0 == lua_getglobal(st_LuaCore.pSt_LuaState, "PluginCore_GetInfo")) + { + ModulePlugin_IsErrorOccur = true; + ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPINIT; + return false; + } + if (LUA_OK != lua_pcall(st_LuaCore.pSt_LuaState, 0, 4, 0)) + { + ModulePlugin_IsErrorOccur = true; + ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_EXECTION; + return false; + } + if (!lua_toboolean(st_LuaCore.pSt_LuaState, -1)) + { + ModulePlugin_IsErrorOccur = true; + ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_EXECTION; + return false; + } + // Lua 栈从右到左是逆序压栈的,所以要从 -4 开始取 + _tcsxcpy(st_LuaCore.tszModuleName, lua_tostring(st_LuaCore.pSt_LuaState, -4)); + _tcsxcpy(st_LuaCore.tszModuleVer, lua_tostring(st_LuaCore.pSt_LuaState, -3)); + _tcsxcpy(st_LuaCore.tszModuleAuthor, lua_tostring(st_LuaCore.pSt_LuaState, -2)); + _tcsxcpy(st_LuaCore.tszModuleDesc, lua_tostring(st_LuaCore.pSt_LuaState, -1)); + lua_pop(st_LuaCore.pSt_LuaState, 4); st_csStl.lock(); stl_MapFrameWork.insert(make_pair(xhNet, st_LuaCore)); diff --git a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.h b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.h index ac56aef7f440304a1c22e98c59b6fbeecd26a70d..5e231cd1e4d2aa3ff7eb202a797efb4cb25a8dd1 100644 --- a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.h +++ b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.h @@ -12,7 +12,11 @@ *********************************************************************/ typedef struct { - XCHAR tszModuleFile[MAX_PATH]; + XCHAR tszModuleFile[XPATH_MAX]; + XCHAR tszModuleName[128]; + XCHAR tszModuleAuthor[128]; + XCHAR tszModuleDesc[128]; + XCHAR tszModuleVer[64]; #if (1 == _XENGINE_BUILD_SWITCH_LUA) lua_State* pSt_LuaState; #endif @@ -25,11 +29,12 @@ public: ~CModulePlugin_LuaCore(); public: bool ModulePlugin_LuaCore_Init(); - bool ModulePlugin_LuaCore_Push(XNETHANDLE* pxhModule, LPCXSTR lpszPluginFile, XPVOID lParam = NULL); + bool ModulePlugin_LuaCore_Push(XNETHANDLE* pxhModule, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); bool ModulePlugin_LuaCore_Exec(XNETHANDLE xhModule, XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer = NULL, int nMsgLen = 0); + bool ModulePlugin_LuaCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); bool ModulePlugin_LuaCore_Destroy(); protected: - bool ModulePlugin_LuaCore_Add(XNETHANDLE xhNet, LPCXSTR lpszPluginFile, XPVOID lParam = NULL); + bool ModulePlugin_LuaCore_Add(XNETHANDLE xhNet, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); private: shared_mutex st_csStl; private: diff --git a/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.def b/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.def index 09acda4dcf57fbcd95b4c935be550bd51dcf28d3..8ebbc9565214de9cc1fe2738b1c43f30bd12a774 100644 --- a/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.def +++ b/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.def @@ -6,15 +6,19 @@ EXPORTS ModulePlugin_LibCore_Init ModulePlugin_LibCore_Push ModulePlugin_LibCore_Exec + ModulePlugin_LibCore_Get ModulePlugin_LibCore_Destroy ModulePlugin_LuaCore_Init ModulePlugin_LuaCore_Push ModulePlugin_LuaCore_Exec + ModulePlugin_LuaCore_Get ModulePlugin_LuaCore_Destroy ModulePlugin_Loader_Init ModulePlugin_Loader_Insert ModulePlugin_Loader_Find + ModulePlugin_Loader_Get + ModulePlugin_Loader_GetForModule ModulePlugin_Loader_Exec ModulePlugin_Loader_Destory \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.vcxproj b/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.vcxproj index 25b81ef3ae2dd5bca99ef449760eb8b74754691f..81d914240d80aa6157dafd3090653372744a366b 100644 --- a/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.vcxproj +++ b/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.vcxproj @@ -99,7 +99,7 @@ true - $(XEngine_Include);$(IncludePath) + $(XEngine_Include);..\XEngine_ModulePlugin;$(IncludePath) $(XEngine_Lib32);$(LibraryPath) diff --git a/XEngine_Source/XEngine_ModulePlugin/pch.cpp b/XEngine_Source/XEngine_ModulePlugin/pch.cpp index 6593af137ae9cd31d5cd26a171f75e27a00818c7..a5bd4264d6a8aab828c366fda78392d49c642411 100644 --- a/XEngine_Source/XEngine_ModulePlugin/pch.cpp +++ b/XEngine_Source/XEngine_ModulePlugin/pch.cpp @@ -37,14 +37,18 @@ extern "C" bool ModulePlugin_LibCore_Init() { return m_PluginLib.ModulePlugin_LibCore_Init(); } -extern "C" bool ModulePlugin_LibCore_Push(XNETHANDLE * pxhModule, LPCXSTR lpszPluginFile, XPVOID lParam) +extern "C" bool ModulePlugin_LibCore_Push(XNETHANDLE * pxhModule, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter) { - return m_PluginLib.ModulePlugin_LibCore_Push(pxhModule, lpszPluginFile, lParam); + return m_PluginLib.ModulePlugin_LibCore_Push(pxhModule, lpszPluginFile, pSt_PluginParameter); } extern "C" bool ModulePlugin_LibCore_Exec(XNETHANDLE xhModule, XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer, int nMsgLen) { return m_PluginLib.ModulePlugin_LibCore_Exec(xhModule, pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen); } +extern "C" bool ModulePlugin_LibCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) +{ + return m_PluginLib.ModulePlugin_LibCore_Get(xhModule, ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); +} extern "C" bool ModulePlugin_LibCore_Destroy() { return m_PluginLib.ModulePlugin_LibCore_Destroy(); @@ -60,14 +64,18 @@ extern "C" bool ModulePlugin_LuaCore_Init() { return m_PluginLua.ModulePlugin_LuaCore_Init(); } -extern "C" bool ModulePlugin_LuaCore_Push(XNETHANDLE * pxhModule, LPCXSTR lpszPluginFile, XPVOID lParam) +extern "C" bool ModulePlugin_LuaCore_Push(XNETHANDLE * pxhModule, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter) { - return m_PluginLua.ModulePlugin_LuaCore_Push(pxhModule, lpszPluginFile, lParam); + return m_PluginLua.ModulePlugin_LuaCore_Push(pxhModule, lpszPluginFile, pSt_PluginParameter); } extern "C" bool ModulePlugin_LuaCore_Exec(XNETHANDLE xhModule, XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer, int nMsgLen) { return m_PluginLua.ModulePlugin_LuaCore_Exec(xhModule, pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen, lpszMsgBufer, nMsgLen); } +extern "C" bool ModulePlugin_LuaCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) +{ + return m_PluginLua.ModulePlugin_LuaCore_Get(xhModule, ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); +} extern "C" bool ModulePlugin_LuaCore_Destroy() { return m_PluginLua.ModulePlugin_LuaCore_Destroy(); @@ -75,14 +83,22 @@ extern "C" bool ModulePlugin_LuaCore_Destroy() /********************************************************************************* * 加载器导出函数定义 * *********************************************************************************/ -extern "C" bool ModulePlugin_Loader_Insert(LPCXSTR lpszModuleMethod, LPCXSTR lpszModuleName, int nType) +extern "C" bool ModulePlugin_Loader_Insert(LPCXSTR lpszModuleName, int nType, XENGINE_PLUGINPARAM* pSt_PluginParameter) { - return m_PluginLoader.ModulePlugin_Loader_Insert(lpszModuleMethod, lpszModuleName, nType); + return m_PluginLoader.ModulePlugin_Loader_Insert(lpszModuleName, nType, pSt_PluginParameter); } extern "C" bool ModulePlugin_Loader_Find(LPCXSTR lpszMethodName, int* pInt_Type) { return m_PluginLoader.ModulePlugin_Loader_Find(lpszMethodName, pInt_Type); } +extern "C" bool ModulePlugin_Loader_Get(LPCXSTR lpszMethodName, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) +{ + return m_PluginLoader.ModulePlugin_Loader_Get(lpszMethodName, ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); +} +extern "C" bool ModulePlugin_Loader_GetForModule(LPCXSTR lpszModuleName, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) +{ + return m_PluginLoader.ModulePlugin_Loader_GetForModule(lpszModuleName, ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); +} extern "C" bool ModulePlugin_Loader_Exec(LPCXSTR lpszMethodName, XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen) { return m_PluginLoader.ModulePlugin_Loader_Exec(lpszMethodName, pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen); diff --git a/XEngine_Source/XEngine_ModulePlugin/pch.h b/XEngine_Source/XEngine_ModulePlugin/pch.h index d315a09a481b16e3d4c67280d14c3eece0cadff0..bbc0e4a0f92a828a1231f24bbe88e2d00d5392a7 100644 --- a/XEngine_Source/XEngine_ModulePlugin/pch.h +++ b/XEngine_Source/XEngine_ModulePlugin/pch.h @@ -31,8 +31,10 @@ using namespace std; #include #include +#include #include #include +#include "../XEngine_UserProtocol.h" #include "ModulePlugin_Define.h" #include "ModulePlugin_Error.h" /******************************************************************** @@ -49,6 +51,11 @@ using namespace std; extern bool ModulePlugin_IsErrorOccur; extern XLONG ModulePlugin_dwErrorCode; + #ifdef _MSC_BUILD #pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib") + +#define XFreeModule FreeLibrary +#else +#define XFreeModule dlclose #endif \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleProtocol/Makefile b/XEngine_Source/XEngine_ModuleProtocol/Makefile index 38bae13e7061a1bc799d81fe26701f4f1a307420..8fc6ffaa130a2ae54cce4274a7ff7b4540bc8748 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/Makefile +++ b/XEngine_Source/XEngine_ModuleProtocol/Makefile @@ -1,11 +1,7 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ -I ../XEngine_Depend/XEngine_Module/jsoncpp LOADSO = -L ../XEngine_Depend/XEngine_Module/jsoncpp LIB = -lXEngine_BaseLib -lNetHelp_XSocket -lXEngine_SystemApi -lNetHelp_APIAddr -ljsoncpp @@ -13,31 +9,29 @@ LIBEX = OBJECTS = ModuleProtocol_Packet.o ModuleProtocol_Parse.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -46,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp index 5a5e74fbf9f51cdee68c850b7c3e85d20050ff57..3f0cc364e00daac477ad4498dcf45522c69a37bc 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp +++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp @@ -1321,9 +1321,9 @@ bool CModuleProtocol_Packet::ModuleProtocol_Packet_HardWare(XCHAR* ptszHWInfo, i } int nDiskNumber = 0; XCHAR** pptszRootName; - XCHAR tszOSName[MAX_PATH]; - XCHAR tszOSVersion[MAX_PATH]; - XCHAR tszOSBuild[MAX_PATH]; + XCHAR tszOSName[XPATH_MAX]; + XCHAR tszOSVersion[XPATH_MAX]; + XCHAR tszOSBuild[XPATH_MAX]; XLONG nOSPro = 0; XCHAR tszOSInfo[2048]; SYSTEMAPI_DISK_INFOMATION st_DiskInfo; @@ -1348,11 +1348,11 @@ bool CModuleProtocol_Packet::ModuleProtocol_Packet_HardWare(XCHAR* ptszHWInfo, i } BaseLib_Memory_Free((XPPPMEM)&pptszRootName, nDiskNumber); - XCHAR tszDriveStr[MAX_PATH]; - memset(tszDriveStr, '\0', MAX_PATH); + XCHAR tszDriveStr[XPATH_MAX]; + memset(tszDriveStr, '\0', XPATH_MAX); #ifdef _MSC_BUILD - GetLogicalDriveStringsA(MAX_PATH, tszDriveStr); + GetLogicalDriveStringsA(XPATH_MAX, tszDriveStr); #else LPCXSTR lpszDir = _X("/"); strcpy(tszDriveStr, lpszDir); @@ -1472,24 +1472,24 @@ bool CModuleProtocol_Packet::ModuleProtocol_Packet_SoftWare(XCHAR* ptszSWInfo, i } int nProcessCount; XLONG nOSProcessor; - XCHAR tszOSBuild[MAX_PATH]; - XCHAR tszOSVersion[MAX_PATH]; - XCHAR tszOSInfo[MAX_PATH]; - XCHAR tszUPTime[MAX_PATH]; - XCHAR tszOSUser[MAX_PATH]; - XCHAR tszServicePacket[MAX_PATH]; + XCHAR tszOSBuild[XPATH_MAX]; + XCHAR tszOSVersion[XPATH_MAX]; + XCHAR tszOSInfo[XPATH_MAX]; + XCHAR tszUPTime[XPATH_MAX]; + XCHAR tszOSUser[XPATH_MAX]; + XCHAR tszServicePacket[XPATH_MAX]; XENGINE_LIBTIME st_LibTimer; - memset(tszOSBuild, '\0', MAX_PATH); - memset(tszOSVersion, '\0', MAX_PATH); - memset(tszOSInfo, '\0', MAX_PATH); - memset(tszUPTime, '\0', MAX_PATH); - memset(tszOSUser, '\0', MAX_PATH); - memset(tszServicePacket, '\0', MAX_PATH); + memset(tszOSBuild, '\0', XPATH_MAX); + memset(tszOSVersion, '\0', XPATH_MAX); + memset(tszOSInfo, '\0', XPATH_MAX); + memset(tszUPTime, '\0', XPATH_MAX); + memset(tszOSUser, '\0', XPATH_MAX); + memset(tszServicePacket, '\0', XPATH_MAX); memset(&st_LibTimer, '\0', sizeof(XENGINE_LIBTIME)); #ifdef _MSC_BUILD - XLONG dwMaxSize = MAX_PATH; + XLONG dwMaxSize = XPATH_MAX; if (!GetComputerNameA(tszOSUser, &dwMaxSize)) { ModuleProtocol_IsErrorOccur = true; diff --git a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h index fbbd1b8f9edd5c63fb7ad31c73039b4244faf26f..9e78d493ef71082c30aee3c597df8b3de4b772d4 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h +++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h @@ -12,7 +12,7 @@ *********************************************************************/ typedef struct { - XCHAR tszUsername[MAX_PATH]; + XCHAR tszUsername[XPATH_MAX]; XCHAR tszClientAddr[128]; }P2XPPROTOCOL_LANPACKET; diff --git a/XEngine_Source/XEngine_ModuleSystem/Makefile b/XEngine_Source/XEngine_ModuleSystem/Makefile index 16002b3ce52dc7a3b29a11dc2f71f9a7517c706a..f2b808a659be1890c123fe8a336f9f94633dfebf 100644 --- a/XEngine_Source/XEngine_ModuleSystem/Makefile +++ b/XEngine_Source/XEngine_ModuleSystem/Makefile @@ -1,11 +1,7 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ LOADSO = LIB = -lXEngine_BaseLib -lXEngine_SystemApi @@ -13,31 +9,29 @@ LIBEX = OBJECTS = ModuleSystem_API.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -46,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/XEngine_ModuleSystem/ModuleSystem_API/ModuleSystem_API.cpp b/XEngine_Source/XEngine_ModuleSystem/ModuleSystem_API/ModuleSystem_API.cpp index b19e91af6e457d7c2e006fe613388243545ed3cd..1377999fd353929673abd1ade434a654fab5d00b 100644 --- a/XEngine_Source/XEngine_ModuleSystem/ModuleSystem_API/ModuleSystem_API.cpp +++ b/XEngine_Source/XEngine_ModuleSystem/ModuleSystem_API/ModuleSystem_API.cpp @@ -62,14 +62,14 @@ bool CModuleSystem_API::ModuleSystem_API_AutoStart(bool bIsAuto /* = true */) return false; } - XCHAR tszFilePath[MAX_PATH]; - XCHAR tszFileName[MAX_PATH]; + XCHAR tszFilePath[XPATH_MAX]; + XCHAR tszFileName[XPATH_MAX]; - memset(tszFilePath, '\0', MAX_PATH); - memset(tszFileName, '\0', MAX_PATH); + memset(tszFilePath, '\0', XPATH_MAX); + memset(tszFileName, '\0', XPATH_MAX); - GetCurrentDirectoryA(MAX_PATH, tszFilePath); - GetModuleFileNameA(NULL, tszFileName, MAX_PATH); + GetCurrentDirectoryA(XPATH_MAX, tszFilePath); + GetModuleFileNameA(NULL, tszFileName, XPATH_MAX); //目标 pSt_ILink->SetPath(tszFileName); //工作目录 @@ -80,8 +80,8 @@ bool CModuleSystem_API::ModuleSystem_API_AutoStart(bool bIsAuto /* = true */) pSt_ILink->SetShowCmd(SW_SHOW); //保存快捷方式到指定目录下 - XCHAR tszAFile[MAX_PATH]; - WCHAR tszUFile[MAX_PATH]; + XCHAR tszAFile[XPATH_MAX]; + WCHAR tszUFile[XPATH_MAX]; memset(tszAFile, '\0', sizeof(tszAFile)); memset(tszUFile, '\0', sizeof(tszUFile)); @@ -108,7 +108,7 @@ bool CModuleSystem_API::ModuleSystem_API_AutoStart(bool bIsAuto /* = true */) } else { - XCHAR tszAFile[MAX_PATH]; + XCHAR tszAFile[XPATH_MAX]; memset(tszAFile, '\0', sizeof(tszAFile)); if (S_OK != SHGetFolderPathA(NULL, CSIDL_STARTUP, NULL, 0, tszAFile)) @@ -127,7 +127,7 @@ bool CModuleSystem_API::ModuleSystem_API_AutoStart(bool bIsAuto /* = true */) if (0 != _xtaccess(lpszStartStr, F_OK)) { XCHAR tszMsgBuffer[2048]; - XCHAR tszFileDir[MAX_PATH]; + XCHAR tszFileDir[XPATH_MAX]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); memset(tszFileDir, '\0', sizeof(tszFileDir)); @@ -155,8 +155,8 @@ bool CModuleSystem_API::ModuleSystem_API_AutoStart(bool bIsAuto /* = true */) return false; } } - XCHAR tszServiceStr[MAX_PATH]; - memset(tszServiceStr, '\0', MAX_PATH); + XCHAR tszServiceStr[XPATH_MAX]; + memset(tszServiceStr, '\0', XPATH_MAX); _xstprintf(tszServiceStr, _X("sudo systemctl enable xdeamon")); if (-1 == system(tszServiceStr)) @@ -168,8 +168,8 @@ bool CModuleSystem_API::ModuleSystem_API_AutoStart(bool bIsAuto /* = true */) } else { - XCHAR tszServiceStr[MAX_PATH]; - memset(tszServiceStr, '\0', MAX_PATH); + XCHAR tszServiceStr[XPATH_MAX]; + memset(tszServiceStr, '\0', XPATH_MAX); _xstprintf(tszServiceStr, _X("systemctl disable xdeamon")); if (-1 == system(tszServiceStr)) diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/BMIndex_Define.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/BMIndex_Define.h index bf604200089d15ba14d7463f7fb7935504b03f83..303bfafc131fd04065ef60c79805f946f76f2970 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/BMIndex_Define.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/BMIndex_Define.h @@ -20,17 +20,17 @@ extern "C" XLONG PluginCore_GetLastError(); /******************************************************************** 函数名称:PluginCore_Init 函数功能:初始化插件模块 - 参数.一:lParam - In/Out:In/Out - 类型:无类型指针 + 参数.一:pSt_PluginParameter + In/Out:In + 类型:数据结构指针 可空:N - 意思:自定义参数 + 意思:输入插件初始化信息 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" bool PluginCore_Init(XPVOID lParam = NULL); +extern "C" bool PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter); /******************************************************************** 函数名称:PluginCore_UnInit 函数功能:卸载插件 @@ -41,6 +41,35 @@ extern "C" bool PluginCore_Init(XPVOID lParam = NULL); *********************************************************************/ extern "C" void PluginCore_UnInit(); /******************************************************************** +函数名称:PluginCore_GetInfo +函数功能:获取插件基础信息函数 + 参数.一:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.二:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.三:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.四:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); +/******************************************************************** 函数名称:PluginCore_Call 函数功能:调用插件 返回值 diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Makefile b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Makefile index 567c61c4b8b45af8d3f2bad9e47eaa6efb4e312c..756b856e54250299c6f538c60020b540f7d660f1 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Makefile +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Makefile @@ -1,11 +1,7 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ -I ../../XEngine_Depend/XEngine_Module/jsoncpp LOADSO = -L ../../XEngine_Depend/XEngine_Module/jsoncpp LIB = -lXEngine_BaseLib -ljsoncpp @@ -13,31 +9,30 @@ LIBEX = OBJECTS = Plugin_BMIndex.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif + ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -46,7 +41,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/ModulePlugin_BMIndex.def b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/ModulePlugin_BMIndex.def index 78dedee2f85146d24ce86f934777197f8ada61dd..c3e2b07096bf630ade6393cab65263e91a487805 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/ModulePlugin_BMIndex.def +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/ModulePlugin_BMIndex.def @@ -5,4 +5,5 @@ EXPORTS PluginCore_Init PluginCore_UnInit + PluginCore_GetInfo PluginCore_Call \ No newline at end of file diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Plugin_BMIndex/Plugin_BMIndex.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Plugin_BMIndex/Plugin_BMIndex.cpp index accc630da53960af54b5c61efdaf46b3dd9477d6..4d40c692bd32a16aa3f0f4fc32e988358c39b1ae 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Plugin_BMIndex/Plugin_BMIndex.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Plugin_BMIndex/Plugin_BMIndex.cpp @@ -23,20 +23,19 @@ CPlugin_BMIndex::~CPlugin_BMIndex() /******************************************************************** 函数名称:PluginCore_Init 函数功能:初始化插件模块 - 参数.一:lParam - In/Out:In/Out - 类型:无类型指针 + 参数.一:pSt_PluginParameter + In/Out:In + 类型:数据结构指针 可空:N - 意思:自定义参数 + 意思:输入插件初始化信息 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CPlugin_BMIndex::PluginCore_Init(XPVOID lParam) +bool CPlugin_BMIndex::PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter) { BMIndex_IsErrorOccur = false; - return true; } /******************************************************************** @@ -52,6 +51,43 @@ void CPlugin_BMIndex::PluginCore_UnInit() BMIndex_IsErrorOccur = false; } /******************************************************************** +函数名称:PluginCore_GetInfo +函数功能:获取插件基础信息函数 + 参数.一:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.二:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.三:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.四:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +void CPlugin_BMIndex::PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) +{ + BMIndex_IsErrorOccur = false; + + _tcsxcpy(ptszPluginName, "bmindex"); + _tcsxcpy(ptszPluginVersion, "1.0.0.1001"); + _tcsxcpy(ptszPluginAuthor, "xengine"); + _tcsxcpy(ptszPluginDesc, "null"); +} +/******************************************************************** 函数名称:PluginCore_Call 函数功能:调用插件 返回值 diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Plugin_BMIndex/Plugin_BMIndex.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Plugin_BMIndex/Plugin_BMIndex.h index 8edef4047ead4cb36f5cd569714b5ad795f77879..cd27d6becf7dff1b557e25ad06d814d5d9051148 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Plugin_BMIndex/Plugin_BMIndex.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Plugin_BMIndex/Plugin_BMIndex.h @@ -17,8 +17,9 @@ public: CPlugin_BMIndex(); ~CPlugin_BMIndex(); public: - bool PluginCore_Init(XPVOID lParam); + bool PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter); void PluginCore_UnInit(); + void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); bool PluginCore_Call(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen); protected: bool Plugin_Timezone_BMIndex(LPCXSTR lpszHigh, LPCXSTR lpszWeight, XCHAR* ptszMsgBufer, int* pInt_Len); diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/pch.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/pch.cpp index 95aa4545753756820f48317b2b07f6a505913ba8..1aeceb58c5cba270a64d04ddfae2dbabc4695af0 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/pch.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/pch.cpp @@ -25,14 +25,18 @@ extern "C" XLONG PluginCore_GetLastError() /********************************************************************************* * 导出函数定义 * *********************************************************************************/ -extern "C" bool PluginCore_Init(XPVOID lParam) +extern "C" bool PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter) { - return m_PluginBMIndex.PluginCore_Init(lParam); + return m_PluginBMIndex.PluginCore_Init(pSt_PluginParameter); } extern "C" void PluginCore_UnInit() { m_PluginBMIndex.PluginCore_UnInit(); } +extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) +{ + return m_PluginBMIndex.PluginCore_GetInfo(ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); +} extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen) { return m_PluginBMIndex.PluginCore_Call(pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen, lpszMsgBuffer, nMsgLen); diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/pch.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/pch.h index cde822e916c7247c08fb2ae0077056544b07f0dc..bb8b5ac24e77dc487e11b842d1ad4ea8629fd938 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/pch.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/pch.h @@ -9,6 +9,7 @@ #ifdef _MSC_BUILD // 添加要在此处预编译的标头 +#define _CRT_SECURE_NO_WARNINGS #include "framework.h" #include #endif // _MSC_BUILD @@ -21,8 +22,10 @@ #include #include #include +#include #include #include +#include "../../XEngine_UserProtocol.h" #include "BMIndex_Define.h" #include "BMIndex_Error.h" using namespace std; diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Makefile b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Makefile index 663ba4ea5472b75775717f29c5c631140ac4fdcf..08c627065b0f20303e311a4d7ff22ce31cb12607 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Makefile +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Makefile @@ -1,11 +1,7 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ -I ../../XEngine_Depend/XEngine_Module/jsoncpp LOADSO = -L ../../XEngine_Depend/XEngine_Module/jsoncpp LIB = -lXEngine_BaseLib -ljsoncpp @@ -13,31 +9,30 @@ LIBEX = OBJECTS = Plugin_Meter.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif + ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -46,7 +41,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.def b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.def index 78dedee2f85146d24ce86f934777197f8ada61dd..c3e2b07096bf630ade6393cab65263e91a487805 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.def +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.def @@ -5,4 +5,5 @@ EXPORTS PluginCore_Init PluginCore_UnInit + PluginCore_GetInfo PluginCore_Call \ No newline at end of file diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/PluginMeter_Define.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/PluginMeter_Define.h index ef80d1bf82744de0223f32ae5ed23af77f40cd6d..36b849d3d7d7b5a3c2ae6c9c690a968a7e2251b9 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/PluginMeter_Define.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/PluginMeter_Define.h @@ -83,7 +83,7 @@ extern "C" XLONG PluginCore_GetLastError(); 意思:是否成功 备注: *********************************************************************/ -extern "C" bool PluginCore_Init(XPVOID lParam = NULL); +extern "C" bool PluginCore_Init(XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); /******************************************************************** 函数名称:PluginCore_UnInit 函数功能:卸载插件 @@ -94,6 +94,35 @@ extern "C" bool PluginCore_Init(XPVOID lParam = NULL); *********************************************************************/ extern "C" void PluginCore_UnInit(); /******************************************************************** +函数名称:PluginCore_GetInfo +函数功能:获取插件基础信息函数 + 参数.一:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.二:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.三:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.四:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); +/******************************************************************** 函数名称:PluginCore_Call 函数功能:调用插件 返回值 diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.cpp index d1de5b8d74e4a0a120032392705782038783198c..f5e8aafe6dd8b78d5473a1102358c965b3f186f5 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.cpp @@ -23,17 +23,17 @@ CPlugin_Meter::~CPlugin_Meter() /******************************************************************** 函数名称:PluginCore_Init 函数功能:初始化插件模块 - 参数.一:lParam - In/Out:In/Out - 类型:无类型指针 + 参数.一:pSt_PluginParameter + In/Out:In + 类型:数据结构指针 可空:N - 意思:自定义参数 + 意思:输入插件初始化信息 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CPlugin_Meter::PluginCore_Init(XPVOID lParam) +bool CPlugin_Meter::PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter) { Meter_IsErrorOccur = false; @@ -52,6 +52,43 @@ void CPlugin_Meter::PluginCore_UnInit() Meter_IsErrorOccur = false; } /******************************************************************** +函数名称:PluginCore_GetInfo +函数功能:获取插件基础信息函数 + 参数.一:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.二:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.三:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.四:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +void CPlugin_Meter::PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) +{ + Meter_IsErrorOccur = false; + + _tcsxcpy(ptszPluginName, "meter"); + _tcsxcpy(ptszPluginVersion, "1.0.0.1001"); + _tcsxcpy(ptszPluginAuthor, "xengine"); + _tcsxcpy(ptszPluginDesc, "null"); +} +/******************************************************************** 函数名称:PluginCore_Call 函数功能:调用插件 返回值 diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.h index 99cb64cb4ba25e7776798b03f16658180adaf0d9..cc60c973c1df1591da803db9f7fae6502ca2f3fd 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.h @@ -17,8 +17,9 @@ public: CPlugin_Meter(); ~CPlugin_Meter(); public: - bool PluginCore_Init(XPVOID lParam); + bool PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter); void PluginCore_UnInit(); + void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); bool PluginCore_Call(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen); protected: bool Plugin_Meter_LengthConvert(int nSource, __int64x nValue, Json::Value *pSt_JsonObject); diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.cpp index ffe1cc0ca1e10645404ce515324db1363eba5552..3cd3db658f5b8561a5ad50a64fb0e4785ad9516a 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.cpp @@ -25,14 +25,18 @@ extern "C" XLONG PluginCore_GetLastError() /********************************************************************************* * 导出函数定义 * *********************************************************************************/ -extern "C" bool PluginCore_Init(XPVOID lParam) +extern "C" bool PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter) { - return m_PluginMeter.PluginCore_Init(lParam); + return m_PluginMeter.PluginCore_Init(pSt_PluginParameter); } extern "C" void PluginCore_UnInit() { m_PluginMeter.PluginCore_UnInit(); } +extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) +{ + return m_PluginMeter.PluginCore_GetInfo(ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); +} extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen) { return m_PluginMeter.PluginCore_Call(pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen, lpszMsgBuffer, nMsgLen); diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.h index a246de063e243430cb63b4801766449bbdb41794..023b84330a59b118d4b8f6eb5d734e9b3e4b2451 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.h @@ -9,6 +9,7 @@ #ifdef _MSC_BUILD // 添加要在此处预编译的标头 +#define _CRT_SECURE_NO_WARNINGS #include "framework.h" #include #endif // _MSC_BUILD @@ -20,8 +21,10 @@ #include #include #include +#include #include #include +#include "../../XEngine_UserProtocol.h" #include "PluginMeter_Define.h" #include "PluginMeter_Error.h" /******************************************************************** @@ -38,7 +41,6 @@ extern bool Meter_IsErrorOccur; extern XLONG Meter_dwErrorCode; - #ifdef _MSC_BUILD #pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib") #ifdef _DEBUG diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Makefile b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Makefile index c2924ba6ed195413287815ad4bef18e39866219e..0901e4b9e6023417a8dd72ab0c30432b08f29e0c 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Makefile +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Makefile @@ -1,11 +1,7 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ -I ../../XEngine_Depend/XEngine_Module/jsoncpp LOADSO = -L ../../XEngine_Depend/XEngine_Module/jsoncpp LIB = -lXEngine_BaseLib -ljsoncpp @@ -13,31 +9,29 @@ LIBEX = OBJECTS = Plugin_Password.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -46,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/ModulePlugin_Password.def b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/ModulePlugin_Password.def index 78dedee2f85146d24ce86f934777197f8ada61dd..c3e2b07096bf630ade6393cab65263e91a487805 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/ModulePlugin_Password.def +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/ModulePlugin_Password.def @@ -5,4 +5,5 @@ EXPORTS PluginCore_Init PluginCore_UnInit + PluginCore_GetInfo PluginCore_Call \ No newline at end of file diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/PluginPass_Define.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/PluginPass_Define.h index 0226572a11cb1d163ad01198e923115cedd17650..2ab9815cb8d498f8dacea321a71f143fa9d37be5 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/PluginPass_Define.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/PluginPass_Define.h @@ -20,17 +20,17 @@ extern "C" XLONG PluginCore_GetLastError(); /******************************************************************** 函数名称:PluginCore_Init 函数功能:初始化插件模块 - 参数.一:lParam - In/Out:In/Out - 类型:无类型指针 + 参数.一:pSt_PluginParameter + In/Out:In + 类型:数据结构指针 可空:N - 意思:自定义参数 + 意思:输入插件初始化信息 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" bool PluginCore_Init(XPVOID lParam = NULL); +extern "C" bool PluginCore_Init(XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); /******************************************************************** 函数名称:PluginCore_UnInit 函数功能:卸载插件 @@ -41,6 +41,35 @@ extern "C" bool PluginCore_Init(XPVOID lParam = NULL); *********************************************************************/ extern "C" void PluginCore_UnInit(); /******************************************************************** +函数名称:PluginCore_GetInfo +函数功能:获取插件基础信息函数 + 参数.一:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.二:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.三:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.四:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); +/******************************************************************** 函数名称:PluginCore_Call 函数功能:调用插件 返回值 diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.cpp index 8d728dc763d304304674fce64b3b3298e62ef3e4..028989a9f4a4eb6f57d31e3c9298beb89a4e3b19 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.cpp @@ -23,17 +23,17 @@ CPlugin_Password::~CPlugin_Password() /******************************************************************** 函数名称:PluginCore_Init 函数功能:初始化插件模块 - 参数.一:lParam - In/Out:In/Out - 类型:无类型指针 + 参数.一:pSt_PluginParameter + In/Out:In + 类型:数据结构指针 可空:N - 意思:自定义参数 + 意思:输入插件初始化信息 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CPlugin_Password::PluginCore_Init(XPVOID lParam) +bool CPlugin_Password::PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter) { Pass_IsErrorOccur = false; @@ -52,6 +52,43 @@ void CPlugin_Password::PluginCore_UnInit() Pass_IsErrorOccur = false; } /******************************************************************** +函数名称:PluginCore_GetInfo +函数功能:获取插件基础信息函数 + 参数.一:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.二:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.三:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.四:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +void CPlugin_Password::PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) +{ + Pass_IsErrorOccur = false; + + _tcsxcpy(ptszPluginName, "pass"); + _tcsxcpy(ptszPluginVersion, "1.0.0.1001"); + _tcsxcpy(ptszPluginAuthor, "xengine"); + _tcsxcpy(ptszPluginDesc, "Password Generator Plugin for XEngine API Service"); +} +/******************************************************************** 函数名称:PluginCore_Call 函数功能:调用插件 返回值 @@ -72,7 +109,7 @@ bool CPlugin_Password::PluginCore_Call(XCHAR*** pppHDRList, int nListCount, int* XCHAR tszKeyName[128]; XCHAR tszParamType[128]; XCHAR tszParamLength[128]; - XCHAR tszPassword[MAX_PATH]; + XCHAR tszPassword[XPATH_MAX]; Json::Value st_JsonRoot; Json::Value st_JsonObject; Json::StreamWriterBuilder st_JsonBuilder; diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.h index bf79a251e25d457bdaa35d096a763ad256e8ad7d..b717fc53002f2e741b4b4e7d99625f9911e716bd 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.h @@ -17,8 +17,9 @@ public: CPlugin_Password(); ~CPlugin_Password(); public: - bool PluginCore_Init(XPVOID lParam); + bool PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter); void PluginCore_UnInit(); + void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); bool PluginCore_Call(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen); protected: bool Plugin_Password_Creator(LPCXSTR lpszPassType, LPCXSTR lpszLength, XCHAR* ptszPassStr); diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/pch.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/pch.cpp index 9ca32e60311ce790c3204d0aa876bd645348444f..b62a0e52cca666dd7d1de8bf4ae1ca726b8aaf1d 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/pch.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/pch.cpp @@ -25,14 +25,18 @@ extern "C" XLONG PluginCore_GetLastError() /********************************************************************************* * 导出函数定义 * *********************************************************************************/ -extern "C" bool PluginCore_Init(XPVOID lParam) +extern "C" bool PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter) { - return m_PluginPass.PluginCore_Init(lParam); + return m_PluginPass.PluginCore_Init(pSt_PluginParameter); } extern "C" void PluginCore_UnInit() { m_PluginPass.PluginCore_UnInit(); } +extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) +{ + return m_PluginPass.PluginCore_GetInfo(ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); +} extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen) { return m_PluginPass.PluginCore_Call(pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen, lpszMsgBuffer, nMsgLen); diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/pch.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/pch.h index d1a786e7c1a8a776d3c76849d55df70094598c5f..4eb6ab8ee3610934e31a634f5a58a3e53e10fa1c 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/pch.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/pch.h @@ -17,8 +17,10 @@ #include #include #include +#include #include #include +#include "../../XEngine_UserProtocol.h" #include "PluginPass_Define.h" #include "PluginPass_Error.h" using namespace std; diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Makefile b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Makefile index 24bec00a4468c79b133c0ec649e696e1721e9f92..d962111b6d87017aca559a5b33213e4b37682ed7 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Makefile +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Makefile @@ -1,11 +1,7 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ -I ../../XEngine_Depend/XEngine_Module/jsoncpp LOADSO = -L ../../XEngine_Depend/XEngine_Module/jsoncpp LIB = -lXEngine_BaseLib -ljsoncpp @@ -13,31 +9,29 @@ LIBEX = OBJECTS = Plugin_Timezone.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -46,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/ModulePlugin_Timezone.def b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/ModulePlugin_Timezone.def index 78dedee2f85146d24ce86f934777197f8ada61dd..c3e2b07096bf630ade6393cab65263e91a487805 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/ModulePlugin_Timezone.def +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/ModulePlugin_Timezone.def @@ -5,4 +5,5 @@ EXPORTS PluginCore_Init PluginCore_UnInit + PluginCore_GetInfo PluginCore_Call \ No newline at end of file diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Plugin_Timezone/Plugin_Timezone.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Plugin_Timezone/Plugin_Timezone.cpp index 6da661efe97cb3451d2962aaa73ba82bff2eb9ee..cc3548dcf256030b9625965a372b3d7daadad893 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Plugin_Timezone/Plugin_Timezone.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Plugin_Timezone/Plugin_Timezone.cpp @@ -23,17 +23,17 @@ CPlugin_Timezone::~CPlugin_Timezone() /******************************************************************** 函数名称:PluginCore_Init 函数功能:初始化插件模块 - 参数.一:lParam - In/Out:In/Out - 类型:无类型指针 + 参数.一:pSt_PluginParameter + In/Out:In + 类型:数据结构指针 可空:N - 意思:自定义参数 + 意思:输入插件初始化信息 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CPlugin_Timezone::PluginCore_Init(XPVOID lParam) +bool CPlugin_Timezone::PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter) { Timezone_IsErrorOccur = false; @@ -514,6 +514,43 @@ void CPlugin_Timezone::PluginCore_UnInit() stl_MapTimezone.clear(); } /******************************************************************** +函数名称:PluginCore_GetInfo +函数功能:获取插件基础信息函数 + 参数.一:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.二:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.三:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.四:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +void CPlugin_Timezone::PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) +{ + Timezone_IsErrorOccur = false; + + _tcsxcpy(ptszPluginName, "timezone"); + _tcsxcpy(ptszPluginVersion, "1.0.0.1001"); + _tcsxcpy(ptszPluginAuthor, "xengine"); + _tcsxcpy(ptszPluginDesc, "get timezone info for XEngine API Service"); +} +/******************************************************************** 函数名称:PluginCore_Call 函数功能:调用插件 返回值 diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Plugin_Timezone/Plugin_Timezone.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Plugin_Timezone/Plugin_Timezone.h index 98c975ec84638acb0ca3c5c2ee889ae7a8a32a96..5ccf34d85fc1972b76479ab5ed665548cbe49608 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Plugin_Timezone/Plugin_Timezone.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Plugin_Timezone/Plugin_Timezone.h @@ -13,7 +13,7 @@ typedef struct { XENGINE_LIBTIME st_TimeZone; - XCHAR tszTimeCountry[MAX_PATH]; + XCHAR tszTimeCountry[XPATH_MAX]; }MODULEPLUGIN_TIMEZONE; @@ -23,8 +23,9 @@ public: CPlugin_Timezone(); ~CPlugin_Timezone(); public: - bool PluginCore_Init(XPVOID lParam); + bool PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter); void PluginCore_UnInit(); + void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); bool PluginCore_Call(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen); protected: bool Plugin_Timezone_Count(XCHAR* ptszMsgBufer, int* pInt_Len); diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Timezone_Define.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Timezone_Define.h index bf604200089d15ba14d7463f7fb7935504b03f83..2da5000f6b8af205699bc8378007d3a1cc951dd8 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Timezone_Define.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Timezone_Define.h @@ -20,17 +20,17 @@ extern "C" XLONG PluginCore_GetLastError(); /******************************************************************** 函数名称:PluginCore_Init 函数功能:初始化插件模块 - 参数.一:lParam - In/Out:In/Out - 类型:无类型指针 + 参数.一:pSt_PluginParameter + In/Out:In + 类型:数据结构指针 可空:N - 意思:自定义参数 + 意思:输入插件初始化信息 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" bool PluginCore_Init(XPVOID lParam = NULL); +extern "C" bool PluginCore_Init(XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); /******************************************************************** 函数名称:PluginCore_UnInit 函数功能:卸载插件 @@ -41,6 +41,35 @@ extern "C" bool PluginCore_Init(XPVOID lParam = NULL); *********************************************************************/ extern "C" void PluginCore_UnInit(); /******************************************************************** +函数名称:PluginCore_GetInfo +函数功能:获取插件基础信息函数 + 参数.一:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.二:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.三:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.四:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); +/******************************************************************** 函数名称:PluginCore_Call 函数功能:调用插件 返回值 diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/pch.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/pch.cpp index 555197ccf9573353cefa20ee91235ae0c5b87721..21c525230c6a8bd0c47a9fe10a0df48bfa416899 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/pch.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/pch.cpp @@ -25,14 +25,18 @@ extern "C" XLONG PluginCore_GetLastError() /********************************************************************************* * 导出函数定义 * *********************************************************************************/ -extern "C" bool PluginCore_Init(XPVOID lParam) +extern "C" bool PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter) { - return m_PluginTimes.PluginCore_Init(lParam); + return m_PluginTimes.PluginCore_Init(pSt_PluginParameter); } extern "C" void PluginCore_UnInit() { m_PluginTimes.PluginCore_UnInit(); } +extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) +{ + return m_PluginTimes.PluginCore_GetInfo(ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); +} extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen) { return m_PluginTimes.PluginCore_Call(pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen, lpszMsgBuffer, nMsgLen); diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/pch.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/pch.h index 03bbb2007335b7cb1ea932d0a9b8933089ca6059..e8af4870dbf55d1869a2e7299da11ebc36676c13 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/pch.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/pch.h @@ -21,8 +21,10 @@ #include #include #include +#include #include #include +#include "../../XEngine_UserProtocol.h" #include "Timezone_Define.h" #include "Timezone_Error.h" using namespace std; diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Makefile b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Makefile index 886a283aeb320372c52811f1002a1c40c10c7b0a..f0c8479008cb5401ab864614e4db2da38409747f 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Makefile +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Makefile @@ -1,11 +1,7 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ -I ../../XEngine_Depend/XEngine_Module/jsoncpp LOADSO = -L ../../XEngine_Depend/XEngine_Module/jsoncpp LIB = -lXEngine_BaseLib -lXEngine_Algorithm -ljsoncpp @@ -13,31 +9,29 @@ LIBEX = OBJECTS = Plugin_Zodiac.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -46,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/ModulePlugin_Zodiac.def b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/ModulePlugin_Zodiac.def index 78dedee2f85146d24ce86f934777197f8ada61dd..c3e2b07096bf630ade6393cab65263e91a487805 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/ModulePlugin_Zodiac.def +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/ModulePlugin_Zodiac.def @@ -5,4 +5,5 @@ EXPORTS PluginCore_Init PluginCore_UnInit + PluginCore_GetInfo PluginCore_Call \ No newline at end of file diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/PluginZodiac_Define.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/PluginZodiac_Define.h index 91ce91c79b22b2b5510a99e1c7b76ac5405cf741..38401837859d31f1f66a59b7b9320bced51ebfe1 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/PluginZodiac_Define.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/PluginZodiac_Define.h @@ -20,17 +20,17 @@ extern "C" XLONG PluginCore_GetLastError(); /******************************************************************** 函数名称:PluginCore_Init 函数功能:初始化插件模块 - 参数.一:lParam - In/Out:In/Out - 类型:无类型指针 + 参数.一:pSt_PluginParameter + In/Out:In + 类型:数据结构指针 可空:N - 意思:自定义参数 + 意思:输入插件初始化信息 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" bool PluginCore_Init(XPVOID lParam = NULL); +extern "C" bool PluginCore_Init(XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); /******************************************************************** 函数名称:PluginCore_UnInit 函数功能:卸载插件 @@ -41,6 +41,35 @@ extern "C" bool PluginCore_Init(XPVOID lParam = NULL); *********************************************************************/ extern "C" void PluginCore_UnInit(); /******************************************************************** +函数名称:PluginCore_GetInfo +函数功能:获取插件基础信息函数 + 参数.一:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.二:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.三:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.四:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); +/******************************************************************** 函数名称:PluginCore_Call 函数功能:调用插件 返回值 diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Plugin_Zodiac/Plugin_Zodiac.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Plugin_Zodiac/Plugin_Zodiac.cpp index a9b9ab57a3325a8a85417f8db36ce49799147cbd..09e362973decec468ed0221ff011516fae9c12ab 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Plugin_Zodiac/Plugin_Zodiac.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Plugin_Zodiac/Plugin_Zodiac.cpp @@ -35,17 +35,17 @@ CPlugin_Zodiac::~CPlugin_Zodiac() /******************************************************************** 函数名称:PluginCore_Init 函数功能:初始化插件模块 - 参数.一:lParam - In/Out:In/Out - 类型:无类型指针 + 参数.一:pSt_PluginParameter + In/Out:In + 类型:数据结构指针 可空:N - 意思:自定义参数 + 意思:输入插件初始化信息 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CPlugin_Zodiac::PluginCore_Init(XPVOID lParam) +bool CPlugin_Zodiac::PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter) { Zodiac_IsErrorOccur = false; @@ -64,6 +64,43 @@ void CPlugin_Zodiac::PluginCore_UnInit() Zodiac_IsErrorOccur = false; } /******************************************************************** +函数名称:PluginCore_GetInfo +函数功能:获取插件基础信息函数 + 参数.一:ptszPluginName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:处理名称 + 参数.二:ptszPluginVersion + In/Out:Out + 类型:字符指针 + 可空:N + 意思:版本号.使用x.x.x.x 格式 + 参数.三:ptszPluginAuthor + In/Out:Out + 类型:字符指针 + 可空:N + 意思:作者 + 参数.四:ptszPluginDesc + In/Out:Out + 类型:字符指针 + 可空:N + 意思:插件描述 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +void CPlugin_Zodiac::PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) +{ + Zodiac_IsErrorOccur = false; + + _tcsxcpy(ptszPluginName, "zodiac"); + _tcsxcpy(ptszPluginVersion, "1.0.0.1001"); + _tcsxcpy(ptszPluginAuthor, "xengine"); + _tcsxcpy(ptszPluginDesc, "get zodiac plugin"); +} +/******************************************************************** 函数名称:PluginCore_Call 函数功能:调用插件 返回值 diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Plugin_Zodiac/Plugin_Zodiac.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Plugin_Zodiac/Plugin_Zodiac.h index 3d6b0def85c37efbc8e3b8a3c7f147e3340b4d12..0ba49d9cad1620917a01a2a93d17d94725417264 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Plugin_Zodiac/Plugin_Zodiac.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Plugin_Zodiac/Plugin_Zodiac.h @@ -17,8 +17,9 @@ public: CPlugin_Zodiac(); ~CPlugin_Zodiac(); public: - bool PluginCore_Init(XPVOID lParam); + bool PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter); void PluginCore_UnInit(); + void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); bool PluginCore_Call(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen); protected: bool Plugin_Zodiac_Chinese(LPCXSTR lpszDate, XCHAR* ptszCZodiac); diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/pch.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/pch.cpp index c598bc1d308a8058ae4d078744bf64a21ba20061..387fde300795ee389c9e92ec721b4e9638de9f9d 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/pch.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/pch.cpp @@ -25,14 +25,18 @@ extern "C" XLONG PluginCore_GetLastError() /********************************************************************************* * 导出函数定义 * *********************************************************************************/ -extern "C" bool PluginCore_Init(XPVOID lParam) +extern "C" bool PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter) { - return m_PluginZodiac.PluginCore_Init(lParam); + return m_PluginZodiac.PluginCore_Init(pSt_PluginParameter); } extern "C" void PluginCore_UnInit() { m_PluginZodiac.PluginCore_UnInit(); } +extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) +{ + return m_PluginZodiac.PluginCore_GetInfo(ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); +} extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen) { return m_PluginZodiac.PluginCore_Call(pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen, lpszMsgBuffer, nMsgLen); diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/pch.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/pch.h index cd3943aafe477d59b85d9f4253775918d8cf2c4c..618a478a5c0c6c7c45d089b212e297b68cde76c2 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/pch.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/pch.h @@ -17,10 +17,12 @@ #include #include #include +#include #include #include #include #include +#include "../../XEngine_UserProtocol.h" #include "PluginZodiac_Define.h" #include "PluginZodiac_Error.h" using namespace std; diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_APIServiceApp/XEngine_APIServiceApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_APIServiceApp/XEngine_APIServiceApp.cpp index 8db5645a3bc401617bd8744c49969d4cc7bd6a61..ed69e9b1475e64def03bb784f8196e1e76ad7413 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_APIServiceApp/XEngine_APIServiceApp.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_APIServiceApp/XEngine_APIServiceApp.cpp @@ -147,11 +147,11 @@ void WINAPI XEngine_ServiceMain(DWORD dwArgc, LPTSTR* lpszArgv) XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,设置服务启动状态成功,服务运行中")); bIsRun = true; - XCHAR tszCurrectDir[MAX_PATH] = {}; - XCHAR tszPathBuffer[MAX_PATH] = {}; - GetModuleFileNameA(NULL, tszCurrectDir, MAX_PATH); + XCHAR tszCurrectDir[XPATH_MAX] = {}; + XCHAR tszPathBuffer[XPATH_MAX] = {}; + GetModuleFileNameA(NULL, tszCurrectDir, XPATH_MAX); BaseLib_String_GetFileAndPathA(tszCurrectDir, tszPathBuffer); - _xstrcat(tszPathBuffer, MAX_PATH, _X("XEngine_HttpApp.exe")); + _xstrcat(tszPathBuffer, XPATH_MAX, _X("XEngine_HttpApp.exe")); if (!SystemApi_Process_CreateProcess(&dwProcessID, tszPathBuffer, "-db 0", false)) { @@ -206,8 +206,8 @@ void WINAPI XEngine_ServiceCtrlHandler(DWORD dwControl) // 安装服务 void XEngine_InstallService() { - TCHAR tszFilePath[MAX_PATH] = {}; - if (!GetModuleFileName(NULL, tszFilePath, MAX_PATH)) + TCHAR tszFilePath[XPATH_MAX] = {}; + if (!GetModuleFileName(NULL, tszFilePath, XPATH_MAX)) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,安装服务失败,获取文件路径失败,错误码:%d"), GetLastError()); return; diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile index 14239b32fa9456dfb39385b333b820e574c05a37..30a25655a8c5165e14f0e736bc85595ed4d261ae 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile @@ -1,11 +1,7 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ LOADSO = -L ../../XEngine_ModuleConfigure -L ../../XEngine_ModuleDatabase -L ../../XEngine_ModuleProtocol -L ../../XEngine_ModuleSystem -L ../../XEngine_ModuleHelp -L ../../XEngine_ModulePlugin \ -L ../../XEngine_Depend/XEngine_Module/jsoncpp -L ../../XEngine_Depend/XEngine_Module/XEngine_InfoReport \ @@ -21,8 +17,8 @@ OBJECTS = XEngine_Configure.o XEngine_Network.o XEngine_HTTPTask.o XEngine_Plugi TaskPost_DTest.o TaskPost_Log.o TaskPost_P2PClient.o TaskPost_PostCode.o TaskPost_QRCode.o TaskPost_ShortLink.o TaskPost_SocketTest.o TaskPost_WordFilter.o TaskPost_Image.o TaskPost_BackService.o TaskPost_Deamon.o TaskPost_Machine.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c @@ -34,18 +30,16 @@ else endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif CC += -Wformat-overflow=0 FILEEXT = so @@ -55,7 +49,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp index 11e540deb5e6287373bc2bb81ca51a5801804a44..a98612799429e2f7d9137b0d691676a3b0abe49f 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp @@ -10,7 +10,7 @@ // Purpose: HTTP任务处理代码 // History: *********************************************************************/ -XHTHREAD CALLBACK HTTPTask_TastPost_Thread(XPVOID lParam) +XHTHREAD XCALLBACK HTTPTask_TastPost_Thread(XPVOID lParam) { //任务池是编号1开始的. int nThreadPos = *(int*)lParam; @@ -75,8 +75,8 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST memset(tszUrlName, '\0', sizeof(tszUrlName)); - XCHAR tszUrlBuffer[MAX_PATH] = {}; - XCHAR tszGBKBuffer[MAX_PATH] = {}; + XCHAR tszUrlBuffer[XPATH_MAX] = {}; + XCHAR tszGBKBuffer[XPATH_MAX] = {}; Cryption_Codec_UrlDeCodec(pSt_HTTPParam->tszHttpUri, _tcsxlen(pSt_HTTPParam->tszHttpUri), tszUrlBuffer); #ifdef _MSC_BUILD int nCLen = _tcsxlen(tszUrlBuffer); @@ -100,8 +100,8 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,发送的URL请求参数不正确:%s"), lpszClientAddr, tszGBKBuffer); return false; } - XCHAR tszKey[MAX_PATH]; - XCHAR tszValue[MAX_PATH]; + XCHAR tszKey[XPATH_MAX]; + XCHAR tszValue[XPATH_MAX]; LPCXSTR lpszFuncName = _X("api"); LPCXSTR lpszParamFuncKey = _X("function"); LPCXSTR lpszParamName = _X("params1"); @@ -131,8 +131,8 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST LPCXSTR lpszParamDeamon = _X("deamon"); LPCXSTR lpszParamMachine = _X("machine"); - memset(tszKey, '\0', MAX_PATH); - memset(tszValue, '\0', MAX_PATH); + memset(tszKey, '\0', XPATH_MAX); + memset(tszValue, '\0', XPATH_MAX); if (0 != _tcsxnicmp(lpszFuncName, tszUrlName, _tcsxlen(lpszFuncName))) { diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.h index 56a3f0d11cc406d2b93a637593924c9887f5578f..b03864e51a998d668184ce5671e44cbc79c9979d 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.h @@ -11,6 +11,6 @@ // History: *********************************************************************/ //任务处理池,用来获取一个完整包 -XHTHREAD CALLBACK HTTPTask_TastPost_Thread(XPVOID lParam); +XHTHREAD XCALLBACK HTTPTask_TastPost_Thread(XPVOID lParam); //任务处理相关函数,处理包的内容 bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszRVBuffer, int nRVLen, XCHAR*** ppptszHDRList, int nHDRCount); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h index 90c07fc285df43d158dd0523b0f9c06c181dc935..877902b3f504c1a1133335e9085ea8db2964b1ca 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h @@ -139,7 +139,6 @@ extern XHANDLE xhHTTPPool; extern unique_ptr pSTDThread_Deamon; //配置文件 extern XENGINE_SERVICECONFIG st_ServiceConfig; -extern XENGINE_PLUGINCONFIG st_PluginConfig; extern XENGINE_DEAMONAPPLIST st_DeamonAppConfig; //连接库 #ifdef _MSC_BUILD diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp index bbc708b37e3b4383cf2803ec238d41f1bd3ad818..4da2966446d560dae1c53223e8b1886ed10b0c8e 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp @@ -23,7 +23,6 @@ XHANDLE xhHTTPPool = NULL; unique_ptr pSTDThread_Deamon = NULL; //配置文件 XENGINE_SERVICECONFIG st_ServiceConfig; -XENGINE_PLUGINCONFIG st_PluginConfig; XENGINE_DEAMONAPPLIST st_DeamonAppConfig; void ServiceApp_Stop(int signo) @@ -71,7 +70,7 @@ void ServiceApp_Stop(int signo) LONG WINAPI Coredump_ExceptionFilter(EXCEPTION_POINTERS* pExceptionPointers) { static int i = 0; - XCHAR tszFileStr[MAX_PATH] = {}; + XCHAR tszFileStr[XPATH_MAX] = {}; XCHAR tszTimeStr[128] = {}; BaseLib_Time_TimeToStr(tszTimeStr); _xstprintf(tszFileStr, _X("./XEngine_Coredump/dumpfile_%s_%d.dmp"), tszTimeStr, i++); @@ -141,12 +140,11 @@ int main(int argc, char** argv) #endif bIsRun = true; int nRet = -1; - HELPCOMPONENTS_XLOG_CONFIGURE st_XLogConfig; + XENGINE_PLUGINPARAM st_PluginParam = {}; + HELPCOMPONENTS_XLOG_CONFIGURE st_XLogConfig = {}; THREADPOOL_PARAMENT** ppSt_ListHTTPParam; - memset(&st_XLogConfig, '\0', sizeof(HELPCOMPONENTS_XLOG_CONFIGURE)); memset(&st_ServiceConfig, '\0', sizeof(XENGINE_SERVICECONFIG)); - memset(&st_PluginConfig, '\0', sizeof(XENGINE_PLUGINCONFIG)); //初始化参数 if (!XEngine_Configure_Parament(argc, argv)) @@ -399,13 +397,10 @@ int main(int argc, char** argv) XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动进程管理线程成功")); //初始化插件配置 + _tcsxcpy(st_PluginParam.tszAPIVersion, st_ServiceConfig.st_XVer.pStl_ListVer->front().c_str()); + _tcsxcpy(st_PluginParam.tszXEngineVer, BaseLib_Version_XNumberStr()); if (st_ServiceConfig.st_XPlugin.bEnable) { - if (!ModuleConfigure_Json_PluginFile(st_ServiceConfig.st_XPlugin.tszPlugin, &st_PluginConfig)) - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化Lib插件配置文件失败,错误:%lX"), ModuleConfigure_GetLastError()); - goto XENGINE_SERVICEAPP_EXIT; - } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化插件配置文件成功")); //启动插件 if (!ModulePlugin_Loader_Init()) @@ -414,51 +409,61 @@ int main(int argc, char** argv) goto XENGINE_SERVICEAPP_EXIT; } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化插件系统成功,开始加载插件")); - //加载插件 - list::const_iterator stl_ListIterator = st_PluginConfig.pStl_ListPluginModule->begin(); - for (int i = 1; stl_ListIterator != st_PluginConfig.pStl_ListPluginModule->end(); stl_ListIterator++, i++) - { - if (stl_ListIterator->bEnable) + //枚举插件 + int nLibCount = 0; + XCHAR** pptszListFile; + SystemApi_File_EnumFileA(st_ServiceConfig.st_XPlugin.tszLibPlugin, &pptszListFile, &nLibCount, false, 1); + for (int i = 0; i < nLibCount; i++) + { + XCHAR tszFileExt[64] = {}; + BaseLib_String_GetFileAndPath(pptszListFile[i], NULL, NULL, NULL, tszFileExt); + if (0 == _tcsxnicmp(tszFileExt, _X("dll"), 3) || 0 == _tcsxnicmp(tszFileExt, _X("so"), 2) || 0 == _tcsxnicmp(tszFileExt, _X("dylib"), 5)) { - if (ModulePlugin_Loader_Insert(stl_ListIterator->tszPluginMethod, stl_ListIterator->tszPluginFile, 0)) + //加载插件 + if (ModulePlugin_Loader_Insert(pptszListFile[i], 0, &st_PluginParam)) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,加载Lib模块插件中,当前第:%d 个加载成功,方法:%s,路径:%s"), i, stl_ListIterator->tszPluginMethod, stl_ListIterator->tszPluginFile); + XCHAR tszModuleName[128] = {}; + XCHAR tszModuleAuthor[64] = {}; + XCHAR tszModuleVer[64] = {}; + ModulePlugin_Loader_GetForModule(pptszListFile[i], tszModuleName, tszModuleVer, tszModuleAuthor); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,加载Lib模块插件中,当前第:%d 个加载成功,路径:%s,方法名:%s,作者:%s,版本:V%s"), i, pptszListFile[i], tszModuleName, tszModuleAuthor, tszModuleVer); } else { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,加载Lib模块插件中,当前第:%d 个加载失败,方法:%s,路径:%s,错误:%lX"), i, stl_ListIterator->tszPluginMethod, stl_ListIterator->tszPluginFile, ModulePlugin_GetLastError()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,加载Lib模块插件中,当前第:%d 个加载失败,路径:%s,错误:%lX"), i, pptszListFile[i], ModulePlugin_GetLastError()); } } - else - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,加载Lib模块插件中,当前第:%d 个加载失败,因为没有启用,方法:%s,路径:%s"), i, stl_ListIterator->tszPluginMethod, stl_ListIterator->tszPluginFile); - } } + BaseLib_Memory_Free((XPPPMEM)&pptszListFile, nLibCount); + #if (1 == _XENGINE_BUILD_SWITCH_LUA) - stl_ListIterator = st_PluginConfig.pStl_ListPluginLua->begin(); - for (int i = 1; stl_ListIterator != st_PluginConfig.pStl_ListPluginLua->end(); stl_ListIterator++, i++) + int nLuaCount = 0; + XCHAR tszFileExt[64] = {}; + SystemApi_File_EnumFileA(st_ServiceConfig.st_XPlugin.tszLuaPlugin, &pptszListFile, &nLuaCount, false, 1); + for (int i = 0; i < nLuaCount; i++) { - if (stl_ListIterator->bEnable) + BaseLib_String_GetFileAndPath(pptszListFile[i], NULL, NULL, NULL, tszFileExt); + if (0 == _tcsxnicmp(tszFileExt, _X("lua"), 3)) { - if (ModulePlugin_Loader_Insert(stl_ListIterator->tszPluginMethod, stl_ListIterator->tszPluginFile, 1)) + if (ModulePlugin_Loader_Insert(pptszListFile[i], 1, &st_PluginParam)) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,加载Lua模块插件中,当前第:%d 个加载成功,方法:%s,路径:%s"), i, stl_ListIterator->tszPluginMethod, stl_ListIterator->tszPluginFile); + XCHAR tszModuleName[128] = {}; + XCHAR tszModuleAuthor[64] = {}; + XCHAR tszModuleVer[64] = {}; + ModulePlugin_Loader_GetForModule(pptszListFile[i], tszModuleName, tszModuleVer, tszModuleAuthor); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,加载Lua模块插件中,当前第:%d 个加载成功,路径:%s,方法名:%s,作者:%s,版本:V%s"), i, pptszListFile[i], tszModuleName, tszModuleAuthor, tszModuleVer); } else { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,加载Lua模块插件中,当前第:%d 个加载失败,方法:%s,路径:%s,错误:%lX"), i, stl_ListIterator->tszPluginMethod, stl_ListIterator->tszPluginFile, ModulePlugin_GetLastError()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,加载Lua模块插件中,当前第:%d 个加载失败,路径:%s,错误:%lX"), i, pptszListFile[i], ModulePlugin_GetLastError()); } } - else - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,加载Lua模块插件中,当前第:%d 个加载失败,因为没有启用,方法:%s,路径:%s"), i, stl_ListIterator->tszPluginMethod, stl_ListIterator->tszPluginFile); - } } #else XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,加载Lua模块插件失败,因为LUA编译被关闭")); #endif //展示能力 - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,加载的Lib插件:%d 个,Lua插件:%d 个"), st_PluginConfig.pStl_ListPluginModule->size(), st_PluginConfig.pStl_ListPluginLua->size()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,加载的Lib插件:%d 个,Lua插件:%d 个"), nLibCount, nLuaCount); } else { diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Network.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Network.cpp index 62c20db06e07942b1e4974b215105b0669450758..129d1714a42ac0ddb64de26c245dd73381843504 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Network.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Network.cpp @@ -11,14 +11,14 @@ // History: *********************************************************************/ //////////////////////////////////////////////////////////////////////////下面是HTTP网络IO相关代码处理函数 -bool CALLBACK Network_Callback_HTTPLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) +bool XCALLBACK Network_Callback_HTTPLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { SocketOpt_HeartBeat_InsertAddrEx(xhHTTPHeart, lpszClientAddr); HttpProtocol_Server_CreateClientEx(xhHTTPPacket, lpszClientAddr, 0); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,连接到服务器"), lpszClientAddr); return true; } -void CALLBACK Network_Callback_HTTPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam) +void XCALLBACK Network_Callback_HTTPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam) { if (!HttpProtocol_Server_InserQueueEx(xhHTTPPacket, lpszClientAddr, lpszRecvMsg, nMsgLen)) { @@ -28,16 +28,16 @@ void CALLBACK Network_Callback_HTTPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, SocketOpt_HeartBeat_ActiveAddrEx(xhHTTPHeart, lpszClientAddr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("HTTP客户端:%s,投递数据包到组包队列成功,大小:%d"), lpszClientAddr, nMsgLen); } -void CALLBACK Network_Callback_HTTPLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) +void XCALLBACK Network_Callback_HTTPLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { XEngine_Network_Close(lpszClientAddr, false); } -void CALLBACK Network_Callback_HTTPHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam) +void XCALLBACK Network_Callback_HTTPHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam) { XEngine_Network_Close(lpszClientAddr, true); } //////////////////////////////////////////////////////////////////////////RFC相关 -void CALLBACK Network_Callback_RFCRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszMSGBuffer, int nMSGLen, XPVOID lParam) +void XCALLBACK Network_Callback_RFCRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszMSGBuffer, int nMSGLen, XPVOID lParam) { if ((nMSGLen >= 20) && ((lpszMSGBuffer[0] & 0xC0) == 0x00) && (lpszMSGBuffer[4] == 0x21) && (lpszMSGBuffer[5] == 0x12) && ((XBYTE)lpszMSGBuffer[6] == 0xA4) && (lpszMSGBuffer[7] == 0x42)) { diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Network.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Network.h index 0984b086fea3ae518e632f5938f6b214f20d568b..4833db6d6c817968a1c9aa9f983a8ff84791f463 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Network.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Network.h @@ -11,12 +11,12 @@ // History: *********************************************************************/ //HTTP相关 -bool CALLBACK Network_Callback_HTTPLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); -void CALLBACK Network_Callback_HTTPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam); -void CALLBACK Network_Callback_HTTPLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); -void CALLBACK Network_Callback_HTTPHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); +bool XCALLBACK Network_Callback_HTTPLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); +void XCALLBACK Network_Callback_HTTPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam); +void XCALLBACK Network_Callback_HTTPLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); +void XCALLBACK Network_Callback_HTTPHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); //RFC相关 -void CALLBACK Network_Callback_RFCRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszMSGBuffer, int nMSGLen, XPVOID lParam); +void XCALLBACK Network_Callback_RFCRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszMSGBuffer, int nMSGLen, XPVOID lParam); //关闭与发送 void XEngine_Network_Close(LPCXSTR lpszClientAddr, bool bHeart); bool XEngine_Network_Send(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Bank.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Bank.cpp index 405854155d137b853eafd5931966b69c9aa00f03..f796776f3cc9db86be5bf80c3e6d2906852fc06f 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Bank.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Bank.cpp @@ -9,13 +9,13 @@ bool HTTPTask_TaskGet_BankInfo(LPCXSTR lpszClientAddr, LPCXSTR lpszBankNumber) XCHAR* ptszBodyBuffer; XCHAR tszMsgBuffer[4096]; XCHAR tszPktBuffer[4096]; - XCHAR tszUrlBuffer[MAX_PATH]; + XCHAR tszUrlBuffer[XPATH_MAX]; XENGINE_BANKINFO st_BankInfo; RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam; //发送给客户端的参数 memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); memset(tszPktBuffer, '\0', sizeof(tszPktBuffer)); - memset(tszUrlBuffer, '\0', MAX_PATH); + memset(tszUrlBuffer, '\0', XPATH_MAX); memset(&st_BankInfo, '\0', sizeof(XENGINE_BANKINFO)); memset(&st_HDRParam, '\0', sizeof(RFCCOMPONENTS_HTTP_HDRPARAM)); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Oil.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Oil.cpp index 3cbeffd02c58dbf813a6f74e6d1662a3df355e1f..b549458958b1ed651592c13651807487c253e2e1 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Oil.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Oil.cpp @@ -8,7 +8,7 @@ bool HTTPTask_TaskGet_Oil(LPCXSTR lpszClientAddr, LPCXSTR lpszCityStr) XCHAR* ptszBodyBuffer; XCHAR tszMsgBuffer[4096]; XCHAR tszPktBuffer[4096]; - XCHAR tszUrlBuffer[MAX_PATH] = {}; + XCHAR tszUrlBuffer[XPATH_MAX] = {}; XENGINE_OILINFO st_OilInfo = {}; RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {}; //发送给客户端的参数 @@ -19,11 +19,11 @@ bool HTTPTask_TaskGet_Oil(LPCXSTR lpszClientAddr, LPCXSTR lpszCityStr) st_HDRParam.nHttpCode = 200; //HTTP CODE码 st_HDRParam.bIsClose = true; //收到回复后就关闭 - XCHAR tszURLEncoder[MAX_PATH] = {}; + XCHAR tszURLEncoder[XPATH_MAX] = {}; _xstprintf(tszUrlBuffer, st_ServiceConfig.st_XApi.tszOilUrl, lpszCityStr); #ifdef _MSC_BUILD - XCHAR tszUTFEncoder[MAX_PATH] = {}; + XCHAR tszUTFEncoder[XPATH_MAX] = {}; BaseLib_Charset_AnsiToUTF(tszUrlBuffer, tszUTFEncoder); Cryption_Codec_UrlEnCodec(tszUTFEncoder, _tcsxlen(tszUTFEncoder), tszURLEncoder); #else diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Reload.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Reload.cpp index 00adadcc73f0b02efa1b7da3cade9b9096aaf78f..d178d9ea0596d1a4376ed418e225cc00ebe19a6b 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Reload.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Reload.cpp @@ -21,68 +21,35 @@ bool HTTPTask_TaskGet_Reload(LPCXSTR lpszClientAddr, LPCXSTR lpszOPCode) } else if (1 == _ttxoi(lpszOPCode)) { - ModulePlugin_Loader_Destory(); - delete st_PluginConfig.pStl_ListPluginLua; - delete st_PluginConfig.pStl_ListPluginModule; - st_PluginConfig.pStl_ListPluginLua = NULL; - st_PluginConfig.pStl_ListPluginModule = NULL; + int nLuaCount = 0; + int nLibCount = 0; + XCHAR** pptszListFile; + XENGINE_PLUGINPARAM st_PluginParam = {}; + _tcsxcpy(st_PluginParam.tszAPIVersion, st_ServiceConfig.st_XVer.pStl_ListVer->front().c_str()); + _tcsxcpy(st_PluginParam.tszXEngineVer, BaseLib_Version_XNumberStr()); + ModulePlugin_Loader_Destory(); ModulePlugin_Loader_Init(); - if (!ModuleConfigure_Json_PluginFile(st_ServiceConfig.st_XPlugin.tszPlugin, &st_PluginConfig)) - { - st_HDRParam.nHttpCode = 500; - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam); - XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求操作配置重载失败,加载Lib插件配置失败,错误:%lX"), lpszClientAddr, ModuleConfigure_GetLastError()); - return false; - } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求操作配置重载成功,加载插件配置成功"), lpszClientAddr); - { - list::const_iterator stl_ListIterator = st_PluginConfig.pStl_ListPluginModule->begin(); - for (int i = 1; stl_ListIterator != st_PluginConfig.pStl_ListPluginModule->end(); stl_ListIterator++, i++) + SystemApi_File_EnumFileA(st_ServiceConfig.st_XPlugin.tszLibPlugin, &pptszListFile, &nLibCount, false, 1); + for (int i = 0; i < nLibCount; i++) { - if (stl_ListIterator->bEnable) - { - if (ModulePlugin_Loader_Insert(stl_ListIterator->tszPluginMethod, stl_ListIterator->tszPluginFile, 0)) - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,重载Lib模块插件中,当前第:%d 个加载成功,方法:%s,路径:%s"), lpszClientAddr, i, stl_ListIterator->tszPluginMethod, stl_ListIterator->tszPluginFile); - } - else - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,重载Lib模块插件中,当前第:%d 个加载失败,方法:%s,路径:%s,错误:%lX"), lpszClientAddr, i, stl_ListIterator->tszPluginMethod, stl_ListIterator->tszPluginFile, ModulePlugin_GetLastError()); - } - } - else - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,重载Lib模块插件中,当前第:%d 个加载失败,因为没有启用,方法:%s,路径:%s"), lpszClientAddr, i, stl_ListIterator->tszPluginMethod, stl_ListIterator->tszPluginFile); - } + //加载插件 + ModulePlugin_Loader_Insert(pptszListFile[i], 0, &st_PluginParam); } + BaseLib_Memory_Free((XPPPMEM)&pptszListFile, nLibCount); } { - list::const_iterator stl_ListIterator = st_PluginConfig.pStl_ListPluginLua->begin(); - for (int i = 1; stl_ListIterator != st_PluginConfig.pStl_ListPluginLua->end(); stl_ListIterator++, i++) + SystemApi_File_EnumFileA(st_ServiceConfig.st_XPlugin.tszLuaPlugin, &pptszListFile, &nLuaCount, false, 1); + for (int i = 0; i < nLuaCount; i++) { - if (stl_ListIterator->bEnable) - { - if (ModulePlugin_Loader_Insert(stl_ListIterator->tszPluginMethod, stl_ListIterator->tszPluginFile, 1)) - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,重载Lua模块插件中,当前第:%d 个加载成功,方法:%s,路径:%s"), lpszClientAddr, i, stl_ListIterator->tszPluginMethod, stl_ListIterator->tszPluginFile); - } - else - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,重载Lua模块插件中,当前第:%d 个加载失败,方法:%s,路径:%s,错误:%lX"), lpszClientAddr, i, stl_ListIterator->tszPluginMethod, stl_ListIterator->tszPluginFile, ModulePlugin_GetLastError()); - } - } - else - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,重载Lua模块插件中,当前第:%d 个加载失败,因为没有启用,方法:%s,路径:%s"), lpszClientAddr, i, stl_ListIterator->tszPluginMethod, stl_ListIterator->tszPluginFile); - } + ModulePlugin_Loader_Insert(pptszListFile[i], 1, &st_PluginParam); } } HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam); XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求重载插件成功,Lib插件:%d 个,Lua插件:%d 个"), lpszClientAddr, st_PluginConfig.pStl_ListPluginModule->size(), st_PluginConfig.pStl_ListPluginLua->size()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求重载插件成功,Lib插件:%d 个,Lua插件:%d 个"), lpszClientAddr, nLibCount, nLuaCount); } else if (2 == _ttxoi(lpszOPCode)) { diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Translation.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Translation.cpp index e9015e3a1c17c86f38300ee845321df249820073..bd696b644265407b803984b7334bbf92ff096dec 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Translation.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Translation.cpp @@ -21,9 +21,9 @@ bool HTTPTask_TaskGet_Translation(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, st_HDRParam.nHttpCode = 200; //HTTP CODE码 st_HDRParam.bIsClose = true; //收到回复后就关闭 - XCHAR tszSignStr[MAX_PATH] = {}; - XCHAR tszMD5Codec[MAX_PATH] = {}; - XCHAR tszMD5Str[MAX_PATH] = {}; + XCHAR tszSignStr[XPATH_MAX] = {}; + XCHAR tszMD5Codec[XPATH_MAX] = {}; + XCHAR tszMD5Str[XPATH_MAX] = {}; XCHAR tszURLStr[4096] = {}; XCHAR tszUTFBuffer[2048] = {}; diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Weather.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Weather.cpp index fef5bdee49e37b814a09b457a1323b8533993bfd..030c80783668cb575cb67bac1f202282f0914aaa 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Weather.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Weather.cpp @@ -8,13 +8,13 @@ bool HTTPTask_TaskGet_WeatherInfo(LPCXSTR lpszClientAddr, LPCXSTR lpszAddrCode) XCHAR* ptszBodyBuffer; XCHAR tszMsgBuffer[4096]; XCHAR tszPktBuffer[4096]; - XCHAR tszUrlBuffer[MAX_PATH]; + XCHAR tszUrlBuffer[XPATH_MAX]; XENGINE_WEATHERINFO st_WeatherInfo = {}; RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {}; //发送给客户端的参数 memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); memset(tszPktBuffer, '\0', sizeof(tszPktBuffer)); - memset(tszUrlBuffer, '\0', MAX_PATH); + memset(tszUrlBuffer, '\0', XPATH_MAX); st_HDRParam.nHttpCode = 200; //HTTP CODE码 st_HDRParam.bIsClose = true; //收到回复后就关闭 diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_BackService.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_BackService.cpp index b96b24214821c78799e38660bbfbe5c9a74c2637..681ac9b3399daaf74b44b31dcd4242e0b3e29bfd 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_BackService.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_BackService.cpp @@ -7,14 +7,14 @@ static XNETHANDLE xhAudio = 0; static XNETHANDLE xhVideo = 0; static XHANDLE xhStream = NULL; -void CALLBACK HTTPTask_TaskPost_CBVideo(uint8_t* ptszAVBuffer, int nAVLen, AVCOLLECT_TIMEINFO* pSt_TimeInfo, XPVOID lParam) +void XCALLBACK HTTPTask_TaskPost_CBVideo(uint8_t* ptszAVBuffer, int nAVLen, AVCOLLECT_TIMEINFO* pSt_TimeInfo, XPVOID lParam) { if (!XClient_StreamPush_LiveVideo(xhStream, ptszAVBuffer, nAVLen)) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("屏幕采集器,推流编码失败,需要关闭推流服务,错误码:%lX"), StreamClient_GetLastError()); } } -void CALLBACK HTTPTask_TaskPost_CBAudio(uint8_t* ptszAVBuffer, int nAVLen, AVCOLLECT_TIMEINFO* pSt_TimeInfo, XPVOID lParam) +void XCALLBACK HTTPTask_TaskPost_CBAudio(uint8_t* ptszAVBuffer, int nAVLen, AVCOLLECT_TIMEINFO* pSt_TimeInfo, XPVOID lParam) { if (!XClient_StreamPush_LiveAudio(xhStream, ptszAVBuffer, nAVLen)) { @@ -29,8 +29,8 @@ bool HTTPTask_TaskPost_BackService(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer int nBSType = 0; XCHAR* ptszRVBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); XCHAR* ptszSDBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); - XCHAR tszSrcBuffer[MAX_PATH]; - XCHAR tszDstBuffer[MAX_PATH]; + XCHAR tszSrcBuffer[XPATH_MAX]; + XCHAR tszDstBuffer[XPATH_MAX]; RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam; //发送给客户端的参数 memset(ptszRVBuffer, '\0', XENGINE_MEMORY_SIZE_MAX); @@ -45,8 +45,8 @@ bool HTTPTask_TaskPost_BackService(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer if (st_ServiceConfig.st_XVerifcation.st_VerSwitch.bBackService) { - XCHAR tszUserName[MAX_PATH]; - XCHAR tszUserPass[MAX_PATH]; + XCHAR tszUserName[XPATH_MAX]; + XCHAR tszUserPass[XPATH_MAX]; memset(tszUserName, '\0', sizeof(tszUserName)); memset(tszUserPass, '\0', sizeof(tszUserPass)); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_BackService.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_BackService.h index 4b892e121b15c10cce3ffda086b3e2a32366acc6..b97742ba6e4810835e28372ff85165dc87a84af7 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_BackService.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_BackService.h @@ -1,5 +1,5 @@ #pragma once -void CALLBACK HTTPTask_TaskPost_CBVideo(uint8_t* punStringY, int nYLen, uint8_t* punStringU, int nULen, uint8_t* punStringV, int nVLen, AVCOLLECT_TIMEINFO* pSt_TimeInfo, XPVOID lParam); -void CALLBACK HTTPTask_TaskPost_CBAudio(uint8_t* punStringAudio, int nVLen, AVCOLLECT_TIMEINFO* pSt_TimeInfo, XPVOID lParam); +void XCALLBACK HTTPTask_TaskPost_CBVideo(uint8_t* punStringY, int nYLen, uint8_t* punStringU, int nULen, uint8_t* punStringV, int nVLen, AVCOLLECT_TIMEINFO* pSt_TimeInfo, XPVOID lParam); +void XCALLBACK HTTPTask_TaskPost_CBAudio(uint8_t* punStringAudio, int nVLen, AVCOLLECT_TIMEINFO* pSt_TimeInfo, XPVOID lParam); bool HTTPTask_TaskPost_BackService(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nType); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Deamon.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Deamon.cpp index 119096009d153ebfc2d4750de952f31324b18ebe..32fc0c3f9771fed3ea18de148db3068f50ae400c 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Deamon.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Deamon.cpp @@ -1,6 +1,6 @@ #include "../XEngine_Hdr.h" -void CALLBACK HTTPTask_TaskPost_Thread() +void XCALLBACK HTTPTask_TaskPost_Thread() { while (bIsRun) { @@ -105,8 +105,8 @@ bool HTTPTask_TaskPost_Deamon(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int if (st_ServiceConfig.st_XVerifcation.st_VerSwitch.bDeamon) { - XCHAR tszUserName[MAX_PATH]; - XCHAR tszUserPass[MAX_PATH]; + XCHAR tszUserName[XPATH_MAX]; + XCHAR tszUserPass[XPATH_MAX]; memset(tszUserName, '\0', sizeof(tszUserName)); memset(tszUserPass, '\0', sizeof(tszUserPass)); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Deamon.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Deamon.h index 999901cdbf7d12854df3f62c201969981aebaed7..05ca1660265ebe0d32f8a9e93dab8ced06f0bcbf 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Deamon.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Deamon.h @@ -1,4 +1,4 @@ #pragma once -void CALLBACK HTTPTask_TaskPost_Thread(); +void XCALLBACK HTTPTask_TaskPost_Thread(); bool HTTPTask_TaskPost_Deamon(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Image.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Image.cpp index 0146eff85c652cce7f2bb31e2580ed3ffaed6029..5eab9a54a44ee64c22c9c82b746420ee93eabd78 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Image.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Image.cpp @@ -9,7 +9,7 @@ bool HTTPTask_TaskPost_Image(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int st_HDRParam.bIsClose = true; //收到回复后就关闭 #if (0 == _XENGINE_BUILD_SWITCH_OPENCV) int nMLen = 0; - XCHAR tszMSGBuffer[MAX_PATH] = {}; + XCHAR tszMSGBuffer[XPATH_MAX] = {}; st_HDRParam.nHttpCode = 501; HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMSGBuffer, &nMLen, &st_HDRParam); @@ -37,7 +37,7 @@ bool HTTPTask_TaskPost_Image(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int if (!st_ServiceConfig.st_XImageText.bEnable) { int nMLen = 0; - XCHAR tszMSGBuffer[MAX_PATH] = {}; + XCHAR tszMSGBuffer[XPATH_MAX] = {}; st_HDRParam.nHttpCode = 501; HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMSGBuffer, &nMLen, &st_HDRParam); @@ -93,7 +93,7 @@ bool HTTPTask_TaskPost_Image(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求设置图像数据失败,因为附加参数不正确,参数个数:%d"), lpszClientAddr, nListCount); return false; } - XCHAR tszFileExt[MAX_PATH]; + XCHAR tszFileExt[XPATH_MAX]; memset(tszFileExt, '\0', sizeof(tszFileExt)); memset(tszHTTPVlu, '\0', sizeof(tszHTTPVlu)); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_P2PClient.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_P2PClient.cpp index 214d5077368180a4e3def269fceec1167cf736ae..4d8d4d34fefb3ce5f0aeef4d0960936140c6ded6 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_P2PClient.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_P2PClient.cpp @@ -1,6 +1,6 @@ #include "../XEngine_Hdr.h" -void CALLBACK HTTPTask_TastPost_P2PCallback(XENGINE_P2XPPEER_PROTOCOL* pSt_P2PProtocol, XPVOID lParam) +void XCALLBACK HTTPTask_TastPost_P2PCallback(XENGINE_P2XPPEER_PROTOCOL* pSt_P2PProtocol, XPVOID lParam) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端,公网:%s,私网:%s,连接:%s,P2XP心跳离开"), pSt_P2PProtocol->tszPublicAddr, pSt_P2PProtocol->tszPrivateAddr, pSt_P2PProtocol->tszConnectAddr); } @@ -9,7 +9,7 @@ bool HTTPTask_TastPost_P2PClient(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nSDLen = 4096; int nRVLen = 4096; XCHAR tszSDBuffer[4096]; - XCHAR tszRVBuffer[MAX_PATH]; + XCHAR tszRVBuffer[XPATH_MAX]; RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam; //发送给客户端的参数 memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_P2PClient.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_P2PClient.h index 87a364e83fb250fea97f3f9f39ef12eec66973e3..47f8d6f7db314f0f5fe8c2c69e734aaa0409d63c 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_P2PClient.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_P2PClient.h @@ -1,4 +1,4 @@ #pragma once -void CALLBACK HTTPTask_TastPost_P2PCallback(XENGINE_P2XPPEER_PROTOCOL* pSt_P2PProtocol, XPVOID lParam); +void XCALLBACK HTTPTask_TastPost_P2PCallback(XENGINE_P2XPPEER_PROTOCOL* pSt_P2PProtocol, XPVOID lParam); bool HTTPTask_TastPost_P2PClient(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int unOperatorCode); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_QRCode.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_QRCode.cpp index 4caddaa82f4be2a32ed9c033aab5e3e8ffa48e8c..52bffefc162984a0b5370ebc49c66f943e1296ee 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_QRCode.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_QRCode.cpp @@ -9,7 +9,7 @@ bool HTTPTask_TaskPost_QRCode(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int st_HDRParam.bIsClose = true; //收到回复后就关闭 #if (0 == _XENGINE_BUILD_SWITCH_QRDECODEC) int nMLen = 0; - XCHAR tszMSGBuffer[MAX_PATH] = {}; + XCHAR tszMSGBuffer[XPATH_MAX] = {}; st_HDRParam.nHttpCode = 501; HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMSGBuffer, &nMLen, &st_HDRParam); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_ShortLink.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_ShortLink.cpp index fda040d409fd4365624f1c3f170cc17bb90ad762..c9e4903648464ab350eac023fe7db9dbbd36e8cd 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_ShortLink.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_ShortLink.cpp @@ -6,8 +6,8 @@ bool HTTPTask_TaskPost_SLProxy(LPCXSTR lpszClientAddr, LPCXSTR lpszUriStr, XCHAR bool bFound = false; for (int i = 0; i < nHDRCount; i++) { - XCHAR tszKey[MAX_PATH]; - XCHAR tszValue[MAX_PATH]; + XCHAR tszKey[XPATH_MAX]; + XCHAR tszValue[XPATH_MAX]; memset(tszKey, '\0', sizeof(tszKey)); memset(tszValue, '\0', sizeof(tszValue)); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_SocketTest.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_SocketTest.cpp index 57c6c0df888504c3fc117cf249d9139aaf855125..0084030d301377e352408521c178b6797b5e145a 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_SocketTest.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_SocketTest.cpp @@ -1,6 +1,6 @@ #include "../XEngine_Hdr.h" -void CALLBACK HTTPTask_TastPost_CBSocketTest(XNETHANDLE xhToken, LPCXSTR lpszAddr, int nPort, __int64x nNumber, __int64x nFailed, __int64x nSuccess, int nStatus, XPVOID lParam) +void XCALLBACK HTTPTask_TastPost_CBSocketTest(XNETHANDLE xhToken, LPCXSTR lpszAddr, int nPort, __int64x nNumber, __int64x nFailed, __int64x nSuccess, int nStatus, XPVOID lParam) { XENGINE_SOCKETTEST* pSt_SocketTest = (XENGINE_SOCKETTEST*)lParam; int nMsgLen = 0; diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_SocketTest.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_SocketTest.h index efb7d17e1ac3cb1b1a8294b5691f329b5d8acc2b..18104a116501236916edb4e6f242150ffd3e67dd 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_SocketTest.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_SocketTest.h @@ -1,4 +1,4 @@ #pragma once -void CALLBACK HTTPTask_TastPost_CBSocketTest(XNETHANDLE xhToken, LPCXSTR lpszAddr, int nPort, __int64x nNumber, __int64x nFailed, __int64x nSuccess, int nStatus, XPVOID lParam); +void XCALLBACK HTTPTask_TastPost_CBSocketTest(XNETHANDLE xhToken, LPCXSTR lpszAddr, int nPort, __int64x nNumber, __int64x nFailed, __int64x nSuccess, int nStatus, XPVOID lParam); bool HTTPTask_TastPost_SocketTest(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nType); \ No newline at end of file diff --git a/XEngine_Source/XEngine_UserProtocol.h b/XEngine_Source/XEngine_UserProtocol.h index c4d6f2ee2f5117f89a371b726bb4fb473798fc93..c672642dfa61c87a1c9072137d38195f9e22b5d5 100644 --- a/XEngine_Source/XEngine_UserProtocol.h +++ b/XEngine_Source/XEngine_UserProtocol.h @@ -126,16 +126,16 @@ typedef struct //银行卡 typedef struct { - XCHAR tszBankNumber[MAX_PATH]; //银行卡号 - XCHAR tszBankName[MAX_PATH]; //银行卡名称 - XCHAR tszBankAbridge[MAX_PATH]; //银行卡缩写 + XCHAR tszBankNumber[XPATH_MAX]; //银行卡号 + XCHAR tszBankName[XPATH_MAX]; //银行卡名称 + XCHAR tszBankAbridge[XPATH_MAX]; //银行卡缩写 ENUM_XENGINE_APISERVICE_BANK_TYPE enBankType; }XENGINE_BANKINFO; //语言转换 typedef struct { - XCHAR tszSourceStr[MAX_PATH]; //原始字符串 - XCHAR tszDestStr[MAX_PATH]; //转换字符串 + XCHAR tszSourceStr[XPATH_MAX]; //原始字符串 + XCHAR tszDestStr[XPATH_MAX]; //转换字符串 XCHAR tszFromStr[64]; //原始类型 XCHAR tszToStr[64]; //目标类型 }XENGINE_LANGUAGEINFO; @@ -149,15 +149,6 @@ typedef struct XSHOT dwConnectType; //连接类型 XSHOT dwPeerType; //节点类型 }XENGINE_P2XPPEER_PROTOCOL, * LPXENGINE_P2XPPEER_PROTOCOL; -//P2XP通道连接命令 -typedef struct tag_XEngine_P2XPIO_Protocol -{ - XCHAR tszSourceUser[32]; //请求连接的用户 - XCHAR tszDestUser[32]; //要连接的用户 - XCHAR tszConnectAddr[32]; //连接的IP地址 - int nDestPort; //要连接的端口 - bool bIsTcp; //连接类型TCP,否则为UDP -}XENGINE_P2XPIO_PROTOCOL, * LPXENGINE_P2XPIO_PROTOCOL; //邮编信息 typedef struct { @@ -211,7 +202,7 @@ typedef struct { MODULEHELP_SOCKETTEST_RECONNECT st_SocketConn; MODULEHELP_SOCKETTEST_DATAS st_SocketData; - XCHAR tszAPIUrl[MAX_PATH]; + XCHAR tszAPIUrl[XPATH_MAX]; XNETHANDLE xhToken; int nType; //0,全部报告,其他结束统计报告 bool bTCP; @@ -220,11 +211,11 @@ typedef struct //短连接 typedef struct { - XCHAR tszFullUrl[MAX_PATH]; - XCHAR tszShotUrl[MAX_PATH]; - XCHAR tszKeyUrl[MAX_PATH]; - XCHAR tszMapUrl[MAX_PATH]; - XCHAR tszCvtUrl[MAX_PATH]; + XCHAR tszFullUrl[XPATH_MAX]; + XCHAR tszShotUrl[XPATH_MAX]; + XCHAR tszKeyUrl[XPATH_MAX]; + XCHAR tszMapUrl[XPATH_MAX]; + XCHAR tszCvtUrl[XPATH_MAX]; XCHAR tszCreateTime[64]; int nLength; int nID; @@ -233,11 +224,11 @@ typedef struct typedef struct { XCHAR tszMachineText[2048]; - XCHAR tszServiceName[MAX_PATH]; - XCHAR tszMachineName[MAX_PATH]; - XCHAR tszMachineUser[MAX_PATH]; - XCHAR tszMachineCode[MAX_PATH]; - XCHAR tszMachineSystem[MAX_PATH]; + XCHAR tszServiceName[XPATH_MAX]; + XCHAR tszMachineName[XPATH_MAX]; + XCHAR tszMachineUser[XPATH_MAX]; + XCHAR tszMachineCode[XPATH_MAX]; + XCHAR tszMachineSystem[XPATH_MAX]; XCHAR tszLastTime[64]; XCHAR tszCreateTime[64]; __int64x nTimeNumber; @@ -246,8 +237,8 @@ typedef struct //敏感词过滤器 typedef struct { - XCHAR tszWordsFrom[MAX_PATH]; - XCHAR tszWordsTo[MAX_PATH]; + XCHAR tszWordsFrom[XPATH_MAX]; + XCHAR tszWordsTo[XPATH_MAX]; XBYTE nLevel; //过滤级别,0替换,1删除,2禁止 }XENGINE_WORDFILTER; //图像基本属性 @@ -291,4 +282,10 @@ typedef struct XCHAR tszUPTime[64]; //更新时间 XCHAR tszNextTime[64]; //更新时间 }XENGINE_OILINFO; +//插件参数 +typedef struct +{ + XCHAR tszAPIVersion[64]; //API服务版本 + XCHAR tszXEngineVer[64]; //XEngine版本 +}XENGINE_PLUGINPARAM; #pragma pack(pop) \ No newline at end of file