Skip to content

Commit 22b659e

Browse files
committed
added:mqtt protocol support
1 parent 2555b36 commit 22b659e

File tree

19 files changed

+311
-13
lines changed

19 files changed

+311
-13
lines changed

XEngine_Release/XEngine_Config/XEngine_Config.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"nTCPPort": 5300,
33
"nWSPort": 5301,
44
"nHTTPPort": 5302,
5+
"nMQTTPort": 5303,
56
"bDeamon": false,
67
"bTimeNotify": false,
78
"XMax": {
@@ -10,7 +11,8 @@
1011
"nIOThread": 2,
1112
"nTCPThread": 2,
1213
"nWSThread": 2,
13-
"nHTTPThread": 2
14+
"nHTTPThread": 2,
15+
"nMQTTThread": 2
1416
},
1517
"XTime": {
1618
"nHeartCheck": 3,
@@ -51,7 +53,7 @@
5153
}
5254
},
5355
"XCrypto": {
54-
"bEnable": false,
56+
"bEnable": true,
5557
"nCryptionType": 1,
5658
"tszPassKey": "123123aa"
5759
},

XEngine_Source/AuthorizeModule_Configure/Config_Define.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ typedef struct
2020
int nTCPPort; //TCP端口
2121
int nWSPort; //WEBSOCKET端口
2222
int nHTTPPort; //HTTP管理端口
23+
int nMQTTPort; //MQTT端口
2324
bool bDeamon; //守护进程,LINUX
2425
bool bTimeNotify; //超时通知设置,真为一直通知,假为通知一次关闭客户端
2526
struct
@@ -30,6 +31,7 @@ typedef struct
3031
int nTCPThread; //TCP业务线程个数
3132
int nWSThread; //WEBSOCKET业务线程个数
3233
int nHTTPThread; //HTTP业务线程个数
34+
int nMQTTThread; //MQTT业务线程个数
3335
}st_XMax;
3436
struct
3537
{

XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,11 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE
7575
pSt_ServerConfig->nTCPPort = st_JsonRoot["nTCPPort"].asInt();
7676
pSt_ServerConfig->nWSPort = st_JsonRoot["nWSPort"].asInt();
7777
pSt_ServerConfig->nHTTPPort = st_JsonRoot["nHTTPPort"].asInt();
78+
pSt_ServerConfig->nMQTTPort = st_JsonRoot["nMQTTPort"].asInt();
7879
pSt_ServerConfig->bDeamon = st_JsonRoot["bDeamon"].asBool();
7980
pSt_ServerConfig->bTimeNotify = st_JsonRoot["bTimeNotify"].asBool();
8081
//最大配置
81-
if (st_JsonRoot["XMax"].empty() || (6 != st_JsonRoot["XMax"].size()))
82+
if (st_JsonRoot["XMax"].empty() || (7 != st_JsonRoot["XMax"].size()))
8283
{
8384
Config_IsErrorOccur = true;
8485
Config_dwErrorCode = ERROR_AUTHORIZE_MODULE_CONFIGURE_XMAX;
@@ -91,6 +92,7 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE
9192
pSt_ServerConfig->st_XMax.nTCPThread = st_JsonXMax["nTCPThread"].asInt();
9293
pSt_ServerConfig->st_XMax.nWSThread = st_JsonXMax["nWSThread"].asInt();
9394
pSt_ServerConfig->st_XMax.nHTTPThread = st_JsonXMax["nHTTPThread"].asInt();
95+
pSt_ServerConfig->st_XMax.nMQTTThread = st_JsonXMax["nMQTTThread"].asInt();
9496
//时间配置
9597
if (st_JsonRoot["XTime"].empty() || (4 != st_JsonRoot["XTime"].size()))
9698
{

XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,77 @@ bool CProtocol_Packet::Protocol_Packet_HDRComm(XCHAR* ptszMsgBuffer, int* pInt_M
6060
Protocol_dwErrorCode = ERROR_AUTHORIZE_MODULE_PROTOCOL_PARAMENT;
6161
return false;
6262
}
63-
if (0 == enDeviceType)
63+
64+
if (XENGINE_AUTH_APP_NETTYPE_TCP == enDeviceType)
6465
{
6566
*pInt_MsgLen = sizeof(XENGINE_PROTOCOLHDR);
6667
memcpy(ptszMsgBuffer, pSt_ProtocolHdr, *pInt_MsgLen);
6768
}
69+
else if (XENGINE_AUTH_APP_NETTYPE_MQTT == enDeviceType)
70+
{
71+
int nRVLen = 0;
72+
XCHAR tszRVBuffer[1024] = {};
73+
74+
if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPLOGIN == pSt_ProtocolHdr->unOperatorCode)
75+
{
76+
if (0 == pSt_ProtocolHdr->wReserve)
77+
{
78+
int nRVLen = 0;
79+
int nListCount = 6;
80+
XCHAR tszRVBuffer[1024];
81+
MQTTPROTOCOL_HDRPROPERTY** ppSt_HDRProperty;
82+
83+
BaseLib_Memory_Malloc((XPPPMEM)&ppSt_HDRProperty, nListCount, sizeof(MQTTPROTOCOL_HDRPROPERTY));
84+
85+
ppSt_HDRProperty[0]->nProLen = 4;
86+
ppSt_HDRProperty[0]->st_unValue.nValue = 1024000;
87+
ppSt_HDRProperty[0]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_PACKMAX;
88+
89+
ppSt_HDRProperty[1]->nProLen = 1;
90+
ppSt_HDRProperty[1]->st_unValue.byValue = 1;
91+
ppSt_HDRProperty[1]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_REVERAVAI;
92+
93+
ppSt_HDRProperty[2]->nProLen = 1;
94+
ppSt_HDRProperty[2]->st_unValue.byValue = 1;
95+
ppSt_HDRProperty[2]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_SHAREDSUBAVAI;
96+
97+
ppSt_HDRProperty[3]->nProLen = 1;
98+
ppSt_HDRProperty[3]->st_unValue.byValue = 1;
99+
ppSt_HDRProperty[3]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_SUBIDAVAI;
100+
101+
ppSt_HDRProperty[4]->nProLen = 2;
102+
ppSt_HDRProperty[4]->st_unValue.wValue = 65535;
103+
ppSt_HDRProperty[4]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_ALIASMAX;
104+
105+
ppSt_HDRProperty[5]->nProLen = 1;
106+
ppSt_HDRProperty[5]->st_unValue.byValue = 1;
107+
ppSt_HDRProperty[5]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_WILDCARDSUBAVAI;
108+
109+
MQTTProtocol_Packet_REPConnect(tszRVBuffer, &nRVLen, 0, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_REASON_SUCCESS, &ppSt_HDRProperty, nListCount);
110+
MQTTProtocol_Packet_Header(ptszMsgBuffer, pInt_MsgLen, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_CONNACK, tszRVBuffer, nRVLen);
111+
BaseLib_Memory_Free((XPPPMEM)&ppSt_HDRProperty, nListCount);
112+
}
113+
else
114+
{
115+
MQTTProtocol_Packet_REPConnect(tszRVBuffer, &nRVLen, 0, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_REASON_USERPASS);
116+
MQTTProtocol_Packet_Header(ptszMsgBuffer, pInt_MsgLen, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_CONNACK, tszRVBuffer, nRVLen);
117+
}
118+
}
119+
else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_EXPIRED == pSt_ProtocolHdr->unOperatorCode)
120+
{
121+
Json::Value st_JsonRoot;
122+
st_JsonRoot["wHeader"] = pSt_ProtocolHdr->wHeader;
123+
st_JsonRoot["wTail"] = pSt_ProtocolHdr->wTail;
124+
st_JsonRoot["xhToken"] = (Json::Value::UInt64)pSt_ProtocolHdr->xhToken;
125+
st_JsonRoot["unOperatorType"] = pSt_ProtocolHdr->unOperatorType;
126+
st_JsonRoot["unOperatorCode"] = pSt_ProtocolHdr->unOperatorCode;
127+
st_JsonRoot["wCrypto"] = pSt_ProtocolHdr->wCrypto;
128+
st_JsonRoot["wReserve"] = pSt_ProtocolHdr->wReserve;
129+
130+
MQTTProtocol_Packet_REQPublish(tszRVBuffer, &nRVLen, _X("authorize"), st_JsonRoot.toStyledString().c_str(), st_JsonRoot.toStyledString().length());
131+
MQTTProtocol_Packet_Header(ptszMsgBuffer, pInt_MsgLen, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_PUBLISH, tszRVBuffer, nRVLen);
132+
}
133+
}
68134
else
69135
{
70136
Json::Value st_JsonRoot;

XEngine_Source/AuthorizeModule_Protocol/pch.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ using namespace std;
2424
#include <XEngine_Include/XEngine_ProtocolHdr.h>
2525
#include <XEngine_Include/XEngine_BaseLib/BaseLib_Define.h>
2626
#include <XEngine_Include/XEngine_BaseLib/BaseLib_Error.h>
27+
#include <XEngine_Include/XEngine_Core/ManagePool_Define.h>
28+
#include <XEngine_Include/XEngine_RfcComponents/MQTTProtocol_Define.h>
29+
#include <XEngine_Include/XEngine_RfcComponents/MQTTProtocol_Error.h>
2730
#include "../XEngine_DependLibrary/XEngine_Module/XEngine_Verification/Verification_Define.h"
2831
#include "../XAuth_Protocol.h"
2932
#include "../AuthorizeModule_Configure/Config_Define.h"
@@ -47,6 +50,7 @@ extern XLONG Protocol_dwErrorCode;
4750

4851
#ifdef _MSC_BUILD
4952
#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib")
53+
#pragma comment(lib,"XEngine_RfcComponents/RfcComponents_MQTTProtocol.lib")
5054
#ifdef _DEBUG
5155
#ifdef _M_X64
5256
#pragma comment(lib,"../x64/Debug/jsoncpp")

XEngine_Source/VSCopy_Arm64.bat

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ copy /y "%XEngine_LibArm64%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./"
1818

1919
copy /y "%XEngine_LibArm64%\XEngine_RfcComponents\RfcComponents_WSProtocol.dll" "./"
2020
copy /y "%XEngine_LibArm64%\XEngine_RfcComponents\RfcComponents_HttpProtocol.dll" "./"
21+
copy /y "%XEngine_LibArm64%\XEngine_RfcComponents\RfcComponents_MQTTProtocol.dll" "./"
2122

2223
copy /y "%XEngine_LibArm64%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./"
2324
copy /y "%XEngine_LibArm64%\XEngine_SystemSdk\XEngine_SystemConfig.dll" "./"

XEngine_Source/VSCopy_Debug.bat

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ copy /y "D:\XEngine\XEngine_SourceCode\Debug\HelpComponents_XLog.dll" "./"
1818

1919
copy /y "D:\XEngine\XEngine_SourceCode\Debug\RfcComponents_WSProtocol.dll" "./"
2020
copy /y "D:\XEngine\XEngine_SourceCode\Debug\RfcComponents_HttpProtocol.dll" "./"
21+
copy /y "D:\XEngine\XEngine_SourceCode\Debug\RfcComponents_MQTTProtocol.dll" "./"
2122

2223
copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_SystemApi.dll" "./"
2324
copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_SystemConfig.dll" "./"

XEngine_Source/VSCopy_x64.bat

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ copy /y "%XEngine_Lib64%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./"
1818

1919
copy /y "%XEngine_Lib64%\XEngine_RfcComponents\RfcComponents_WSProtocol.dll" "./"
2020
copy /y "%XEngine_Lib64%\XEngine_RfcComponents\RfcComponents_HttpProtocol.dll" "./"
21+
copy /y "%XEngine_Lib64%\XEngine_RfcComponents\RfcComponents_MQTTProtocol.dll" "./"
2122

2223
copy /y "%XEngine_Lib64%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./"
2324
copy /y "%XEngine_Lib64%\XEngine_SystemSdk\XEngine_SystemConfig.dll" "./"

XEngine_Source/VSCopy_x86.bat

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ copy /y "%XEngine_Lib32%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./"
1818

1919
copy /y "%XEngine_Lib32%\XEngine_RfcComponents\RfcComponents_WSProtocol.dll" "./"
2020
copy /y "%XEngine_Lib32%\XEngine_RfcComponents\RfcComponents_HttpProtocol.dll" "./"
21+
copy /y "%XEngine_Lib32%\XEngine_RfcComponents\RfcComponents_MQTTProtocol.dll" "./"
2122

2223
copy /y "%XEngine_Lib32%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./"
2324
copy /y "%XEngine_Lib32%\XEngine_SystemSdk\XEngine_SystemConfig.dll" "./"

XEngine_Source/XAuth_Protocol.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@
1010
// Purpose: 验证协议头
1111
// History:
1212
*********************************************************************/
13+
#define XENGINE_AUTH_APP_NETTYPE_TCP 0
14+
#define XENGINE_AUTH_APP_NETTYPE_WS 1
15+
#define XENGINE_AUTH_APP_NETTYPE_HTTP 2
16+
#define XENGINE_AUTH_APP_NETTYPE_MQTT 3
17+
1318
#define XENGINE_AUTHREG_SERVICE_SQL_MAX_USERNAME 32
1419
//////////////////////////////////////////////////////////////////////////
1520
// 导出的协议定义

0 commit comments

Comments
 (0)