Skip to content

Commit f3d9a40

Browse files
committed
added:create topic support for http
modify:delete and create topic convert to tcp handle
1 parent 2fa9754 commit f3d9a40

10 files changed

Lines changed: 146 additions & 28 deletions

File tree

XEngine_Source/MQCore_HelpModule/APIHelp_Define.h

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,21 @@ extern "C" bool APIHelp_Counter_SerialGet(LPCXSTR lpszQueueName, __int64x* pInt_
6868
意思:是否成功
6969
备注:
7070
*********************************************************************/
71-
extern "C" bool APIHelp_Counter_SerialDel(LPCXSTR lpszQueueName);
71+
extern "C" bool APIHelp_Counter_SerialDel(LPCXSTR lpszQueueName);
72+
/*************************************************************************
73+
通用帮助函数导出
74+
**************************************************************************/
75+
/********************************************************************
76+
函数名称:APIHelp_MQHelp_ProtocolToHex
77+
函数功能:协议转二进制
78+
参数.一:pSt_ProtocolHdr
79+
In/Out:In/Out
80+
类型:数据结构指针
81+
可空:N
82+
意思:打包的协议
83+
返回值
84+
类型:逻辑型
85+
意思:是否成功
86+
备注:
87+
*********************************************************************/
88+
extern "C" bool APIHelp_MQHelp_JsonToHex(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr);
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#include "pch.h"
2+
#include "APIHelp_MQHelp.h"
3+
/********************************************************************
4+
// Created: 2025/05/23 14:16:56
5+
// File Name: D:\XEngine_MQService\XEngine_Source\MQCore_HelpModule\APIHelp_MQHelp\APIHelp_MQHelp.cpp
6+
// File Path: D:\XEngine_MQService\XEngine_Source\MQCore_HelpModule\APIHelp_MQHelp
7+
// File Base: APIHelp_MQHelp
8+
// File Ext: cpp
9+
// Project: XEngine
10+
// Author: qyt
11+
// Purpose: 通用帮助函数
12+
// History:
13+
*********************************************************************/
14+
CAPIHelp_MQHelp::CAPIHelp_MQHelp()
15+
{
16+
}
17+
CAPIHelp_MQHelp::~CAPIHelp_MQHelp()
18+
{
19+
20+
}
21+
//////////////////////////////////////////////////////////////////////////
22+
// 公有函数
23+
//////////////////////////////////////////////////////////////////////////
24+
/********************************************************************
25+
函数名称:APIHelp_MQHelp_ProtocolToHex
26+
函数功能:协议转二进制
27+
参数.一:pSt_ProtocolHdr
28+
In/Out:In/Out
29+
类型:数据结构指针
30+
可空:N
31+
意思:打包的协议
32+
返回值
33+
类型:逻辑型
34+
意思:是否成功
35+
备注:
36+
*********************************************************************/
37+
bool CAPIHelp_MQHelp::APIHelp_MQHelp_JsonToHex(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr)
38+
{
39+
APIHelp_IsErrorOccur = false;
40+
41+
pSt_ProtocolHdr->wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER;
42+
pSt_ProtocolHdr->byIsReply = true;
43+
pSt_ProtocolHdr->byVersion = ENUM_XENGINE_PROTOCOLHDR_PAYLOAD_TYPE_BIN;
44+
pSt_ProtocolHdr->unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_XMQ;
45+
pSt_ProtocolHdr->unPacketSize = sizeof(XENGINE_PROTOCOL_XMQ);
46+
pSt_ProtocolHdr->wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL;
47+
48+
return true;
49+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#pragma once
2+
/********************************************************************
3+
// Created: 2025/05/23 14:16:30
4+
// File Name: D:\XEngine_MQService\XEngine_Source\MQCore_HelpModule\APIHelp_MQHelp\APIHelp_MQHelp.h
5+
// File Path: D:\XEngine_MQService\XEngine_Source\MQCore_HelpModule\APIHelp_MQHelp
6+
// File Base: APIHelp_MQHelp
7+
// File Ext: h
8+
// Project: XEngine
9+
// Author: qyt
10+
// Purpose: 通用帮助函数
11+
// History:
12+
*********************************************************************/
13+
14+
class CAPIHelp_MQHelp
15+
{
16+
public:
17+
CAPIHelp_MQHelp();
18+
~CAPIHelp_MQHelp();
19+
public:
20+
bool APIHelp_MQHelp_JsonToHex(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr);
21+
protected:
22+
private:
23+
};

XEngine_Source/MQCore_HelpModule/MQCore_HelpModule.def

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,6 @@ EXPORTS
55

66
APIHelp_Counter_SerialSet
77
APIHelp_Counter_SerialGet
8-
APIHelp_Counter_SerialDel
8+
APIHelp_Counter_SerialDel
9+
10+
APIHelp_MQHelp_JsonToHex

XEngine_Source/MQCore_HelpModule/MQCore_HelpModule.vcxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,11 +233,13 @@
233233
<ClInclude Include="APIHelp_Counter\APIHelp_Counter.h" />
234234
<ClInclude Include="APIHelp_Define.h" />
235235
<ClInclude Include="APIHelp_Error.h" />
236+
<ClInclude Include="APIHelp_MQHelp\APIHelp_MQHelp.h" />
236237
<ClInclude Include="framework.h" />
237238
<ClInclude Include="pch.h" />
238239
</ItemGroup>
239240
<ItemGroup>
240241
<ClCompile Include="APIHelp_Counter\APIHelp_Counter.cpp" />
242+
<ClCompile Include="APIHelp_MQHelp\APIHelp_MQHelp.cpp" />
241243
<ClCompile Include="dllmain.cpp" />
242244
<ClCompile Include="pch.cpp">
243245
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>

XEngine_Source/MQCore_HelpModule/MQCore_HelpModule.vcxproj.filters

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@
1919
<Filter Include="源文件\APIHelp_Counter">
2020
<UniqueIdentifier>{75ffe4ca-a70b-4320-98d0-219b06839ac3}</UniqueIdentifier>
2121
</Filter>
22+
<Filter Include="源文件\APIHelp_MQHelp">
23+
<UniqueIdentifier>{0d962ca1-ecd7-42ec-a59d-8a9e2f8eb1d9}</UniqueIdentifier>
24+
</Filter>
25+
<Filter Include="头文件\APIHelp_MQHelp">
26+
<UniqueIdentifier>{343456e5-68f5-4e4e-9e32-61b7e0418105}</UniqueIdentifier>
27+
</Filter>
2228
</ItemGroup>
2329
<ItemGroup>
2430
<ClInclude Include="framework.h">
@@ -36,6 +42,9 @@
3642
<ClInclude Include="APIHelp_Error.h">
3743
<Filter>头文件</Filter>
3844
</ClInclude>
45+
<ClInclude Include="APIHelp_MQHelp\APIHelp_MQHelp.h">
46+
<Filter>头文件\APIHelp_MQHelp</Filter>
47+
</ClInclude>
3948
</ItemGroup>
4049
<ItemGroup>
4150
<ClCompile Include="dllmain.cpp">
@@ -47,6 +56,9 @@
4756
<ClCompile Include="APIHelp_Counter\APIHelp_Counter.cpp">
4857
<Filter>源文件\APIHelp_Counter</Filter>
4958
</ClCompile>
59+
<ClCompile Include="APIHelp_MQHelp\APIHelp_MQHelp.cpp">
60+
<Filter>源文件\APIHelp_MQHelp</Filter>
61+
</ClCompile>
5062
</ItemGroup>
5163
<ItemGroup>
5264
<None Include="MQCore_HelpModule.def">

XEngine_Source/MQCore_HelpModule/Makefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ LOADHDR = -I ./
66
LOADSO =
77
LIB =
88
LIBEX =
9-
OBJECTS = APIHelp_Counter.o pch.o
9+
OBJECTS = APIHelp_Counter.o APIHelp_MQHelp.o pch.o
1010

1111
ifeq ($(RELEASE),1)
1212
FLAGS = -c -D _RELEASE
@@ -52,6 +52,8 @@ all:$(OBJECTS)
5252

5353
APIHelp_Counter.o:./APIHelp_Counter/APIHelp_Counter.cpp
5454
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./APIHelp_Counter/APIHelp_Counter.cpp
55+
APIHelp_MQHelp.o:./APIHelp_MQHelp/APIHelp_MQHelp.cpp
56+
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./APIHelp_MQHelp/APIHelp_MQHelp.cpp
5557

5658
pch.o:./pch.cpp
5759
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./pch.cpp

XEngine_Source/MQCore_HelpModule/pch.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "pch.h"
22
#include "APIHelp_Counter/APIHelp_Counter.h"
3+
#include "APIHelp_MQHelp/APIHelp_MQHelp.h"
34
/********************************************************************
45
// Created: 2025/03/11 14:51:51
56
// File Name: D:\XEngine_MQService\XEngine_Source\MQCore_HelpModule\pch.cpp
@@ -15,6 +16,7 @@ bool APIHelp_IsErrorOccur = false;
1516
XLONG APIHelp_dwErrorCode = 0;
1617
//////////////////////////////////////////////////////////////////////////
1718
CAPIHelp_Counter m_HelpCounter;
19+
CAPIHelp_MQHelp m_MQHelp;
1820
//////////////////////////////////////////////////////////////////////////
1921
// 导出的函数
2022
//////////////////////////////////////////////////////////////////////////
@@ -40,4 +42,11 @@ extern "C" bool APIHelp_Counter_SerialGet(LPCXSTR lpszQueueName, __int64x* pInt_
4042
extern "C" bool APIHelp_Counter_SerialDel(LPCXSTR lpszQueueName)
4143
{
4244
return m_HelpCounter.APIHelp_Counter_SerialDel(lpszQueueName);
45+
}
46+
/*************************************************************************
47+
通用帮助函数导出
48+
**************************************************************************/
49+
extern "C" bool APIHelp_MQHelp_JsonToHex(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr)
50+
{
51+
return m_MQHelp.APIHelp_MQHelp_JsonToHex(pSt_ProtocolHdr);
4352
}

XEngine_Source/MQCore_HelpModule/pch.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include <XEngine_Include/XEngine_CommHdr.h>
2222
#include <XEngine_Include/XEngine_Types.h>
2323
#include <XEngine_Include/XEngine_ProtocolHdr.h>
24+
#include "../XQueue_ProtocolHdr.h"
2425
#include "APIHelp_Define.h"
2526
#include "APIHelp_Error.h"
2627
/********************************************************************

XEngine_Source/XEngine_MQServiceApp/MQService_HTTPTask/MQService_HTTPPost.cpp

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
bool MessageQueue_HttpTask_Post(LPCXSTR lpszClientAddr, LPCXSTR lpszFuncName, LPCXSTR lpszMsgBuffer, int nMsgLen)
1414
{
1515
int nSDLen = 0;
16+
XNETHANDLE xhToken = 0;
1617
XCHAR tszSDBuffer[1024] = {};
1718
XCHAR tszKeyStr[MAX_PATH] = {};
1819
XCHAR tszVluStr[MAX_PATH] = {};
@@ -21,13 +22,13 @@ bool MessageQueue_HttpTask_Post(LPCXSTR lpszClientAddr, LPCXSTR lpszFuncName, LP
2122
LPCXSTR lpszAPIGetTopic = _X("gettopic");
2223
LPCXSTR lpszAPIGetList = _X("getlist");
2324
LPCXSTR lpszAPIGetOnline = _X("getonline");
25+
LPCXSTR lpszAPICreateTopic = _X("createtopic");
2426
LPCXSTR lpszAPIDelTopic = _X("deltopic");
2527
LPCXSTR lpszAPIDelUser = _X("deluser");
2628

2729
//判断是否需要验证,不是注册协议
2830
if (st_ServiceCfg.st_XAuthorize.bHTTPAuth && (0 != _tcsxnicmp(lpszAPIRegister, lpszFuncName, _tcsxlen(lpszAPIRegister))))
2931
{
30-
XNETHANDLE xhToken = 0;
3132
if (ProtocolModule_Parse_Token(lpszMsgBuffer, nMsgLen, &xhToken))
3233
{
3334
if (!Session_Token_Get(xhToken))
@@ -149,35 +150,35 @@ bool MessageQueue_HttpTask_Post(LPCXSTR lpszClientAddr, LPCXSTR lpszFuncName, LP
149150
XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_MQAPP_NETTYPE_HTTP);
150151
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,发送的获取主题列表请求成功,获取到的主题列表个数:%d"), lpszClientAddr, nListCount);
151152
}
153+
else if (0 == _tcsxnicmp(lpszAPICreateTopic, lpszFuncName, _tcsxlen(lpszAPICreateTopic)))
154+
{
155+
//http://127.0.0.1:5202/api?function=createtopic
156+
157+
XENGINE_PROTOCOL_XMQ st_MQProtocol = {};
158+
XENGINE_PROTOCOLHDR st_ProtocolHdr = {};
159+
160+
ProtocolModule_Parse_Name(lpszMsgBuffer, nMsgLen, st_MQProtocol.tszMQKey);
161+
APIHelp_MQHelp_JsonToHex(&st_ProtocolHdr);
162+
163+
st_ProtocolHdr.xhToken = xhToken;
164+
st_ProtocolHdr.unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQTOPICCREATE;
165+
MessageQueue_TCP_Handle(&st_ProtocolHdr, lpszClientAddr, (LPCXSTR)&st_MQProtocol, sizeof(XENGINE_PROTOCOLHDR), XENGINE_MQAPP_NETTYPE_HTTP);
166+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求主题删除成功,主题名:%s"), lpszClientAddr, st_MQProtocol.tszMQKey);
167+
}
152168
else if (0 == _tcsxnicmp(lpszAPIDelTopic, lpszFuncName, _tcsxlen(lpszAPIDelTopic)))
153169
{
154170
//http://127.0.0.1:5202/api?function=deltopic
155-
XENGINE_DBTOPICOWNER st_DBOwner = {};
156-
XENGINE_DBUSERKEY st_UserKey = {};
157-
XENGINE_DBTIMERELEASE st_DBInfo = {};
158171

159-
XCHAR tszTopicName[MAX_PATH] = {};
160-
ProtocolModule_Parse_Name(lpszMsgBuffer, nMsgLen, tszTopicName);
172+
XENGINE_PROTOCOL_XMQ st_MQProtocol = {};
173+
XENGINE_PROTOCOLHDR st_ProtocolHdr = {};
174+
175+
ProtocolModule_Parse_Name(lpszMsgBuffer, nMsgLen, st_MQProtocol.tszMQKey);
176+
APIHelp_MQHelp_JsonToHex(&st_ProtocolHdr);
161177

162-
_tcsxcpy(st_DBOwner.tszQueueName, tszTopicName);
163-
_tcsxcpy(st_UserKey.tszKeyName, tszTopicName);
164-
_tcsxcpy(st_DBInfo.tszQueueName, tszTopicName);
165-
if (!DBModule_MQUser_OwnerDelete(&st_DBOwner))
166-
{
167-
ProtocolModule_Packet_Http(tszSDBuffer, &nSDLen, ERROR_XENGINE_MESSAGE_HTTP_NOTFOUND, "topic name not found");
168-
XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_MQAPP_NETTYPE_HTTP);
169-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求HTTP删除主题失败,主题不存在:%s"), lpszClientAddr, tszTopicName);
170-
return false;
171-
}
172-
//清楚数据库
173-
APIHelp_Counter_SerialDel(tszTopicName);
174-
DBModule_MQData_DeleteTable(tszTopicName);
175-
DBModule_MQUser_KeyDelete(&st_UserKey);
176-
DBModule_MQUser_TimeDelete(&st_DBInfo);
177-
178-
ProtocolModule_Packet_Http(tszSDBuffer, &nSDLen);
179-
XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_MQAPP_NETTYPE_HTTP);
180-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求主题删除成功,主题名:%s"), lpszClientAddr, tszTopicName);
178+
st_ProtocolHdr.xhToken = xhToken;
179+
st_ProtocolHdr.unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQTOPICDELETE;
180+
MessageQueue_TCP_Handle(&st_ProtocolHdr, lpszClientAddr, (LPCXSTR)&st_MQProtocol, sizeof(XENGINE_PROTOCOLHDR), XENGINE_MQAPP_NETTYPE_HTTP);
181+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求主题删除成功,主题名:%s"), lpszClientAddr, st_MQProtocol.tszMQKey);
181182
}
182183
else if (0 == _tcsxnicmp(lpszAPIDelUser, lpszFuncName, _tcsxlen(lpszAPIDelUser)))
183184
{

0 commit comments

Comments
 (0)