Skip to content

Commit 6dff64e

Browse files
committed
added:action parse and packet for protocol module
1 parent 2ed1be6 commit 6dff64e

File tree

7 files changed

+175
-2
lines changed

7 files changed

+175
-2
lines changed

XEngine_Source/StorageModule_Protocol/Protocol_Packet/Protocol_StoragePacket.cpp

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,4 +469,54 @@ bool CProtocol_StoragePacket::Protocol_StoragePacket_REQFile(XCHAR* ptszMsgBuffe
469469
*pInt_MsgLen = st_JsonRoot.toStyledString().length();
470470
memcpy(ptszMsgBuffer, st_JsonRoot.toStyledString().c_str(), *pInt_MsgLen);
471471
return true;
472+
}
473+
/********************************************************************
474+
函数名称:Protocol_StoragePacket_Action
475+
函数功能:动作脚本封装器
476+
参数.一:ptszMsgBuffer
477+
In/Out:Out
478+
类型:字符指针
479+
可空:N
480+
意思:输出组好包的请求缓冲区
481+
参数.二:pInt_MsgLen
482+
In/Out:Out
483+
类型:整数型指针
484+
可空:N
485+
意思:输出缓冲区大小
486+
参数.三:xhToken
487+
In/Out:In
488+
类型:句柄
489+
可空:N
490+
意思:输入管理器句柄
491+
参数.四:pSt_ActionInfo
492+
In/Out:In
493+
类型:数据结构指针
494+
可空:N
495+
意思:输入要打包的信息
496+
返回值
497+
类型:逻辑型
498+
意思:是否成功
499+
备注:
500+
*********************************************************************/
501+
bool CProtocol_StoragePacket::Protocol_StoragePacket_Action(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, XENGINE_ACTIONINFO* pSt_ActionInfo)
502+
{
503+
Protocol_IsErrorOccur = false;
504+
505+
if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen))
506+
{
507+
Protocol_IsErrorOccur = true;
508+
Protocol_dwErrorCode = ERROR_XENGINE_STORAGE_PROTOCOL_PARAMENT;
509+
return false;
510+
}
511+
Json::Value st_JsonRoot;
512+
513+
st_JsonRoot["xhToken"] = (Json::Value::UInt64)xhToken;
514+
st_JsonRoot["tszFileName"] = pSt_ActionInfo->tszFileName;
515+
st_JsonRoot["tszFileUrl"] = pSt_ActionInfo->tszFileUrl;
516+
st_JsonRoot["byType"] = pSt_ActionInfo->byType;
517+
st_JsonRoot["tszBucketStr"] = pSt_ActionInfo->tszBucketStr;
518+
//打包输出信息
519+
*pInt_MsgLen = st_JsonRoot.toStyledString().length();
520+
memcpy(ptszMsgBuffer, st_JsonRoot.toStyledString().c_str(), *pInt_MsgLen);
521+
return true;
472522
}

XEngine_Source/StorageModule_Protocol/Protocol_Packet/Protocol_StoragePacket.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@ class CProtocol_StoragePacket
2323
bool Protocol_StoragePacket_BasicAuth(LPCXSTR lpszMethod, LPCXSTR lpszPostUrl, LPCXSTR lpszClientAddr, LPCXSTR lpszUser, LPCXSTR lpszPass, XCHAR* ptszMsgBuffer, int* pInt_MsgLen);
2424
bool Protocol_StoragePacket_UPDown(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszBuckKey, LPCXSTR lpszFileName, LPCXSTR lpszClientAddr, __int64x nFileSize, bool bDown, LPCXSTR lpszFileHash = NULL);
2525
bool Protocol_StoragePacket_REQFile(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszFileName = NULL, LPCXSTR lpszFileHash = NULL, XNETHANDLE xhToken = 0);
26+
bool Protocol_StoragePacket_Action(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, XENGINE_ACTIONINFO* pSt_ActionInfo);
2627
};

XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.cpp

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,4 +486,62 @@ bool CProtocol_StorageParse::Protocol_StorageParse_P2PToken(LPCXSTR lpszMsgBuffe
486486
}
487487
*pxhToken = st_JsonRoot["xhToken"].asUInt64();
488488
return true;
489+
}
490+
/********************************************************************
491+
函数名称:Protocol_StorageParse_Action
492+
函数功能:动作解析器
493+
参数.一:lpszMsgBuffer
494+
In/Out:In
495+
类型:常量字符指针
496+
可空:N
497+
意思:输入要解析的内容
498+
参数.二:nMsgLen
499+
In/Out:In
500+
类型:整数型
501+
可空:N
502+
意思:输入要解析的大小
503+
参数.三:pSt_ActionInfo
504+
In/Out:Out
505+
类型:数据结构指针
506+
可空:N
507+
意思:输出解析的数据
508+
返回值
509+
类型:逻辑型
510+
意思:是否成功
511+
备注:
512+
*********************************************************************/
513+
bool CProtocol_StorageParse::Protocol_StorageParse_Action(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_ACTIONINFO* pSt_ActionInfo)
514+
{
515+
Protocol_IsErrorOccur = false;
516+
517+
if ((NULL == lpszMsgBuffer))
518+
{
519+
Protocol_IsErrorOccur = true;
520+
Protocol_dwErrorCode = ERROR_XENGINE_STORAGE_PROTOCOL_PARAMENT;
521+
return false;
522+
}
523+
Json::Value st_JsonRoot;
524+
JSONCPP_STRING st_JsonError;
525+
Json::CharReaderBuilder st_JsonBuilder;
526+
//解析JSON
527+
std::unique_ptr<Json::CharReader> const pSt_JsonReader(st_JsonBuilder.newCharReader());
528+
if (!pSt_JsonReader->parse(lpszMsgBuffer, lpszMsgBuffer + _tcsxlen(lpszMsgBuffer), &st_JsonRoot, &st_JsonError))
529+
{
530+
Protocol_IsErrorOccur = true;
531+
Protocol_dwErrorCode = ERROR_XENGINE_STORAGE_PROTOCOL_PARSE;
532+
return false;
533+
}
534+
535+
if (st_JsonRoot["tszFileUrl"].isNull() || st_JsonRoot["byType"].isNull())
536+
{
537+
Protocol_IsErrorOccur = true;
538+
Protocol_dwErrorCode = ERROR_XENGINE_STORAGE_PROTOCOL_TOKEN;
539+
return false;
540+
}
541+
542+
pSt_ActionInfo->byType = st_JsonRoot["byType"].asInt();
543+
_tcsxcpy(pSt_ActionInfo->tszBucketStr, st_JsonRoot["tszBucketStr"].asCString());
544+
_tcsxcpy(pSt_ActionInfo->tszFileName, st_JsonRoot["tszFileName"].asCString());
545+
_tcsxcpy(pSt_ActionInfo->tszFileUrl, st_JsonRoot["tszFileUrl"].asCString());
546+
return true;
489547
}

XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@ class CProtocol_StorageParse
2323
bool Protocol_StorageParse_ProxyNotify(LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR* ptszClientAddr, XCHAR* ptszBuckKey, XCHAR* ptszFileName, XCHAR* ptszFileHash, __int64x* pInt_FileSize);
2424
bool Protocol_StorageParse_SpeedLimit(LPCXSTR lpszMsgBuffer, int nMsgLen, int* pInt_Code, int* pInt_Limit);
2525
bool Protocol_StorageParse_P2PToken(LPCXSTR lpszMsgBuffer, int nMsgLen, XNETHANDLE* pxhToken);
26+
bool Protocol_StorageParse_Action(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_ACTIONINFO* pSt_ActionInfo);
2627
};

XEngine_Source/StorageModule_Protocol/StorageModule_Protocol.def

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ EXPORTS
1010
Protocol_StorageParse_DirOperator
1111
Protocol_StorageParse_SpeedLimit
1212
Protocol_StorageParse_P2PToken
13+
Protocol_StorageParse_Action
1314

1415
Protocol_StoragePacket_BasicAuth
1516
Protocol_StoragePacket_UPDown
1617
Protocol_StoragePacket_QueryFile
1718
Protocol_StoragePacket_Info
1819
Protocol_StoragePacket_DirOperator
19-
Protocol_StoragePacket_REQFile
20+
Protocol_StoragePacket_REQFile
21+
Protocol_StoragePacket_Action

XEngine_Source/StorageModule_Protocol/StorageProtocol_Define.h

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,30 @@ extern "C" bool Protocol_StorageParse_SpeedLimit(LPCXSTR lpszMsgBuffer, int nMsg
221221
备注:
222222
*********************************************************************/
223223
extern "C" bool Protocol_StorageParse_P2PToken(LPCXSTR lpszMsgBuffer, int nMsgLen, XNETHANDLE* pxhToken);
224+
/********************************************************************
225+
函数名称:Protocol_StorageParse_Action
226+
函数功能:动作解析器
227+
参数.一:lpszMsgBuffer
228+
In/Out:In
229+
类型:常量字符指针
230+
可空:N
231+
意思:输入要解析的内容
232+
参数.二:nMsgLen
233+
In/Out:In
234+
类型:整数型
235+
可空:N
236+
意思:输入要解析的大小
237+
参数.三:pSt_ActionInfo
238+
In/Out:Out
239+
类型:数据结构指针
240+
可空:N
241+
意思:输出解析的数据
242+
返回值
243+
类型:逻辑型
244+
意思:是否成功
245+
备注:
246+
*********************************************************************/
247+
extern "C" bool Protocol_StorageParse_Action(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_ACTIONINFO * pSt_ActionInfo);
224248
/************************************************************************/
225249
/* 打包协议导出 */
226250
/************************************************************************/
@@ -462,4 +486,33 @@ extern "C" bool Protocol_StoragePacket_DirOperator(XCHAR * ptszMsgBuffer, int* p
462486
意思:是否成功
463487
备注:
464488
*********************************************************************/
465-
extern "C" bool Protocol_StoragePacket_REQFile(XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszFileName = NULL, LPCXSTR lpszFileHash = NULL, XNETHANDLE xhToken = 0);
489+
extern "C" bool Protocol_StoragePacket_REQFile(XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszFileName = NULL, LPCXSTR lpszFileHash = NULL, XNETHANDLE xhToken = 0);
490+
/********************************************************************
491+
函数名称:Protocol_StoragePacket_Action
492+
函数功能:动作脚本封装器
493+
参数.一:ptszMsgBuffer
494+
In/Out:Out
495+
类型:字符指针
496+
可空:N
497+
意思:输出组好包的请求缓冲区
498+
参数.二:pInt_MsgLen
499+
In/Out:Out
500+
类型:整数型指针
501+
可空:N
502+
意思:输出缓冲区大小
503+
参数.三:xhToken
504+
In/Out:In
505+
类型:句柄
506+
可空:N
507+
意思:输入管理器句柄
508+
参数.四:pSt_ActionInfo
509+
In/Out:In
510+
类型:数据结构指针
511+
可空:N
512+
意思:输入要打包的信息
513+
返回值
514+
类型:逻辑型
515+
意思:是否成功
516+
备注:
517+
*********************************************************************/
518+
extern "C" bool Protocol_StoragePacket_Action(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, XENGINE_ACTIONINFO* pSt_ActionInfo);

XEngine_Source/StorageModule_Protocol/pch.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ extern "C" bool Protocol_StorageParse_P2PToken(LPCXSTR lpszMsgBuffer, int nMsgLe
5353
{
5454
return m_StorageParse.Protocol_StorageParse_P2PToken(lpszMsgBuffer, nMsgLen, pxhToken);
5555
}
56+
extern "C" bool Protocol_StorageParse_Action(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_ACTIONINFO * pSt_ActionInfo)
57+
{
58+
return m_StorageParse.Protocol_StorageParse_Action(lpszMsgBuffer, nMsgLen, pSt_ActionInfo);
59+
}
5660
/************************************************************************/
5761
/* 打包协议导出 */
5862
/************************************************************************/
@@ -79,4 +83,8 @@ extern "C" bool Protocol_StoragePacket_DirOperator(XCHAR * ptszMsgBuffer, int* p
7983
extern "C" bool Protocol_StoragePacket_REQFile(XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszFileName, LPCXSTR lpszFileHash, XNETHANDLE xhToken)
8084
{
8185
return m_StoragePacket.Protocol_StoragePacket_REQFile(ptszMsgBuffer, pInt_MsgLen, lpszFileName, lpszFileHash, xhToken);
86+
}
87+
extern "C" bool Protocol_StoragePacket_Action(XCHAR * ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, XENGINE_ACTIONINFO * pSt_ActionInfo)
88+
{
89+
return m_StoragePacket.Protocol_StoragePacket_Action(ptszMsgBuffer, pInt_MsgLen, xhToken, pSt_ActionInfo);
8290
}

0 commit comments

Comments
 (0)