diff --git a/XEngine_Docment/Docment_en.docx b/XEngine_Docment/Docment_en.docx index 4ec5e5a4cd9e693a6b47435fa8d29723d869d38e..81e8d770eff7ba93b323fdc194d0008773a5566a 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 ad456ac942ca0948478f37a528fbfd135e95484c..cbec68ba387137f8c9f0f5e1a4d245df2bae0b7a 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 9a070396328813d8619b2ae450c33407181fc9a2..2a7363eb92cdd080aa6de478dc507c1df380f4e3 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -38,8 +38,7 @@ "XStorage":{ "bResumable":1, "bUPHash":0, - "nHashMode":2, - "tszFileDir":"./XEngine_File" + "nHashMode":2 }, "XProxy":{ "XProxyAuth":{ @@ -76,7 +75,8 @@ }, "XVer":{ "StorageVersion":[ - "3.2.0.1001 Build20211210", + "3.3.0.1001 Build20220106", + "3.2.0.1001 Build20211211", "3.1.0.1001 Build20211109", "3.0.0.1001 Build20211029", "2.5.0.1001 Build20210930", diff --git a/XEngine_Release/XEngine_Config/XEngine_LBConfig.json b/XEngine_Release/XEngine_Config/XEngine_LBConfig.json index f5352061c7c54406346bae73c1dc7026b6ad36a0..3bd91f77649911479e91dd80d67746d2b0c06327 100644 --- a/XEngine_Release/XEngine_Config/XEngine_LBConfig.json +++ b/XEngine_Release/XEngine_Config/XEngine_LBConfig.json @@ -1,21 +1,36 @@ { - "tszIPAddr": "127.0.0.1", - "bDistributed": 1, - "LBConfig": { - "nServerMode": 1 + "bDistributed":1, + "LBConfig":{ + "nServerMode":1 }, - "LoadBalance": { - "nUseMode": [ - 0 - ], - "CenterAddr": [ - "http://192.168.1.9:5100" - ], - "DownloadAddr": [ - "http://192.168.1.9:5010" - ], - "UPLoaderAddr": [ - "http://192.168.1.9:5102" - ] + "LoadBalance":{ + "nUseMode":[ + 0 + ], + "CenterAddr":[ + "http://192.168.1.9:5100" + ], + "DownloadAddr":[ + "http://192.168.1.9:5010" + ], + "UPLoaderAddr":[ + "http://192.168.1.9:5102" + ], + "StorageAddr":[ + { + "bEnable":1, + "nLevel":1, + "Size":"1024MB", + "XEngine_Key":"storagekey1", + "XEngine_Path":"./XEngine_File" + }, + { + "bEnable":1, + "nLevel":1, + "Size":"1024MB", + "XEngine_Key":"storagekey2", + "XEngine_Path":"./XEngine_File2" + } + ] } } \ No newline at end of file diff --git a/XEngine_SQLFile/XEngine_Storage.sql b/XEngine_SQLFile/XEngine_Storage.sql index 3a8e0dc1e4174d09cf3234cc5e6fe4a520e267cc..fb6fdedd584c6dab6addf36d291b341e51159ac2 100644 --- a/XEngine_SQLFile/XEngine_Storage.sql +++ b/XEngine_SQLFile/XEngine_Storage.sql @@ -1,17 +1,17 @@ /* Navicat Premium Data Transfer - Source Server : 192.168.1.9 + Source Server : 192.168.1.12 Source Server Type : MySQL - Source Server Version : 80025 - Source Host : 192.168.1.9:3306 + Source Server Version : 80027 + Source Host : 192.168.1.12:3306 Source Schema : XEngine_Storage Target Server Type : MySQL - Target Server Version : 80025 + Target Server Version : 80027 File Encoding : 65001 - Date: 17/06/2021 17:19:07 + Date: 06/01/2022 10:45:33 */ SET NAMES utf8mb4; @@ -23,6 +23,7 @@ SET FOREIGN_KEY_CHECKS = 0; DROP TABLE IF EXISTS `XStorage_File`; CREATE TABLE `XStorage_File` ( `ID` int NOT NULL AUTO_INCREMENT COMMENT 'ID序号', + `BuckKey` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '路径KEY', `FilePath` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件路径', `FileName` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件名称', `FileHash` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件HASH', @@ -30,6 +31,6 @@ CREATE TABLE `XStorage_File` ( `FileSize` bigint NOT NULL COMMENT '文件大小', `FileTime` datetime NOT NULL COMMENT '插入时间', PRIMARY KEY (`ID`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; SET FOREIGN_KEY_CHECKS = 1; diff --git a/XEngine_Source/StorageModule_APIHelp/APIHelp_Define.h b/XEngine_Source/StorageModule_APIHelp/APIHelp_Define.h index 7eaabd4bd03bfebf294a2aba934bf7fdd241780e..b986316c44e551d3b3fff553579e61e96100bf3d 100644 --- a/XEngine_Source/StorageModule_APIHelp/APIHelp_Define.h +++ b/XEngine_Source/StorageModule_APIHelp/APIHelp_Define.h @@ -83,4 +83,47 @@ extern "C" BOOL APIHelp_Distributed_RandomAddr(list* pStl_ListAddr, TCHA 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL APIHelp_Distributed_FileList(list* pStl_ListParse, XSTORAGECORE_DBFILE*** pppSt_ListPacket, int* pInt_ListCount); \ No newline at end of file +extern "C" BOOL APIHelp_Distributed_FileList(list* pStl_ListParse, XSTORAGECORE_DBFILE*** pppSt_ListPacket, int* pInt_ListCount); +/******************************************************************** +函数名称:APIHelp_Distributed_DLStorage +函数功能:通过URLKEY得到一个对应下载地址 + 参数.一:lpszMsgBuffer + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要解析的URL + 参数.二:pStl_ListBucket + In/Out:In + 类型:容器指针 + 可空:N + 意思:输入要解析的列表 + 参数.三:pSt_StorageBucket + In/Out:Out + 类型:数据结构指针 + 可空:N + 意思:输出获取到的可用存储 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" BOOL APIHelp_Distributed_DLStorage(LPCTSTR lpszMsgBuffer, list* pStl_ListBucket, XENGINE_STORAGEBUCKET* pSt_StorageBucket); +/******************************************************************** +函数名称:APIHelp_Distributed_UPStorage +函数功能:通过分布式存储列表获得一个存储地址 + 参数.一:pStl_ListBucket + In/Out:In + 类型:容器指针 + 可空:N + 意思:输入要解析的列表 + 参数.二:pSt_StorageBucket + In/Out:Out + 类型:数据结构指针 + 可空:N + 意思:输出获取到的可用存储 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" BOOL APIHelp_Distributed_UPStorage(list* pStl_ListBucket, XENGINE_STORAGEBUCKET* pSt_StorageBucket); \ No newline at end of file diff --git a/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.cpp b/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.cpp index 5df3fecad38fef0ec75afa793048643b5248c249..7de6bc0af4a31a86666a3423396852dcd19ef609 100644 --- a/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.cpp +++ b/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.cpp @@ -141,6 +141,148 @@ BOOL CAPIHelp_Distributed::APIHelp_Distributed_FileList(list *pInt_ListCount = pStl_ListParse->size(); return TRUE; } +/******************************************************************** +ƣAPIHelp_Distributed_DLStorage +ܣͨURLKEYõһӦصַ + .һlpszMsgBuffer + In/OutIn + ַָͣ + ɿգN + ˼ҪURL + .pStl_ListBucket + In/OutIn + ָͣ + ɿգN + ˼Ҫб + .pSt_StorageBucket + In/OutOut + ͣݽṹָ + ɿգN + ˼ȡĿô洢 +ֵ + ͣ߼ + ˼Ƿɹ +ע +*********************************************************************/ +BOOL CAPIHelp_Distributed::APIHelp_Distributed_DLStorage(LPCTSTR lpszMsgBuffer, list* pStl_ListBucket, XENGINE_STORAGEBUCKET* pSt_StorageBucket) +{ + APIHelp_IsErrorOccur = FALSE; + + if ((NULL == lpszMsgBuffer) || (NULL == pSt_StorageBucket)) + { + APIHelp_IsErrorOccur = TRUE; + APIHelp_dwErrorCode = ERROR_STORAGE_MODULE_APIHELP_PARAMENT; + return FALSE; + } + BOOL bFound = FALSE; + TCHAR tszKeyStr[128]; + memset(tszKeyStr, '\0', sizeof(tszKeyStr)); + //key + int i = 1; + int nLen = _tcslen(lpszMsgBuffer); + for (; i < nLen; i++) + { + if ('/' == lpszMsgBuffer[i]) + { + bFound = TRUE; + memcpy(tszKeyStr, lpszMsgBuffer + 1, i - 1); + break; + } + } + if (!bFound) + { + APIHelp_IsErrorOccur = TRUE; + APIHelp_dwErrorCode = ERROR_STORAGE_MODULE_APIHELP_NOTFOUND; + return FALSE; + } + bFound = FALSE; + //öӦ洢 + for (auto stl_ListIterator = pStl_ListBucket->begin(); stl_ListIterator != pStl_ListBucket->end(); stl_ListIterator++) + { + if (0 == _tcsncmp(tszKeyStr, stl_ListIterator->tszBuckKey, _tcslen(tszKeyStr))) + { + bFound = TRUE; + *pSt_StorageBucket = *stl_ListIterator; + break; + } + } + if (!bFound) + { + APIHelp_IsErrorOccur = TRUE; + APIHelp_dwErrorCode = ERROR_STORAGE_MODULE_APIHELP_NOTFOUND; + return FALSE; + } + _tcscpy(pSt_StorageBucket->tszFileName, lpszMsgBuffer + i); + return TRUE; +} +/******************************************************************** +ƣAPIHelp_Distributed_UPStorage +ܣֲͨʽ洢бһ洢ַ + .һpStl_ListBucket + In/OutIn + ָͣ + ɿգN + ˼Ҫб + .pSt_StorageBucket + In/OutOut + ͣݽṹָ + ɿգN + ˼ȡĿô洢 +ֵ + ͣ߼ + ˼Ƿɹ +ע +*********************************************************************/ +BOOL CAPIHelp_Distributed::APIHelp_Distributed_UPStorage(list* pStl_ListBucket, XENGINE_STORAGEBUCKET* pSt_StorageBucket) +{ + APIHelp_IsErrorOccur = FALSE; + + if ((NULL == pStl_ListBucket) || (NULL == pSt_StorageBucket)) + { + APIHelp_IsErrorOccur = TRUE; + APIHelp_dwErrorCode = ERROR_STORAGE_MODULE_APIHELP_PARAMENT; + return FALSE; + } + BOOL bFound = FALSE; + int nLastLevel = 9999; + for (auto stl_ListIterator = pStl_ListBucket->begin(); stl_ListIterator != pStl_ListBucket->end(); stl_ListIterator++) + { + //ֻõ + if (stl_ListIterator->bEnable) + { + //ȼ + if (stl_ListIterator->nLevel < nLastLevel) + { + int nListCount = 0; + __int64u nDirCount = 0; //ǰĿ¼С + CHAR** ppListFile; + SystemApi_File_EnumFile(stl_ListIterator->tszFilePath, &ppListFile, &nListCount, NULL, NULL, TRUE, 1); + for (int j = 0; j < nListCount; j++) + { + struct __stat64 st_FStat; + _stat64(ppListFile[j], &st_FStat); + nDirCount += st_FStat.st_size; + } + BaseLib_OperatorMemory_Free((XPPPMEM)&ppListFile, nListCount); + //ǰĿ¼С趨ĴС.ô + if (nDirCount >= APIHelp_Distributed_GetSize(stl_ListIterator->tszBuckSize)) + { + continue; + } + bFound = TRUE; + nLastLevel = stl_ListIterator->nLevel; + *pSt_StorageBucket = *stl_ListIterator; + } + } + } + if (!bFound) + { + APIHelp_IsErrorOccur = TRUE; + APIHelp_dwErrorCode = ERROR_STORAGE_MODULE_APIHELP_NOTFOUND; + return FALSE; + } + return TRUE; +} ////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////// @@ -199,4 +341,47 @@ BOOL CAPIHelp_Distributed::APIHelp_Distributed_FileListParse(LPCTSTR lpszMsgBuff break; } return TRUE; +} +/******************************************************************** +ƣAPIHelp_Distributed_GetSize +ܣȡ洢ôС + .һlpszMsgBuffer + In/OutIn + ַָͣ + ɿգN + ˼ҪȡĻ +ֵ + ͣ + ˼ȡĴСֽ +ע +*********************************************************************/ +__int64u CAPIHelp_Distributed::APIHelp_Distributed_GetSize(LPCTSTR lpszMsgBuffer) +{ + APIHelp_IsErrorOccur = FALSE; + + TCHAR tszSizeStr[64]; + TCHAR tszUnitStr[4]; + + memset(tszSizeStr, '\0', sizeof(tszSizeStr)); + memset(tszUnitStr, '\0', sizeof(tszUnitStr)); + //ֱõֺ͵λ + memcpy(tszSizeStr, lpszMsgBuffer, _tcslen(lpszMsgBuffer) - 2); + BaseLib_OperatorString_GetLastString(lpszMsgBuffer, 2, tszUnitStr); + + __int64u nllSize = _ttoi64(tszSizeStr); + //õλС + if (0 == _tcsncmp(tszUnitStr, _T("KB"), 2)) + { + nllSize = nllSize * 1024; + } + else if (0 == _tcsncmp(tszUnitStr, _T("MB"), 2)) + { + nllSize = nllSize * 1024 * 1024; + } + else if (0 == _tcsncmp(tszUnitStr, _T("GB"), 2)) + { + nllSize = nllSize * 1024 * 1024 * 1024; + } + + return nllSize; } \ No newline at end of file diff --git a/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.h b/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.h index 412b84c2da3b8506a9f6c14cd8d8146da7be7300..5c9d514c1d9bd50215d254a34cdcf51ae6e4dd69 100644 --- a/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.h +++ b/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.h @@ -21,7 +21,10 @@ public: BOOL APIHelp_Distributed_IsMode(list* pStl_ListMode, int nMode); BOOL APIHelp_Distributed_RandomAddr(list* pStl_ListAddr, TCHAR* ptszAddr); BOOL APIHelp_Distributed_FileList(list* pStl_ListParse, XSTORAGECORE_DBFILE*** pppSt_ListPacket, int* pInt_ListCount); + BOOL APIHelp_Distributed_DLStorage(LPCTSTR lpszMsgBuffer, list* pStl_ListBucket, XENGINE_STORAGEBUCKET* pSt_StorageBucket); + BOOL APIHelp_Distributed_UPStorage(list* pStl_ListBucket, XENGINE_STORAGEBUCKET* pSt_StorageBucket); protected: BOOL APIHelp_Distributed_FileListParse(LPCTSTR lpszMsgBuffer, int nMsgLen, XSTORAGECORE_DBFILE* pSt_DBFile); + __int64u APIHelp_Distributed_GetSize(LPCTSTR lpszMsgBuffer); private: }; \ No newline at end of file diff --git a/XEngine_Source/StorageModule_APIHelp/APIHelp_Error.h b/XEngine_Source/StorageModule_APIHelp/APIHelp_Error.h index 76d3c63b6f493b1e37043be4d132bd80758a3843..d9481cef2acb0b54306042c2ed0aa4462c6d1713 100644 --- a/XEngine_Source/StorageModule_APIHelp/APIHelp_Error.h +++ b/XEngine_Source/StorageModule_APIHelp/APIHelp_Error.h @@ -11,4 +11,5 @@ // History: *********************************************************************/ #define ERROR_STORAGE_MODULE_APIHELP_PARAMENT 0x0030001 -#define ERROR_STORAGE_MODULE_APIHELP_PARSE 0x0030002 \ No newline at end of file +#define ERROR_STORAGE_MODULE_APIHELP_PARSE 0x0030002 +#define ERROR_STORAGE_MODULE_APIHELP_NOTFOUND 0x0030003 \ No newline at end of file diff --git a/XEngine_Source/StorageModule_APIHelp/StorageModule_APIHelp.def b/XEngine_Source/StorageModule_APIHelp/StorageModule_APIHelp.def index a7da63c5e7a250bd8b7a6b3e3ad931af32794ed9..1f0e8e6445fa78cdc403f1136dfdb5d2ff8a96b9 100644 --- a/XEngine_Source/StorageModule_APIHelp/StorageModule_APIHelp.def +++ b/XEngine_Source/StorageModule_APIHelp/StorageModule_APIHelp.def @@ -5,4 +5,6 @@ EXPORTS APIHelp_Distributed_IsMode APIHelp_Distributed_RandomAddr - APIHelp_Distributed_FileList \ No newline at end of file + APIHelp_Distributed_FileList + APIHelp_Distributed_DLStorage + APIHelp_Distributed_UPStorage \ No newline at end of file diff --git a/XEngine_Source/StorageModule_APIHelp/StorageModule_APIHelp.vcxproj b/XEngine_Source/StorageModule_APIHelp/StorageModule_APIHelp.vcxproj index ec3d4d2ac5d9659e34438c81ded48762b90e2ea0..b480b95279adaa4c247151722752295e9fe2f3ae 100644 --- a/XEngine_Source/StorageModule_APIHelp/StorageModule_APIHelp.vcxproj +++ b/XEngine_Source/StorageModule_APIHelp/StorageModule_APIHelp.vcxproj @@ -73,12 +73,12 @@ true $(XEngine_Include);$(IncludePath) - $(XEngine_Library);$(LibraryPath) + $(XEngine_Lib32);$(LibraryPath) false $(XEngine_Include);$(IncludePath) - $(XEngine_Library);$(LibraryPath) + $(XEngine_Lib32);$(LibraryPath) true @@ -86,7 +86,7 @@ false $(XEngine_Include);$(IncludePath) - $(XEngine_Library);$(LibraryPath) + $(XEngine_Lib64);$(LibraryPath) diff --git a/XEngine_Source/StorageModule_APIHelp/pch.cpp b/XEngine_Source/StorageModule_APIHelp/pch.cpp index 2a8951f60b6817c657513a3d3a43b59f040ec442..c792feb4feef628ae9622b05f27a6cec472cf751 100644 --- a/XEngine_Source/StorageModule_APIHelp/pch.cpp +++ b/XEngine_Source/StorageModule_APIHelp/pch.cpp @@ -40,4 +40,12 @@ extern "C" BOOL APIHelp_Distributed_RandomAddr(list*pStl_ListAddr, TCHAR extern "C" BOOL APIHelp_Distributed_FileList(list*pStl_ListParse, XSTORAGECORE_DBFILE * **pppSt_ListPacket, int* pInt_ListCount) { return m_APIDistributed.APIHelp_Distributed_FileList(pStl_ListParse, pppSt_ListPacket, pInt_ListCount); +} +extern "C" BOOL APIHelp_Distributed_DLStorage(LPCTSTR lpszMsgBuffer, list*pStl_ListBucket, XENGINE_STORAGEBUCKET * pSt_StorageBucket) +{ + return m_APIDistributed.APIHelp_Distributed_DLStorage(lpszMsgBuffer, pStl_ListBucket, pSt_StorageBucket); +} +extern "C" BOOL APIHelp_Distributed_UPStorage(list*pStl_ListBucket, XENGINE_STORAGEBUCKET * pSt_StorageBucket) +{ + return m_APIDistributed.APIHelp_Distributed_UPStorage(pStl_ListBucket, pSt_StorageBucket); } \ No newline at end of file diff --git a/XEngine_Source/StorageModule_APIHelp/pch.h b/XEngine_Source/StorageModule_APIHelp/pch.h index 2b5a016d0a063d65da3cf894ef632e452acc5f71..88adabbec4cf9373bf8a2391724f364f6fb8bd87 100644 --- a/XEngine_Source/StorageModule_APIHelp/pch.h +++ b/XEngine_Source/StorageModule_APIHelp/pch.h @@ -18,6 +18,9 @@ #else #include #endif +#include +#include +#include #endif #endif //PCH_H #include @@ -32,7 +35,11 @@ using namespace std; #include #include #include +#include +#include +#include #include "../XStorage_Protocol.h" +#include "../StorageModule_Config/Config_Define.h" #include "../XEngine_StorageComponents/XStorage_SQLPacket/SQLPacket_Define.h" #include "APIHelp_Define.h" #include "APIHelp_Error.h" @@ -51,9 +58,6 @@ extern BOOL APIHelp_IsErrorOccur; extern DWORD APIHelp_dwErrorCode; #ifdef _WINDOWS -#ifdef _WIN64 -#pragma comment(lib,"x64/XEngine_BaseLib/XEngine_BaseLib") -#else -#pragma comment(lib,"x86/XEngine_BaseLib/XEngine_BaseLib") -#endif +#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib") +#pragma comment(lib,"XEngine_SystemSdk/XEngine_SystemApi") #endif \ No newline at end of file diff --git a/XEngine_Source/StorageModule_Config/Config_Define.h b/XEngine_Source/StorageModule_Config/Config_Define.h index 3753a669aa563a85a18155bbc33e98a9e8ece213..de323a460db239dc19a33f875a1e3975ebb358a0 100644 --- a/XEngine_Source/StorageModule_Config/Config_Define.h +++ b/XEngine_Source/StorageModule_Config/Config_Define.h @@ -66,7 +66,6 @@ typedef struct tag_XEngine_ServerConfig BOOL bResumable; BOOL bUPHash; int nHashMode; - TCHAR tszFileDir[MAX_PATH]; }st_XStorage; struct { @@ -112,9 +111,18 @@ typedef struct tag_XEngine_ServerConfig list *pStl_ListStorage; }st_XVer; }XENGINE_SERVERCONFIG; + +typedef struct +{ + TCHAR tszFilePath[MAX_PATH]; + TCHAR tszFileName[MAX_PATH]; + TCHAR tszBuckKey[128]; + TCHAR tszBuckSize[64]; + int nLevel; + BOOL bEnable; +}XENGINE_STORAGEBUCKET; typedef struct { - TCHAR tszIPAddr[128]; BOOL bDistributed; struct { @@ -126,6 +134,7 @@ typedef struct list* pStl_ListCenter; list* pStl_ListDownload; list* pStl_ListUPLoader; + list* pStl_ListBucket; }st_LoadBalance; }XENGINE_LBCONFIG; ////////////////////////////////////////////////////////////////////////// diff --git a/XEngine_Source/StorageModule_Config/Config_Json/Config_Json.cpp b/XEngine_Source/StorageModule_Config/Config_Json/Config_Json.cpp index e96211fae028491a95a44ecc21f50e8f0f7075f8..27a639af60348ecae3c3ea7ae5d04db916c6833e 100644 --- a/XEngine_Source/StorageModule_Config/Config_Json/Config_Json.cpp +++ b/XEngine_Source/StorageModule_Config/Config_Json/Config_Json.cpp @@ -143,7 +143,7 @@ BOOL CConfig_Json::Config_Json_File(LPCTSTR lpszConfigFile, XENGINE_SERVERCONFIG _tcscpy(pSt_ServerConfig->st_XSql.tszSQLPass, st_JsonXSql["SQLPass"].asCString()); _tcscpy(pSt_ServerConfig->st_XSql.tszSQLFile, st_JsonXSql["SQLFile"].asCString()); - if (st_JsonRoot["XStorage"].empty() || (4 != st_JsonRoot["XStorage"].size())) + if (st_JsonRoot["XStorage"].empty() || (3 != st_JsonRoot["XStorage"].size())) { Config_IsErrorOccur = TRUE; Config_dwErrorCode = ERROR_XENGINE_BLOGIC_CONFIG_JSON_XSTORAGE; @@ -153,7 +153,6 @@ BOOL CConfig_Json::Config_Json_File(LPCTSTR lpszConfigFile, XENGINE_SERVERCONFIG pSt_ServerConfig->st_XStorage.nHashMode = st_JsonXStorage["nHashMode"].asInt(); pSt_ServerConfig->st_XStorage.bUPHash = st_JsonXStorage["bUPHash"].asInt(); pSt_ServerConfig->st_XStorage.bResumable = st_JsonXStorage["bResumable"].asInt(); - _tcscpy(pSt_ServerConfig->st_XStorage.tszFileDir, st_JsonXStorage["tszFileDir"].asCString()); if (st_JsonRoot["XProxy"].empty() || (2 != st_JsonRoot["XProxy"].size())) { @@ -292,7 +291,6 @@ BOOL CConfig_Json::Config_Json_LoadBalance(LPCTSTR lpszConfigFile, XENGINE_LBCON Config_dwErrorCode = ERROR_XENGINE_BLOGIC_CONFIG_JSON_PARSE; return FALSE; } - _tcscpy(pSt_ServerConfig->tszIPAddr, st_JsonRoot["tszIPAddr"].asCString()); pSt_ServerConfig->bDistributed = st_JsonRoot["bDistributed"].asInt(); if (st_JsonRoot["LBConfig"].empty() || (1 != st_JsonRoot["LBConfig"].size())) @@ -304,7 +302,7 @@ BOOL CConfig_Json::Config_Json_LoadBalance(LPCTSTR lpszConfigFile, XENGINE_LBCON Json::Value st_JsonLBConfig = st_JsonRoot["LBConfig"]; pSt_ServerConfig->st_LBConfig.nServerMode = st_JsonLBConfig["nUseMode"].asInt(); - if (st_JsonRoot["LoadBalance"].empty() || (4 != st_JsonRoot["LoadBalance"].size())) + if (st_JsonRoot["LoadBalance"].empty() || (5 != st_JsonRoot["LoadBalance"].size())) { Config_IsErrorOccur = TRUE; Config_dwErrorCode = ERROR_XENGINE_BLOGIC_CONFIG_JSON_LAODBALANCE; @@ -317,20 +315,39 @@ BOOL CConfig_Json::Config_Json_LoadBalance(LPCTSTR lpszConfigFile, XENGINE_LBCON { pSt_ServerConfig->st_LoadBalance.pStl_ListUseMode->push_back(st_JsonLoadBalance["nUseMode"][i].asInt()); } + pSt_ServerConfig->st_LoadBalance.pStl_ListCenter = new list; for (unsigned int i = 0; i < st_JsonLoadBalance["CenterAddr"].size(); i++) { pSt_ServerConfig->st_LoadBalance.pStl_ListCenter->push_back(st_JsonLoadBalance["CenterAddr"][i].asCString()); } + pSt_ServerConfig->st_LoadBalance.pStl_ListDownload = new list; for (unsigned int i = 0; i < st_JsonLoadBalance["DownloadAddr"].size(); i++) { pSt_ServerConfig->st_LoadBalance.pStl_ListDownload->push_back(st_JsonLoadBalance["DownloadAddr"][i].asCString()); } + pSt_ServerConfig->st_LoadBalance.pStl_ListUPLoader = new list; for (unsigned int i = 0; i < st_JsonLoadBalance["UPLoaderAddr"].size(); i++) { pSt_ServerConfig->st_LoadBalance.pStl_ListUPLoader->push_back(st_JsonLoadBalance["UPLoaderAddr"][i].asCString()); } + + Json::Value st_JsonBucket = st_JsonLoadBalance["StorageAddr"]; + pSt_ServerConfig->st_LoadBalance.pStl_ListBucket = new list; + for (unsigned int i = 0; i < st_JsonBucket.size(); i++) + { + XENGINE_STORAGEBUCKET st_Bucket; + memset(&st_Bucket, '\0', sizeof(XENGINE_STORAGEBUCKET)); + + st_Bucket.bEnable = st_JsonBucket[i]["bEnable"].asInt(); + st_Bucket.nLevel = st_JsonBucket[i]["nLevel"].asInt(); + _tcscpy(st_Bucket.tszBuckSize, st_JsonBucket[i]["Size"].asCString()); + _tcscpy(st_Bucket.tszBuckKey, st_JsonBucket[i]["XEngine_Key"].asCString()); + _tcscpy(st_Bucket.tszFilePath, st_JsonBucket[i]["XEngine_Path"].asCString()); + + pSt_ServerConfig->st_LoadBalance.pStl_ListBucket->push_back(st_Bucket); + } return TRUE; } \ No newline at end of file diff --git a/XEngine_Source/StorageModule_Config/StorageModule_Config.vcxproj b/XEngine_Source/StorageModule_Config/StorageModule_Config.vcxproj index 5c248c3df534c642521d1697b71ad31ca8f8d06d..65c20d35d9185a76380680add2aaf1a0a803519a 100644 --- a/XEngine_Source/StorageModule_Config/StorageModule_Config.vcxproj +++ b/XEngine_Source/StorageModule_Config/StorageModule_Config.vcxproj @@ -114,6 +114,7 @@ Use pch.h MultiThreaded + 4819 Windows diff --git a/XEngine_Source/StorageModule_Protocol/Protocol_Packet/Protocol_StoragePacket.cpp b/XEngine_Source/StorageModule_Protocol/Protocol_Packet/Protocol_StoragePacket.cpp index 694f000b7b39c568c80d29ea83888cc5c632e93d..c8e4915aa65bafe22c9b2436ad6076c37c3cb5d0 100644 --- a/XEngine_Source/StorageModule_Protocol/Protocol_Packet/Protocol_StoragePacket.cpp +++ b/XEngine_Source/StorageModule_Protocol/Protocol_Packet/Protocol_StoragePacket.cpp @@ -45,17 +45,12 @@ CProtocol_StoragePacket::~CProtocol_StoragePacket() 类型:整数型 可空:N 意思:输入文件列表个数 - 参数.五:lpszRootDir - In/Out:In - 类型:常量字符指针 - 可空:Y - 意思:某些时候可能需要跳过字符串 - 参数.六:lpszTimeStart + 参数.五:lpszTimeStart In/Out:In 类型:常量字符指针 可空:Y 意思:输入查询请求的开始时间 - 参数.七:lpszTimeEnd + 参数.六:lpszTimeEnd In/Out:In 类型:常量字符指针 可空:Y @@ -65,7 +60,7 @@ CProtocol_StoragePacket::~CProtocol_StoragePacket() 意思:是否成功 备注: *********************************************************************/ -BOOL CProtocol_StoragePacket::Protocol_StoragePacket_QueryFile(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XSTORAGECORE_DBFILE*** pppSt_DBFile, int nListCount, LPCTSTR lpszRootDir, LPCTSTR lpszTimeStart, LPCTSTR lpszTimeEnd) +BOOL CProtocol_StoragePacket::Protocol_StoragePacket_QueryFile(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XSTORAGECORE_DBFILE*** pppSt_DBFile, int nListCount, LPCTSTR lpszTimeStart, LPCTSTR lpszTimeEnd) { Protocol_IsErrorOccur = FALSE; @@ -82,21 +77,8 @@ BOOL CProtocol_StoragePacket::Protocol_StoragePacket_QueryFile(TCHAR* ptszMsgBuf { Json::Value st_JsonObject; - if (NULL == lpszRootDir) - { - st_JsonObject["tszFilePath"] = (*pppSt_DBFile)[i]->st_ProtocolFile.tszFilePath; - } - else - { - if (NULL == _tcsstr((*pppSt_DBFile)[i]->st_ProtocolFile.tszFilePath, lpszRootDir)) - { - st_JsonObject["tszFilePath"] = (*pppSt_DBFile)[i]->st_ProtocolFile.tszFilePath; - } - else - { - st_JsonObject["tszFilePath"] = (*pppSt_DBFile)[i]->st_ProtocolFile.tszFilePath + _tcslen(lpszRootDir); - } - } + st_JsonObject["tszBuckKey"] = (*pppSt_DBFile)[i]->tszBuckKey; + st_JsonObject["tszFilePath"] = (*pppSt_DBFile)[i]->st_ProtocolFile.tszFilePath; st_JsonObject["tszFileName"] = (*pppSt_DBFile)[i]->st_ProtocolFile.tszFileName; st_JsonObject["tszFileUser"] = (*pppSt_DBFile)[i]->st_ProtocolFile.tszFileUser; st_JsonObject["tszFileHash"] = (*pppSt_DBFile)[i]->st_ProtocolFile.tszFileHash; diff --git a/XEngine_Source/StorageModule_Protocol/Protocol_Packet/Protocol_StoragePacket.h b/XEngine_Source/StorageModule_Protocol/Protocol_Packet/Protocol_StoragePacket.h index 909515ce00afa36dadfcc325a9f14bf0ac8a33cb..99e54fc812f95935be7f5d4f2c7a6aa969b2dd61 100644 --- a/XEngine_Source/StorageModule_Protocol/Protocol_Packet/Protocol_StoragePacket.h +++ b/XEngine_Source/StorageModule_Protocol/Protocol_Packet/Protocol_StoragePacket.h @@ -17,7 +17,7 @@ public: CProtocol_StoragePacket(); ~CProtocol_StoragePacket(); public: - BOOL Protocol_StoragePacket_QueryFile(TCHAR *ptszMsgBuffer, int *pInt_MsgLen, XSTORAGECORE_DBFILE*** pppSt_DBFile, int nListCount, LPCTSTR lpszRootDir, LPCTSTR lpszTimeStart = NULL, LPCTSTR lpszTimeEnd = NULL); + BOOL Protocol_StoragePacket_QueryFile(TCHAR *ptszMsgBuffer, int *pInt_MsgLen, XSTORAGECORE_DBFILE*** pppSt_DBFile, int nListCount, LPCTSTR lpszTimeStart = NULL, LPCTSTR lpszTimeEnd = NULL); BOOL Protocol_StoragePacket_Info(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, SESSION_STORAGEINFO*** pppSt_DLInfo, SESSION_STORAGEINFO*** pppSt_UPInfo, int nDLCount, int nUPCount); BOOL Protocol_StoragePacket_DirOperator(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, TCHAR*** pppszListEnum, int nListCount); BOOL Protocol_StoragePacket_BasicAuth(LPCTSTR lpszMethod, LPCTSTR lpszPostUrl, LPCTSTR lpszClientAddr, LPCTSTR lpszUser, LPCTSTR lpszPass, TCHAR* ptszMsgBuffer, int* pInt_MsgLen); diff --git a/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_P2XPParse.h b/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_P2XPParse.h index 21c78634f066489bbcdeb6ddb74866e0b3bf8abd..d8f266c6837b4fd2429cf596ed13b0f70f014027 100644 --- a/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_P2XPParse.h +++ b/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_P2XPParse.h @@ -21,7 +21,6 @@ public: BOOL Protocol_P2XPParse_List(LPCTSTR lpszMsgBuffer, int nMsgLen, TCHAR* ptszPubAddr, TCHAR* ptszPriAddr); BOOL Protocol_P2XPParse_User(LPCTSTR lpszMsgBuffer, int nMsgLen, TCHAR* ptszUserName); BOOL Protocol_P2XPParse_Connect(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_P2XPIO_PROTOCOL* pSt_IOProtocol); - protected: private: }; diff --git a/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.cpp b/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.cpp index c4a296cdf14bea04836f5d4f7361e262c158aa6c..91e70f9e526c46e8ba2c8fabb03f7ca7a001693b 100644 --- a/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.cpp +++ b/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.cpp @@ -40,22 +40,27 @@ CProtocol_StorageParse::~CProtocol_StorageParse() 类型:字符指针 可空:N 意思:查询结束时间 - 参数.四:ptszFileName + 参数.四:ptszPathKey In/Out:Out 类型:字符指针 - 可空:N + 可空:Y + 意思:输出文件所属BUCKET + 参数.五:ptszFileName + In/Out:Out + 类型:字符指针 + 可空:Y 意思:查询的文件名 - 参数.五:ptszFileHash + 参数.六:ptszFileHash In/Out:Out 类型:字符指针 - 可空:N + 可空:Y 意思:查询的文件HASH 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -BOOL CProtocol_StorageParse::Protocol_StorageParse_QueryFile(LPCTSTR lpszMsgBuffer, TCHAR *ptszTimeStart, TCHAR *ptszTimeEnd, TCHAR *ptszFileName /* = NULL */, TCHAR * ptszFileHash /* = NULL */) +BOOL CProtocol_StorageParse::Protocol_StorageParse_QueryFile(LPCTSTR lpszMsgBuffer, TCHAR* ptszTimeStart, TCHAR* ptszTimeEnd, TCHAR* ptszPathKey /* = NULL */, TCHAR* ptszFileName /* = NULL */, TCHAR* ptszFileHash /* = NULL */) { Protocol_IsErrorOccur = FALSE; @@ -108,6 +113,13 @@ BOOL CProtocol_StorageParse::Protocol_StorageParse_QueryFile(LPCTSTR lpszMsgBuff _tcscpy(ptszFileHash, st_JsonRoot["lpszFileHash"].asCString()); } } + if (NULL != ptszPathKey) + { + if (!st_JsonRoot["lpszBuckKey"].isNull()) + { + _tcscpy(ptszPathKey, st_JsonRoot["lpszBuckKey"].asCString()); + } + } return TRUE; } /******************************************************************** @@ -209,7 +221,12 @@ BOOL CProtocol_StorageParse::Protocol_StorageParse_ReportFile(LPCTSTR lpszMsgBuf 类型:字符指针 可空:N 意思:导出获取到的文件夹 - 参数.三:pInt_Operator + 参数.三:ptszBuckKey + In/Out:Out + 类型:字符指针 + 可空:N + 意思:导出桶的KEY + 参数.四:pInt_Operator In/Out:Out 类型:整数型指针 可空:N @@ -219,7 +236,7 @@ BOOL CProtocol_StorageParse::Protocol_StorageParse_ReportFile(LPCTSTR lpszMsgBuf 意思:是否成功 备注: *********************************************************************/ -BOOL CProtocol_StorageParse::Protocol_StorageParse_DirOperator(LPCTSTR lpszMsgBuffer, TCHAR* ptszUserDir, int* pInt_Operator) +BOOL CProtocol_StorageParse::Protocol_StorageParse_DirOperator(LPCTSTR lpszMsgBuffer, TCHAR* ptszUserDir, TCHAR* ptszBuckKey, int* pInt_Operator) { Protocol_IsErrorOccur = FALSE; @@ -246,6 +263,7 @@ BOOL CProtocol_StorageParse::Protocol_StorageParse_DirOperator(LPCTSTR lpszMsgBu *pInt_Operator = st_JsonRoot["nOPerator"].asInt(); _tcscpy(ptszUserDir, st_JsonRoot["lpszUserDir"].asCString()); + _tcscpy(ptszBuckKey, st_JsonRoot["lpszBuckKey"].asCString()); return TRUE; } /******************************************************************** @@ -266,17 +284,22 @@ BOOL CProtocol_StorageParse::Protocol_StorageParse_DirOperator(LPCTSTR lpszMsgBu 类型:字符指针 可空:N 意思:输出文件客户端地址 - 参数.四:ptszFileName + 参数.四:ptszPathKey + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出路径的KEY + 参数.五:ptszFileName In/Out:Out 类型:字符指针 可空:N 意思:输出文件名称 - 参数.五:ptszFileHash + 参数.六:ptszFileHash In/Out:Out 类型:字符指针 可空:N 意思:输出文件HASH - 参数.六:pInt_FileSize + 参数.七:pInt_FileSize In/Out:Out 类型:整数型 可空:N @@ -286,7 +309,7 @@ BOOL CProtocol_StorageParse::Protocol_StorageParse_DirOperator(LPCTSTR lpszMsgBu 意思:是否成功 备注: *********************************************************************/ -BOOL CProtocol_StorageParse::Protocol_StorageParse_ProxyNotify(LPCTSTR lpszMsgBuffer, int nMsgLen, TCHAR* ptszClientAddr, TCHAR* ptszFileName, TCHAR* ptszFileHash, __int64x* pInt_FileSize) +BOOL CProtocol_StorageParse::Protocol_StorageParse_ProxyNotify(LPCTSTR lpszMsgBuffer, int nMsgLen, TCHAR* ptszClientAddr, TCHAR* ptszPathKey, TCHAR* ptszFileName, TCHAR* ptszFileHash, __int64x* pInt_FileSize) { Protocol_IsErrorOccur = FALSE; @@ -314,6 +337,7 @@ BOOL CProtocol_StorageParse::Protocol_StorageParse_ProxyNotify(LPCTSTR lpszMsgBu _tcscpy(ptszClientAddr, st_JsonRoot["lpszClientAddr"].asCString()); _tcscpy(ptszFileName, st_JsonRoot["lpszFileName"].asCString()); _tcscpy(ptszFileHash, st_JsonRoot["lpszFileHash"].asCString()); + _tcscpy(ptszPathKey, st_JsonRoot["lpszPathKey"].asCString()); *pInt_FileSize = st_JsonRoot["nFileSize"].asInt64(); return TRUE; diff --git a/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.h b/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.h index f145fb7e85d2f4900d2d7b8abbe6171ba82e1d8c..bea9049cf2162e4987fb6572f710af38a9b02487 100644 --- a/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.h +++ b/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.h @@ -17,8 +17,8 @@ public: CProtocol_StorageParse(); ~CProtocol_StorageParse(); public: - BOOL Protocol_StorageParse_QueryFile(LPCTSTR lpszMsgBuffer, TCHAR *ptszTimeStart, TCHAR *ptszTimeEnd, TCHAR *ptszFileName = NULL, TCHAR * ptszFileHash = NULL); + BOOL Protocol_StorageParse_QueryFile(LPCTSTR lpszMsgBuffer, TCHAR* ptszTimeStart, TCHAR* ptszTimeEnd, TCHAR* ptszPathKey = NULL, TCHAR* ptszFileName = NULL, TCHAR* ptszFileHash = NULL); BOOL Protocol_StorageParse_ReportFile(LPCTSTR lpszMsgBuffer, int nMsgLen, XSTORAGECORE_DBFILE*** pppSt_DBFile, int* pInt_ListCount); - BOOL Protocol_StorageParse_DirOperator(LPCTSTR lpszMsgBuffer, TCHAR* ptszUserDir, int* pInt_Operator); - BOOL Protocol_StorageParse_ProxyNotify(LPCTSTR lpszMsgBuffer, int nMsgLen, TCHAR* ptszClientAddr, TCHAR* ptszFileName, TCHAR* ptszFileHash, __int64x* pInt_FileSize); + BOOL Protocol_StorageParse_DirOperator(LPCTSTR lpszMsgBuffer, TCHAR* ptszUserDir, TCHAR* ptszBuckKey, int* pInt_Operator); + BOOL Protocol_StorageParse_ProxyNotify(LPCTSTR lpszMsgBuffer, int nMsgLen, TCHAR* ptszClientAddr, TCHAR* ptszPathKey, TCHAR* ptszFileName, TCHAR* ptszFileHash, __int64x* pInt_FileSize); }; diff --git a/XEngine_Source/StorageModule_Protocol/StorageProtocol_Define.h b/XEngine_Source/StorageModule_Protocol/StorageProtocol_Define.h index 586d7cec0ae7b5bf72e5fe94bd15ff94712a8e84..fc3e08fd0e9811ba4e7035539975cb4c5469a80c 100644 --- a/XEngine_Source/StorageModule_Protocol/StorageProtocol_Define.h +++ b/XEngine_Source/StorageModule_Protocol/StorageProtocol_Define.h @@ -136,17 +136,22 @@ extern "C" BOOL Protocol_P2XPParse_Connect(LPCTSTR lpszMsgBuffer, int nMsgLen, X 类型:字符指针 可空:N 意思:输出文件客户端地址 - 参数.四:ptszFileName + 参数.四:ptszPathKey + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出路径的KEY + 参数.五:ptszFileName In/Out:Out 类型:字符指针 可空:N 意思:输出文件名称 - 参数.五:ptszFileHash + 参数.六:ptszFileHash In/Out:Out 类型:字符指针 可空:N 意思:输出文件HASH - 参数.六:pInt_FileSize + 参数.七:pInt_FileSize In/Out:Out 类型:整数型 可空:N @@ -156,7 +161,7 @@ extern "C" BOOL Protocol_P2XPParse_Connect(LPCTSTR lpszMsgBuffer, int nMsgLen, X 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL Protocol_StorageParse_ProxyNotify(LPCTSTR lpszMsgBuffer, int nMsgLen, TCHAR * ptszClientAddr, TCHAR * ptszFileName, TCHAR * ptszFileHash, __int64x * pInt_FileSize); +extern "C" BOOL Protocol_StorageParse_ProxyNotify(LPCTSTR lpszMsgBuffer, int nMsgLen, TCHAR * ptszClientAddr, TCHAR * ptszPathKey, TCHAR * ptszFileName, TCHAR * ptszFileHash, __int64x * pInt_FileSize); /******************************************************************** 函数名称:Protocol_StorageParse_QueryFile 函数功能:文件查询请求解析函数 @@ -190,7 +195,7 @@ extern "C" BOOL Protocol_StorageParse_ProxyNotify(LPCTSTR lpszMsgBuffer, int nMs 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL Protocol_StorageParse_QueryFile(LPCSTR lpszMsgBuffer, CHAR * ptszTimeStart, CHAR * ptszTimeEnd, CHAR * ptszFileName = NULL, CHAR * ptszFileHash = NULL); +extern "C" BOOL Protocol_StorageParse_QueryFile(LPCSTR lpszMsgBuffer, CHAR * ptszTimeStart, CHAR * ptszTimeEnd, CHAR * ptszPathKey = NULL, CHAR * ptszFileName = NULL, CHAR * ptszFileHash = NULL); /******************************************************************** 函数名称:Protocol_StorageParse_ReportFile 函数功能:解析文件报告协议 @@ -233,7 +238,12 @@ extern "C" BOOL Protocol_StorageParse_ReportFile(LPCTSTR lpszMsgBuffer, int nMsg 类型:字符指针 可空:N 意思:导出获取到的文件夹 - 参数.三:pInt_Operator + 参数.三:ptszBuckKey + In/Out:Out + 类型:字符指针 + 可空:N + 意思:导出桶的KEY + 参数.四:pInt_Operator In/Out:Out 类型:整数型指针 可空:N @@ -243,7 +253,7 @@ extern "C" BOOL Protocol_StorageParse_ReportFile(LPCTSTR lpszMsgBuffer, int nMsg 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL Protocol_StorageParse_DirOperator(LPCSTR lpszMsgBuffer, CHAR * ptszUserDir, int* pInt_Operator); +extern "C" BOOL Protocol_StorageParse_DirOperator(LPCSTR lpszMsgBuffer, CHAR * ptszUserDir, TCHAR * ptszBuckKey, int* pInt_Operator); /************************************************************************/ /* 打包协议导出 */ /************************************************************************/ @@ -537,17 +547,12 @@ extern "C" BOOL Protocol_StoragePacket_UPDown(LPCTSTR lpszFileName, LPCTSTR lpsz 类型:整数型 可空:N 意思:输入文件列表个数 - 参数.五:lpszRootDir - In/Out:In - 类型:常量字符指针 - 可空:Y - 意思:某些时候可能需要跳过字符串 - 参数.六:lpszTimeStart + 参数.五:lpszTimeStart In/Out:In 类型:常量字符指针 可空:Y 意思:输入查询请求的开始时间 - 参数.七:lpszTimeEnd + 参数.六:lpszTimeEnd In/Out:In 类型:常量字符指针 可空:Y @@ -557,7 +562,7 @@ extern "C" BOOL Protocol_StoragePacket_UPDown(LPCTSTR lpszFileName, LPCTSTR lpsz 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL Protocol_StoragePacket_QueryFile(CHAR * ptszMsgBuffer, int* pInt_MsgLen, XSTORAGECORE_DBFILE * **pppSt_DBFile, int nListCount, LPCTSTR lpszRootDir, LPCSTR lpszTimeStart = NULL, LPCSTR lpszTimeEnd = NULL); +extern "C" BOOL Protocol_StoragePacket_QueryFile(CHAR * ptszMsgBuffer, int* pInt_MsgLen, XSTORAGECORE_DBFILE * **pppSt_DBFile, int nListCount, LPCSTR lpszTimeStart = NULL, LPCSTR lpszTimeEnd = NULL); /******************************************************************** 函数名称:Protocol_StoragePacket_Info 函数功能:返回信息获取请求打包函数 diff --git a/XEngine_Source/StorageModule_Protocol/pch.cpp b/XEngine_Source/StorageModule_Protocol/pch.cpp index dcdc7a11c94713836c129b2dd77e9860d21597de..72151045227abbd666ab51e0ddeff2ccd41e8346 100644 --- a/XEngine_Source/StorageModule_Protocol/pch.cpp +++ b/XEngine_Source/StorageModule_Protocol/pch.cpp @@ -50,21 +50,21 @@ extern "C" BOOL Protocol_P2XPParse_Connect(LPCTSTR lpszMsgBuffer, int nMsgLen, X return m_P2XPParse.Protocol_P2XPParse_Connect(lpszMsgBuffer, nMsgLen, pSt_IOProtocol); } ////////////////////////////////////////////////////////////////////////// -extern "C" BOOL Protocol_StorageParse_ProxyNotify(LPCTSTR lpszMsgBuffer, int nMsgLen, TCHAR * ptszClientAddr, TCHAR * ptszFileName, TCHAR * ptszFileHash, __int64x * pInt_FileSize) +extern "C" BOOL Protocol_StorageParse_ProxyNotify(LPCTSTR lpszMsgBuffer, int nMsgLen, TCHAR * ptszClientAddr, TCHAR * ptszPathKey, TCHAR * ptszFileName, TCHAR * ptszFileHash, __int64x * pInt_FileSize) { - return m_StorageParse.Protocol_StorageParse_ProxyNotify(lpszMsgBuffer, nMsgLen, ptszClientAddr, ptszFileName, ptszFileHash, pInt_FileSize); + return m_StorageParse.Protocol_StorageParse_ProxyNotify(lpszMsgBuffer, nMsgLen, ptszClientAddr, ptszPathKey, ptszFileName, ptszFileHash, pInt_FileSize); } -extern "C" BOOL Protocol_StorageParse_QueryFile(LPCTSTR lpszMsgBuffer, TCHAR * ptszTimeStart, TCHAR * ptszTimeEnd, TCHAR * ptszFileName, TCHAR * ptszFileHash) +extern "C" BOOL Protocol_StorageParse_QueryFile(LPCTSTR lpszMsgBuffer, TCHAR * ptszTimeStart, TCHAR * ptszTimeEnd, CHAR * ptszPathKey, TCHAR * ptszFileName, TCHAR * ptszFileHash) { - return m_StorageParse.Protocol_StorageParse_QueryFile(lpszMsgBuffer, ptszTimeStart, ptszTimeEnd, ptszFileName, ptszFileHash); + return m_StorageParse.Protocol_StorageParse_QueryFile(lpszMsgBuffer, ptszTimeStart, ptszTimeEnd, ptszPathKey, ptszFileName, ptszFileHash); } extern "C" BOOL Protocol_StorageParse_ReportFile(LPCTSTR lpszMsgBuffer, int nMsgLen, XSTORAGECORE_DBFILE * **pppSt_DBFile, int* pInt_ListCount) { return m_StorageParse.Protocol_StorageParse_ReportFile(lpszMsgBuffer, nMsgLen, pppSt_DBFile, pInt_ListCount); } -extern "C" BOOL Protocol_StorageParse_DirOperator(LPCTSTR lpszMsgBuffer, TCHAR * ptszUserDir, int* pInt_Operator) +extern "C" BOOL Protocol_StorageParse_DirOperator(LPCTSTR lpszMsgBuffer, TCHAR * ptszUserDir, TCHAR * ptszBuckKey, int* pInt_Operator) { - return m_StorageParse.Protocol_StorageParse_DirOperator(lpszMsgBuffer, ptszUserDir, pInt_Operator); + return m_StorageParse.Protocol_StorageParse_DirOperator(lpszMsgBuffer, ptszUserDir, ptszBuckKey, pInt_Operator); } /************************************************************************/ /* 打包协议导出 */ @@ -102,9 +102,9 @@ extern "C" BOOL Protocol_StoragePacket_UPDown(LPCTSTR lpszFileName, LPCTSTR lpsz { return m_StoragePacket.Protocol_StoragePacket_UPDown(lpszFileName, lpszClientAddr, nFileSize, ptszMsgBuffer, pInt_MsgLen, lpszFileHash); } -extern "C" BOOL Protocol_StoragePacket_QueryFile(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, XSTORAGECORE_DBFILE * **pppSt_DBFile, int nListCount, LPCTSTR lpszRootDir, LPCTSTR lpszTimeStart, LPCTSTR lpszTimeEnd) +extern "C" BOOL Protocol_StoragePacket_QueryFile(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, XSTORAGECORE_DBFILE * **pppSt_DBFile, int nListCount, LPCTSTR lpszTimeStart, LPCTSTR lpszTimeEnd) { - return m_StoragePacket.Protocol_StoragePacket_QueryFile(ptszMsgBuffer, pInt_MsgLen, pppSt_DBFile, nListCount, lpszRootDir, lpszTimeStart, lpszTimeEnd); + return m_StoragePacket.Protocol_StoragePacket_QueryFile(ptszMsgBuffer, pInt_MsgLen, pppSt_DBFile, nListCount, lpszTimeStart, lpszTimeEnd); } extern "C" BOOL Protocol_StoragePacket_Info(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, SESSION_STORAGEINFO * **pppSt_DLInfo, SESSION_STORAGEINFO * **pppSt_UPInfo, int nDLCount, int nUPCount) { diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp b/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp index 5e469f0517cca5577e10430e94d19ab90c86b560..102b81f53ea732a715c7b785fbe91ef23e9f431d 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp @@ -166,7 +166,15 @@ BOOL XEngine_Task_HttpDownload(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in nPosEnd = 0; } } - _stprintf(tszFileDir, _T("%s%s"), st_ServiceCfg.st_XStorage.tszFileDir, pSt_HTTPParam->tszHttpUri); + XENGINE_STORAGEBUCKET st_StorageBucket; + memset(&st_StorageBucket, '\0', sizeof(XENGINE_STORAGEBUCKET)); + //分布式存储 + if (!APIHelp_Distributed_DLStorage(pSt_HTTPParam->tszHttpUri, st_LoadbalanceCfg.st_LoadBalance.pStl_ListBucket, &st_StorageBucket)) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("下载客户端:%s,请求文件失败,可能BUCKET:% 不正确,错误:%lX"), lpszClientAddr, pSt_HTTPParam->tszHttpUri, APIHelp_GetLastError()); + return FALSE; + } + _stprintf(tszFileDir, _T("%s%s"), st_StorageBucket.tszFilePath, st_StorageBucket.tszFileName); int nHashLen = 0; UCHAR tszHashKey[MAX_PATH]; diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp b/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp index c9effb044bd6d03404667fbe9d7d2e79f6935986..aafd1974cd6e753cd39904ff017e2339e0fc6bcd 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp @@ -94,7 +94,15 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in int nRVMode = 0; int nRVCount = 0; int nHDSize = 0; - _stprintf(tszFileDir, _T("%s%s"), st_ServiceCfg.st_XStorage.tszFileDir, pSt_HTTPParam->tszHttpUri); + XENGINE_STORAGEBUCKET st_StorageBucket; + memset(&st_StorageBucket, '\0', sizeof(XENGINE_STORAGEBUCKET)); + + if (!APIHelp_Distributed_UPStorage(st_LoadbalanceCfg.st_LoadBalance.pStl_ListBucket, &st_StorageBucket)) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("上传客户端:%s,请求上传文件失败,可能BUCKET:% 不正确,错误:%lX"), lpszClientAddr, pSt_HTTPParam->tszHttpUri, APIHelp_GetLastError()); + return FALSE; + } + _stprintf(tszFileDir, _T("%s%s"), st_StorageBucket.tszFilePath, pSt_HTTPParam->tszHttpUri); if (!Session_UPStroage_Exist(lpszClientAddr)) { @@ -134,8 +142,12 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in } if (nMsgLen <= 0) { + st_HDRParam.bIsClose = TRUE; + st_HDRParam.nHttpCode = 411; + RfcComponents_HttpServer_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("上传客户端:%s,用户数据大小为0?"), lpszClientAddr); - return TRUE; + return FALSE; } Session_UPStroage_Write(lpszClientAddr, lpszMsgBuffer, nMsgLen); RfcComponents_HttpServer_GetRecvModeEx(xhUPHttp, lpszClientAddr, &nRVMode, &nRVCount, &nHDSize); @@ -163,8 +175,7 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in memset(tszHashStr, '\0', MAX_PATH); memset(&st_ProtocolFile, '\0', sizeof(XSTORAGECORE_DBFILE)); - _stprintf(tszFileDir, _T("%s%s"), st_ServiceCfg.st_XStorage.tszFileDir, pSt_HTTPParam->tszHttpUri); - _tcscpy(st_ProtocolFile.st_ProtocolFile.tszFilePath, st_ServiceCfg.st_XStorage.tszFileDir); + _tcscpy(st_ProtocolFile.st_ProtocolFile.tszFilePath, st_StorageBucket.tszFilePath); _tcscpy(st_ProtocolFile.st_ProtocolFile.tszFileName, pSt_HTTPParam->tszHttpUri + 1); st_ProtocolFile.st_ProtocolFile.nFileSize = nRVCount; @@ -182,6 +193,7 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in BOOL bRet = TRUE; if (0 != st_ServiceCfg.st_XSql.nSQLType) { + _tcscpy(st_ProtocolFile.tszBuckKey, st_StorageBucket.tszBuckKey); if (1 == st_ServiceCfg.st_XSql.nSQLType) { bRet = XStorage_MySql_FileInsert(&st_ProtocolFile); @@ -240,7 +252,6 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in } else { - _stprintf(tszFileDir, _T("%s%s"), st_ServiceCfg.st_XStorage.tszFileDir, pSt_HTTPParam->tszHttpUri); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _T("上传客户端:%s,请求上传文件中,文件名:%s,大小:%d"), lpszClientAddr, tszFileDir, nMsgLen); } diff --git a/XEngine_Source/XEngine_StorageApp/Storage_APPHelp/Storage_APPHelp.cpp b/XEngine_Source/XEngine_StorageApp/Storage_APPHelp/Storage_APPHelp.cpp index a386eb95ae0ff6edce505d390d775f1b00c312c6..55bab52291adac4cf29bc87a2cf87d4582d5f3c7 100644 --- a/XEngine_Source/XEngine_StorageApp/Storage_APPHelp/Storage_APPHelp.cpp +++ b/XEngine_Source/XEngine_StorageApp/Storage_APPHelp/Storage_APPHelp.cpp @@ -166,7 +166,14 @@ BOOL XEngine_APPHelp_RangeFile(LPCTSTR lpszClientAddr, int* pInt_SPos, int* pInt } else { - RfcComponents_HttpHelp_GetField(&pptszListHdr, nHdrCount, lpszLengthStr, tszFieldStr); + if (STORAGE_NETTYPE_HTTPDOWNLOAD == nSDType) + { + return FALSE; + } + if (!RfcComponents_HttpHelp_GetField(&pptszListHdr, nHdrCount, lpszLengthStr, tszFieldStr)) + { + return FALSE; + } *pInt_Count = _ttoi64(tszFieldStr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("%s:%s,请求内容是新的数据,大小:%lld"), lpszClientType, lpszClientAddr, *pInt_Count); } diff --git a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp index c9d67d4ad5a986903f12e2d039cca4a64f122518..c2151338812f8624d4f37eeeaf9c31d12e28b51e 100644 --- a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp +++ b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp @@ -175,19 +175,21 @@ BOOL XEngine_Task_Manage(LPCTSTR lpszAPIName, LPCTSTR lpszClientAddr, LPCTSTR lp int nMsgLen = 10240; TCHAR tszFileName[MAX_PATH]; TCHAR tszFileHash[MAX_PATH]; + TCHAR tszBucketKey[128]; TCHAR tszTimeStart[128]; TCHAR tszTimeEnd[128]; TCHAR tszMsgBuffer[10240]; memset(tszFileName, '\0', MAX_PATH); memset(tszFileHash, '\0', MAX_PATH); + memset(tszBucketKey, '\0', sizeof(tszBucketKey)); memset(tszTimeStart, '\0', sizeof(tszTimeStart)); memset(tszTimeEnd, '\0', sizeof(tszTimeEnd)); memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); int nListCount = 0; XSTORAGECORE_DBFILE** ppSt_ListFile; - Protocol_StorageParse_QueryFile(lpszMsgBuffer, tszTimeStart, tszTimeEnd, tszFileHash); + Protocol_StorageParse_QueryFile(lpszMsgBuffer, tszTimeStart, tszTimeEnd, tszBucketKey, tszFileName, tszFileHash); if (0 == st_ServiceCfg.st_XSql.nSQLType) { @@ -209,7 +211,7 @@ BOOL XEngine_Task_Manage(LPCTSTR lpszAPIName, LPCTSTR lpszClientAddr, LPCTSTR lp XStorage_SQLite_FileQuery(&ppSt_ListFile, &nListCount, tszTimeStart, tszTimeEnd, tszFileName, tszFileHash); } - Protocol_StoragePacket_QueryFile(tszMsgBuffer, &nMsgLen, &ppSt_ListFile, nListCount, st_ServiceCfg.st_XStorage.tszFileDir, tszTimeStart, tszTimeEnd); + Protocol_StoragePacket_QueryFile(tszMsgBuffer, &nMsgLen, &ppSt_ListFile, nListCount, tszTimeStart, tszTimeEnd); RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszMsgBuffer, nMsgLen); XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ListFile, nListCount); @@ -239,13 +241,15 @@ BOOL XEngine_Task_Manage(LPCTSTR lpszAPIName, LPCTSTR lpszClientAddr, LPCTSTR lp int nListCount = 0; CHAR** ppszListDir = NULL; TCHAR tszUserDir[MAX_PATH]; + TCHAR tszBuckKey[MAX_PATH]; TCHAR tszRealDir[1024]; memset(tszUserDir, '\0', MAX_PATH); + memset(tszBuckKey, '\0', MAX_PATH); memset(tszRealDir, '\0', sizeof(tszRealDir)); - Protocol_StorageParse_DirOperator(lpszMsgBuffer, tszUserDir, &nOPCode); - _stprintf(tszRealDir, _T("%s/%s"), st_ServiceCfg.st_XStorage.tszFileDir, tszUserDir); + Protocol_StorageParse_DirOperator(lpszMsgBuffer, tszUserDir, tszBuckKey, &nOPCode); + _stprintf(tszRealDir, _T("%s/%s"), tszBuckKey, tszUserDir); if (0 == nOPCode) { if (!SystemApi_File_EnumFile(tszRealDir, &ppszListDir, &nListCount, NULL, NULL, TRUE, 2)) diff --git a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskP2p.cpp b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskP2p.cpp index 67cc2471c907d0a8a3d5d83f8548594ead5ac3e3..69fdcdad53ed55de461678b86f8c239195fb176a 100644 --- a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskP2p.cpp +++ b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskP2p.cpp @@ -40,7 +40,7 @@ XHTHREAD XEngine_Task_P2PThread() if (nListCount > 0) { _stprintf(pppSt_ListFile[0]->tszTableName, _T("%s:%d"), st_ServiceCfg.tszIPAddr, st_ServiceCfg.nStorageDLPort); - Protocol_StoragePacket_QueryFile(tszMsgBuffer, &nMsgLen, &pppSt_ListFile, nListCount, st_ServiceCfg.st_XStorage.tszFileDir, tszTimeStart, tszTimeEnd); + Protocol_StoragePacket_QueryFile(tszMsgBuffer, &nMsgLen, &pppSt_ListFile, nListCount, tszTimeStart, tszTimeEnd); BaseLib_OperatorMemory_Free((XPPPMEM)&pppSt_ListFile, nListCount); SOCKET hSDSocket; @@ -88,7 +88,7 @@ BOOL XEngine_Task_P2PGet(LPCTSTR lpszFileHash, LPCTSTR lpszClientAddr, RFCCOMPON st_HDRParam.nHttpCode = 200; _stprintf(pppSt_ListFile[0]->tszTableName, _T("127.0.0.1:%d"), st_ServiceCfg.nStorageDLPort); - Protocol_StoragePacket_QueryFile(tszRVBuffer, &nRVLen, &pppSt_ListFile, nListCount, st_ServiceCfg.st_XStorage.tszFileDir); + Protocol_StoragePacket_QueryFile(tszRVBuffer, &nRVLen, &pppSt_ListFile, nListCount); BaseLib_OperatorMemory_Free((XPPPMEM)&pppSt_ListFile, nListCount); RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszRVBuffer, nRVLen); @@ -177,7 +177,7 @@ BOOL XEngine_Task_P2PGet(LPCTSTR lpszFileHash, LPCTSTR lpszClientAddr, RFCCOMPON int nListCount = 0; XSTORAGECORE_DBFILE** ppSt_ListPacket; APIHelp_Distributed_FileList(&stl_ListFile, &ppSt_ListPacket, &nListCount); - Protocol_StoragePacket_QueryFile(tszRVBuffer, &nRVLen, &ppSt_ListPacket, nListCount, st_ServiceCfg.st_XStorage.tszFileDir); + Protocol_StoragePacket_QueryFile(tszRVBuffer, &nRVLen, &ppSt_ListPacket, nListCount); RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszRVBuffer, nRVLen); BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ListPacket, nListCount); } diff --git a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskPass.cpp b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskPass.cpp index 8aa0fc2a85f8796dfe69c2bb52cb154bd240275f..27e94745b280e1d3556991492184226430738a95 100644 --- a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskPass.cpp +++ b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskPass.cpp @@ -20,22 +20,24 @@ BOOL XEngine_Task_Pass(LPCTSTR lpszAPIName, LPCTSTR lpszClientAddr, LPCTSTR lpsz memset(tszClientAddr, '\0', sizeof(tszClientAddr)); memset(&st_DBFile, '\0', sizeof(XSTORAGECORE_DBFILE)); - Protocol_StorageParse_ProxyNotify(lpszMsgBuffer, nMsgLen, tszClientAddr, st_DBFile.st_ProtocolFile.tszFileName, st_DBFile.st_ProtocolFile.tszFileHash, &st_DBFile.st_ProtocolFile.nFileSize); + Protocol_StorageParse_ProxyNotify(lpszMsgBuffer, nMsgLen, tszClientAddr, st_DBFile.tszBuckKey, st_DBFile.st_ProtocolFile.tszFileName, st_DBFile.st_ProtocolFile.tszFileHash, &st_DBFile.st_ProtocolFile.nFileSize); XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("业务客户端:%s,请求的上传文件通知协议成功,文件名:%s,大小:%d"), lpszClientAddr, st_DBFile.st_ProtocolFile.tszFileName, st_DBFile.st_ProtocolFile.nFileSize); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("业务客户端:%s,请求的上传文件通知协议成功,Bucket:%s,文件名:%s,大小:%d"), lpszClientAddr, st_DBFile.tszBuckKey, st_DBFile.st_ProtocolFile.tszFileName, st_DBFile.st_ProtocolFile.nFileSize); } else if (0 == _tcsnicmp(XENGINE_STORAGE_APP_METHOD_DLFILE, lpszAPIName, _tcslen(XENGINE_STORAGE_APP_METHOD_DLFILE))) { __int64x nFileSize = 0; + TCHAR tszPathKey[MAX_PATH]; TCHAR tszFileName[MAX_PATH]; TCHAR tszFileHash[MAX_PATH]; TCHAR tszClientAddr[128]; + memset(tszPathKey, '\0', MAX_PATH); memset(tszFileName, '\0', MAX_PATH); memset(tszFileHash, '\0', MAX_PATH); memset(tszClientAddr, '\0', sizeof(tszClientAddr)); - Protocol_StorageParse_ProxyNotify(lpszMsgBuffer, nMsgLen, tszClientAddr, tszFileName, tszFileHash, &nFileSize); + Protocol_StorageParse_ProxyNotify(lpszMsgBuffer, nMsgLen, tszClientAddr, tszPathKey, tszFileName, tszFileHash, &nFileSize); RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam); XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); diff --git a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/SQLPacket_Define.h b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/SQLPacket_Define.h index 6cb38af7278d25556b8f256065b2e8fac44428cc..eb49bf702c980d930b286590b37c7010bd3379f7 100644 --- a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/SQLPacket_Define.h +++ b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/SQLPacket_Define.h @@ -16,7 +16,8 @@ typedef struct tag_XStorageCore_DBFILE { XENGINE_PROTOCOL_FILE st_ProtocolFile; - CHAR tszTableName[64]; //日期表名称,插入:表示自定义插入日期表,获取:表示导出这个文件所属日期表 + CHAR tszBuckKey[MAX_PATH]; //路径的关键字 + CHAR tszTableName[64]; //日期表名称,插入:表示自定义插入日期表,获取:表示导出这个文件所属日期表 }XSTORAGECORE_DBFILE, *LPXSTORAGECORE_DBFILE; typedef struct tag_XStorageCore_UserInfo { @@ -165,25 +166,6 @@ extern "C" BOOL XStorage_MySql_FileQueryForTable(XSTORAGECORE_DBFILE * **pppSt_L 备注: *********************************************************************/ extern "C" BOOL XStorage_MySql_FileQueryForHash(XSTORAGECORE_DBFILE* pSt_FileInfo, LPCSTR lpszFileMD5, LPCSTR lpszUser = NULL, LPCSTR lpszTimeStart = NULL, LPCSTR lpszTimeEnd = NULL); -/******************************************************************** -函数名称:XStorage_MySql_FileGetCount -函数功能:获取数据库中文件总个数和总大小 - 参数.一:pInt_Count - In/Out:Out - 类型:64位整数型指针 - 可空:N - 意思:导出获取到的文件个数 - 参数.二:pInt_Size - In/Out:Out - 类型:64位整数型指针 - 可空:N - 意思:导出获取到的文件大小,单位字节(BYTE) -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -extern "C" BOOL XStorage_MySql_FileGetCount(__int64x *pInt_Count, __int64x *pInt_Size); /************************************************************************/ /* SQLITE数据库函数 */ /************************************************************************/ diff --git a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/SQLPacket_Error.h b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/SQLPacket_Error.h index e45ffb58861d9c049c332d90f8293009e417fc5d..ad04d443e2ee998a5de3c6f3177c610516ba631d 100644 --- a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/SQLPacket_Error.h +++ b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/SQLPacket_Error.h @@ -19,8 +19,6 @@ #define ERROR_XENGINE_XSTROGE_CORE_DB_DELETEFILE_PARAMENT 0x130B0020 //参数错误 #define ERROR_XENGINE_XSTROGE_CORE_DB_QUERYFILE_PARAMENT 0x130B0030 //参数错误 #define ERROR_XENGINE_XSTROGE_CORE_DB_QUERYFILE_EMPTY 0x130B0031 //查找数据为空 -#define ERROR_XENGINE_XSTROGE_CORE_DB_GETCOUNT_PARAMENT 0x130B0040 //参数错误 -#define ERROR_XENGINE_XSTROGE_CORE_DB_GETCOUNT_BROKE 0x130B0041 //数据库被损坏 #define ERROR_XENGINE_XSTROGE_CORE_DB_QUERYFILETABLE_PARAMENT 0x130B00B1//参数错误 #define ERROR_XENGINE_XSTROGE_CORE_DB_QUERYFILETABLE_EMPTY 0x130B00B2 //空的表 #define ERROR_XENGINE_XSTROGE_CORE_DB_QUERYMD5_PARAMENT 0x130B00D0 //参数错误 diff --git a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_MySql/XStorage_MySql.cpp b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_MySql/XStorage_MySql.cpp index ade812eeee92f011efed2d82415552036e0a661a..080e0382ec72da118b74e5b6e8da81b28de4a7cf 100644 --- a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_MySql/XStorage_MySql.cpp +++ b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_MySql/XStorage_MySql.cpp @@ -154,7 +154,7 @@ BOOL CXStorage_MySql::XStorage_MySql_FileInsert(XSTORAGECORE_DBFILE *pSt_DBFile) _stprintf_s(tszTableName, _T("%04d%02d"), st_LibTimer.wYear, st_LibTimer.wMonth); } // - _stprintf_s(tszSQLStatement, _T("INSERT INTO `%s` (FilePath,FileName,FileHash,FileUser,FileSize,FileTime) VALUES('%s','%s','%s','%s',%lld,now())"), tszTableName, pSt_DBFile->st_ProtocolFile.tszFilePath, pSt_DBFile->st_ProtocolFile.tszFileName, pSt_DBFile->st_ProtocolFile.tszFileHash, pSt_DBFile->st_ProtocolFile.tszFileUser, pSt_DBFile->st_ProtocolFile.nFileSize); + _stprintf_s(tszSQLStatement, _T("INSERT INTO `%s` (BuckKey,FilePath,FileName,FileHash,FileUser,FileSize,FileTime) VALUES('%s','%s','%s','%s','%s',%lld,now())"), tszTableName, pSt_DBFile->tszBuckKey, pSt_DBFile->st_ProtocolFile.tszFilePath, pSt_DBFile->st_ProtocolFile.tszFileName, pSt_DBFile->st_ProtocolFile.tszFileHash, pSt_DBFile->st_ProtocolFile.tszFileUser, pSt_DBFile->st_ProtocolFile.nFileSize); if (!DataBase_MySQL_Execute(xhDBSQL, tszSQLStatement)) { XStorage_IsErrorOccur = TRUE; @@ -258,7 +258,7 @@ BOOL CXStorage_MySql::XStorage_MySql_FileDelete(LPCTSTR lpszFile, LPCTSTR lpszHa ˼Ƿɹ עؼٿûвҵ,¼.lpszFilelpszHashȫΪ *********************************************************************/ -BOOL CXStorage_MySql::XStorage_MySql_FileQuery(XSTORAGECORE_DBFILE*** pppSt_ListFile, int* pInt_ListCount, LPCTSTR lpszTimeStart /* = NULL */, LPCTSTR lpszTimeEnd /* = NULL */, LPCTSTR lpszFile /* = NULL */, LPCTSTR lpszHash /* = NULL */) +BOOL CXStorage_MySql::XStorage_MySql_FileQuery(XSTORAGECORE_DBFILE*** pppSt_ListFile, int* pInt_ListCount, LPCTSTR lpszTimeStart /* = NULL */, LPCTSTR lpszTimeEnd /* = NULL */, LPCTSTR lpszBuckKey /* = NULL */, LPCTSTR lpszFile /* = NULL */, LPCTSTR lpszHash /* = NULL */) { XStorage_IsErrorOccur = FALSE; @@ -308,7 +308,6 @@ BOOL CXStorage_MySql::XStorage_MySql_FileQuery(XSTORAGECORE_DBFILE*** pppSt_List __int64u dwLineResult = 0; __int64u dwFieldResult = 0; XNETHANDLE xhResult; - memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); //жϲѯʽ if (NULL != lpszFile) @@ -353,29 +352,33 @@ BOOL CXStorage_MySql::XStorage_MySql_FileQuery(XSTORAGECORE_DBFILE*** pppSt_List _tcscpy(st_DBFile.tszTableName, pptszResult[0]); - if (NULL != pptszFileResult[1]) + if (NULL != pptszFileResult[1]) + { + _tcscpy(st_DBFile.tszBuckKey, pptszFileResult[1]); + } + if (NULL != pptszFileResult[2]) { - _tcscpy(st_DBFile.st_ProtocolFile.tszFilePath, pptszFileResult[1]); + _tcscpy(st_DBFile.st_ProtocolFile.tszFilePath, pptszFileResult[2]); } - if (NULL != pptszFileResult[2]) + if (NULL != pptszFileResult[3]) { - _tcscpy(st_DBFile.st_ProtocolFile.tszFileName, pptszFileResult[2]); + _tcscpy(st_DBFile.st_ProtocolFile.tszFileName, pptszFileResult[3]); } - if (NULL != pptszFileResult[3]) + if (NULL != pptszFileResult[4]) { - _tcscpy(st_DBFile.st_ProtocolFile.tszFileHash, pptszFileResult[3]); + _tcscpy(st_DBFile.st_ProtocolFile.tszFileHash, pptszFileResult[4]); } - if (NULL != pptszFileResult[4]) - { - _tcscpy(st_DBFile.st_ProtocolFile.tszFileUser, pptszFileResult[4]); - } if (NULL != pptszFileResult[5]) { - st_DBFile.st_ProtocolFile.nFileSize = _ttoi64(pptszFileResult[5]); + _tcscpy(st_DBFile.st_ProtocolFile.tszFileUser, pptszFileResult[5]); } if (NULL != pptszFileResult[6]) { - _tcscpy(st_DBFile.st_ProtocolFile.tszFileTime, pptszFileResult[6]); + st_DBFile.st_ProtocolFile.nFileSize = _ttoi64(pptszFileResult[6]); + } + if (NULL != pptszFileResult[7]) + { + _tcscpy(st_DBFile.st_ProtocolFile.tszFileTime, pptszFileResult[7]); } stl_ListFile.push_back(st_DBFile); } @@ -457,29 +460,34 @@ BOOL CXStorage_MySql::XStorage_MySql_FileQueryForTable(XSTORAGECORE_DBFILE*** pp TCHAR** pptszFileResult = DataBase_MySQL_GetResult(xhDBSQL, xhTable); _tcscpy((*pppSt_ListFile)[i]->tszTableName, lpszTableName); + if (NULL != pptszFileResult[1]) { - _tcscpy((*pppSt_ListFile)[i]->st_ProtocolFile.tszFilePath, pptszFileResult[1]); + _tcscpy((*pppSt_ListFile)[i]->tszBuckKey, pptszFileResult[1]); } if (NULL != pptszFileResult[2]) { - _tcscpy((*pppSt_ListFile)[i]->st_ProtocolFile.tszFileName, pptszFileResult[2]); + _tcscpy((*pppSt_ListFile)[i]->st_ProtocolFile.tszFilePath, pptszFileResult[2]); } if (NULL != pptszFileResult[3]) { - _tcscpy((*pppSt_ListFile)[i]->st_ProtocolFile.tszFileHash, pptszFileResult[3]); + _tcscpy((*pppSt_ListFile)[i]->st_ProtocolFile.tszFileName, pptszFileResult[3]); } if (NULL != pptszFileResult[4]) { - _tcscpy((*pppSt_ListFile)[i]->st_ProtocolFile.tszFileUser, pptszFileResult[4]); + _tcscpy((*pppSt_ListFile)[i]->st_ProtocolFile.tszFileHash, pptszFileResult[4]); } if (NULL != pptszFileResult[5]) { - (*pppSt_ListFile)[i]->st_ProtocolFile.nFileSize = _ttoi64(pptszFileResult[5]); + _tcscpy((*pppSt_ListFile)[i]->st_ProtocolFile.tszFileUser, pptszFileResult[5]); } if (NULL != pptszFileResult[6]) { - _tcscpy((*pppSt_ListFile)[i]->st_ProtocolFile.tszFileTime, pptszFileResult[6]); + (*pppSt_ListFile)[i]->st_ProtocolFile.nFileSize = _ttoi64(pptszFileResult[6]); + } + if (NULL != pptszFileResult[7]) + { + _tcscpy((*pppSt_ListFile)[i]->st_ProtocolFile.tszFileTime, pptszFileResult[7]); } } DataBase_MySQL_FreeResult(xhDBSQL, xhTable); @@ -582,29 +590,34 @@ BOOL CXStorage_MySql::XStorage_MySql_FileQueryForHash(XSTORAGECORE_DBFILE* pSt_F TCHAR** pptszFileResult = DataBase_MySQL_GetResult(xhDBSQL, xhResult); _tcscpy(pSt_FileInfo->tszTableName, pptszResult[0]); - if (NULL != pptszFileResult[1]) - { - _tcscpy(pSt_FileInfo->st_ProtocolFile.tszFilePath, pptszFileResult[1]); - } + + if (NULL != pptszFileResult[1]) + { + _tcscpy(pSt_FileInfo->tszBuckKey, pptszFileResult[1]); + } if (NULL != pptszFileResult[2]) { - _tcscpy(pSt_FileInfo->st_ProtocolFile.tszFileName, pptszFileResult[2]); + _tcscpy(pSt_FileInfo->st_ProtocolFile.tszFilePath, pptszFileResult[2]); } if (NULL != pptszFileResult[3]) { - _tcscpy(pSt_FileInfo->st_ProtocolFile.tszFileUser, pptszFileResult[3]); + _tcscpy(pSt_FileInfo->st_ProtocolFile.tszFileName, pptszFileResult[3]); } if (NULL != pptszFileResult[4]) { - pSt_FileInfo->st_ProtocolFile.nFileSize = _ttoi64(pptszFileResult[4]); + _tcscpy(pSt_FileInfo->st_ProtocolFile.tszFileUser, pptszFileResult[4]); } if (NULL != pptszFileResult[5]) { - _tcscpy(pSt_FileInfo->st_ProtocolFile.tszFileHash, pptszFileResult[5]); + pSt_FileInfo->st_ProtocolFile.nFileSize = _ttoi64(pptszFileResult[5]); } if (NULL != pptszFileResult[6]) { - _tcscpy(pSt_FileInfo->st_ProtocolFile.tszFileTime, pptszFileResult[6]); + _tcscpy(pSt_FileInfo->st_ProtocolFile.tszFileHash, pptszFileResult[6]); + } + if (NULL != pptszFileResult[7]) + { + _tcscpy(pSt_FileInfo->st_ProtocolFile.tszFileTime, pptszFileResult[7]); } bFound = TRUE; break; @@ -622,72 +635,6 @@ BOOL CXStorage_MySql::XStorage_MySql_FileQueryForHash(XSTORAGECORE_DBFILE* pSt_F } return TRUE; } -/******************************************************************** -ƣXStorage_MySql_FileGetCount -ܣȡݿļܸܴС - .һpInt_Count - In/OutOut - ͣ64λָ - ɿգN - ˼ȡļ - .pInt_Size - In/OutOut - ͣ64λָ - ɿգN - ˼ȡļС,λֽ(BYTE) -ֵ - ͣ߼ - ˼Ƿɹ -ע -*********************************************************************/ -BOOL CXStorage_MySql::XStorage_MySql_FileGetCount(__int64x *pInt_Count, __int64x *pInt_Size) -{ - XStorage_IsErrorOccur = FALSE; - - if ((NULL == pInt_Count) || (NULL == pInt_Size)) - { - XStorage_IsErrorOccur = TRUE; - XStorage_dwErrorCode = ERROR_XENGINE_XSTROGE_CORE_DB_GETCOUNT_PARAMENT; - return FALSE; - } - __int64u nllRow = 0; - __int64u nllColumn = 0; - TCHAR tszSQLStatement[1024]; //SQL - memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); - - _stprintf_s(tszSQLStatement, _T("SELECT * FROM `XStorage_Count`")); - //ѯ - XHDATA xhResult = 0; - if (!DataBase_MySQL_ExecuteQuery(xhDBSQL, &xhResult, tszSQLStatement, &nllRow, &nllColumn)) - { - XStorage_IsErrorOccur = TRUE; - XStorage_dwErrorCode = DataBase_GetLastError(); - return FALSE; - } - if (nllRow <= 0) - { - XStorage_IsErrorOccur = TRUE; - XStorage_dwErrorCode = ERROR_XENGINE_XSTROGE_CORE_DB_GETCOUNT_BROKE; - return FALSE; - } - //ȡ¼ - TCHAR **pptszResult = DataBase_MySQL_GetResult(xhDBSQL, xhResult); - if (NULL == pptszResult[0]) - { - return FALSE; - } - if (NULL != pptszResult[1]) - { - *pInt_Count = _ttoi64(pptszResult[1]); - } - if (NULL != pptszResult[2]) - { - *pInt_Size = _ttoi64(pptszResult[2]); - } - DataBase_MySQL_FreeResult(xhDBSQL, xhResult); - - return TRUE; -} ////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////// @@ -727,6 +674,7 @@ BOOL CXStorage_MySql::XStorage_MySql_CreateTable() _stprintf_s(tszSQLQuery, _T("CREATE TABLE IF NOT EXISTS `%s` (" "`ID` int NOT NULL AUTO_INCREMENT COMMENT 'ID'," + "`BuckKey` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '·KEY'," "`FilePath` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'ļ·'," "`FileName` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'ļ'," "`FileHash` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'ļHASH'," diff --git a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_MySql/XStorage_MySql.h b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_MySql/XStorage_MySql.h index 57b76d573a000579eb1cb90171e14848221f8c2a..40e5ee1ba2174728686779ef9af910ad34682b4a 100644 --- a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_MySql/XStorage_MySql.h +++ b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_MySql/XStorage_MySql.h @@ -21,10 +21,9 @@ public: BOOL XStorage_MySql_Destory(); BOOL XStorage_MySql_FileInsert(XSTORAGECORE_DBFILE *pSt_DBManage); BOOL XStorage_MySql_FileDelete(LPCTSTR lpszFile = NULL, LPCTSTR lpszHash = NULL); - BOOL XStorage_MySql_FileQuery(XSTORAGECORE_DBFILE*** pppSt_ListFile, int* pInt_ListCount, LPCTSTR lpszTimeStart = NULL, LPCTSTR lpszTimeEnd = NULL, LPCTSTR lpszFile = NULL, LPCTSTR lpszHash = NULL); + BOOL XStorage_MySql_FileQuery(XSTORAGECORE_DBFILE*** pppSt_ListFile, int* pInt_ListCount, LPCTSTR lpszTimeStart = NULL, LPCTSTR lpszTimeEnd = NULL, LPCTSTR lpszBuckKey = NULL, LPCTSTR lpszFile = NULL, LPCTSTR lpszHash = NULL); BOOL XStorage_MySql_FileQueryForTable(XSTORAGECORE_DBFILE*** pppSt_ListFile, int* pInt_ListCount, LPCTSTR lpszTableName); BOOL XStorage_MySql_FileQueryForHash(XSTORAGECORE_DBFILE* pSt_FileInfo, LPCTSTR lpszFileHash, LPCTSTR lpszUser = NULL, LPCTSTR lpszTimeStart = NULL, LPCTSTR lpszTimeEnd = NULL); - BOOL XStorage_MySql_FileGetCount(__int64x *pInt_Count, __int64x *pInt_Size); protected: BOOL XStorage_MySql_CreateTable(); BOOL XStorage_MySql_TimeMonth(LPCTSTR lpszStartTime, int* pInt_Month); diff --git a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_SQLPacket.def b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_SQLPacket.def index 229fce71a1d6e0c11d979a0fb907d70d49360b18..71311abe9b62c40e67abe8f05f00cd68ceab29ac 100644 --- a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_SQLPacket.def +++ b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_SQLPacket.def @@ -10,7 +10,6 @@ EXPORTS XStorage_MySql_FileQuery XStorage_MySql_FileQueryForTable XStorage_MySql_FileQueryForHash - XStorage_MySql_FileGetCount XStorage_SQLite_Init XStorage_SQLite_Destory diff --git a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_SQLPacket.vcxproj b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_SQLPacket.vcxproj index 2f1bdd7dfd7caa8c7983d1f38b673f387f3deda1..780d2331b42fd143faa21017f167185782c59ac9 100644 --- a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_SQLPacket.vcxproj +++ b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_SQLPacket.vcxproj @@ -171,6 +171,7 @@ + @@ -182,6 +183,7 @@ Create + diff --git a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_SQLPacket.vcxproj.filters b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_SQLPacket.vcxproj.filters index 5f4bb36e07ad36a1522ee1fcce4e8f123680295c..ff4ad826f2e4fff8e0333d847412877808db7877 100644 --- a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_SQLPacket.vcxproj.filters +++ b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_SQLPacket.vcxproj.filters @@ -25,6 +25,12 @@ {b46e9df3-d213-4733-9ef0-b0322a8d8d01} + + {fff86ef0-4cc8-4c11-9077-faf81aa740d2} + + + {91e0d007-228d-4b26-a540-9b364ceb87e7} + @@ -45,6 +51,9 @@ 头文件\XStorage_MySql + + 头文件\XStorage_SQLHelp + @@ -59,6 +68,9 @@ 源文件\XStorage_MySql + + 源文件\XStorage_SQLHelp + diff --git a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_SQLite/XStorage_SQLite.cpp b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_SQLite/XStorage_SQLite.cpp index f42851270c864fe575d2b2690011ce2f594df914..8e647d5aa9027e1dc9c3f8717b78e7ff1e894f40 100644 --- a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_SQLite/XStorage_SQLite.cpp +++ b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorage_SQLite/XStorage_SQLite.cpp @@ -154,7 +154,7 @@ BOOL CXStorage_SQLite::XStorage_SQLite_FileInsert(XSTORAGECORE_DBFILE* pSt_DBFil _stprintf_s(tszTableName, _T("%04d%02d"), st_LibTimer.wYear, st_LibTimer.wMonth); } //插入语句 - _stprintf_s(tszSQLStatement, _T("INSERT INTO `%s` (FilePath,FileName,FileHash,FileUser,FileSize,FileTime) VALUES('%s','%s','%s','%s',%lld,DATETIME('now', 'localtime'))"), tszTableName, pSt_DBFile->st_ProtocolFile.tszFilePath, pSt_DBFile->st_ProtocolFile.tszFileName, pSt_DBFile->st_ProtocolFile.tszFileHash, pSt_DBFile->st_ProtocolFile.tszFileUser, pSt_DBFile->st_ProtocolFile.nFileSize); + _stprintf_s(tszSQLStatement, _T("INSERT INTO `%s` (BuckKey,FilePath,FileName,FileHash,FileUser,FileSize,FileTime) VALUES('%s','%s','%s','%s','%s',%lld,DATETIME('now', 'localtime'))"), tszTableName, pSt_DBFile->tszBuckKey, pSt_DBFile->st_ProtocolFile.tszFilePath, pSt_DBFile->st_ProtocolFile.tszFileName, pSt_DBFile->st_ProtocolFile.tszFileHash, pSt_DBFile->st_ProtocolFile.tszFileUser, pSt_DBFile->st_ProtocolFile.nFileSize); if (!DataBase_SQLite_Exec(xhSQL, tszSQLStatement)) { XStorage_IsErrorOccur = TRUE; @@ -351,6 +351,9 @@ BOOL CXStorage_SQLite::XStorage_SQLite_FileQuery(XSTORAGECORE_DBFILE*** pppSt_Li _tcscpy(st_DBFile.tszTableName, pptszResult[i]); nFiled++; + _tcscpy(st_DBFile.tszBuckKey, pptszFileResult[nFiled]); + nFiled++; + _tcscpy(st_DBFile.st_ProtocolFile.tszFilePath, pptszFileResult[nFiled]); nFiled++; @@ -449,9 +452,12 @@ BOOL CXStorage_SQLite::XStorage_SQLite_FileQueryForTable(XSTORAGECORE_DBFILE*** nFiled++; _tcscpy((*pppSt_ListFile)[i]->tszTableName, lpszTableName); - _tcscpy((*pppSt_ListFile)[i]->st_ProtocolFile.tszFilePath, pptszResulte[nFiled]); + _tcscpy((*pppSt_ListFile)[i]->tszBuckKey, pptszResulte[nFiled]); nFiled++; + _tcscpy((*pppSt_ListFile)[i]->st_ProtocolFile.tszFilePath, pptszResulte[nFiled]); + nFiled++; + _tcscpy((*pppSt_ListFile)[i]->st_ProtocolFile.tszFileName, pptszResulte[nFiled]); nFiled++; @@ -510,6 +516,7 @@ BOOL CXStorage_SQLite::XStorage_SQLite_CreateTable() _stprintf_s(tszSQLQuery, _T("PRAGMA foreign_keys = false;" "CREATE TABLE IF NOT EXISTS \"%s\" (" " \"ID\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," + " \"BuckKey\" TEXT," " \"FilePath\" TEXT NOT NULL," " \"FileName\" TEXT NOT NULL," " \"FileHash\" TEXT," diff --git a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/pch.cpp b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/pch.cpp index 6c08874dd8407208ccce740700a7483c84880a32..8df24de1792182988fb0bdb7ce07331268846941 100644 --- a/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/pch.cpp +++ b/XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/pch.cpp @@ -59,10 +59,6 @@ extern "C" BOOL XStorage_MySql_FileQueryForHash(XSTORAGECORE_DBFILE * pSt_FileIn { return m_MySql.XStorage_MySql_FileQueryForHash(pSt_FileInfo, lpszFileMD5, lpszUser, lpszTimeStart, lpszTimeEnd); } -extern "C" BOOL XStorage_MySql_FileGetCount(__int64x * pInt_Count, __int64x * pInt_Size) -{ - return m_MySql.XStorage_MySql_FileGetCount(pInt_Count, pInt_Size); -} /************************************************************************/ /* SQLITE数据库函数 */ /************************************************************************/