Skip to content

Commit 3b670de

Browse files
committed
added:mqtt service supported
1 parent e76671e commit 3b670de

File tree

12 files changed

+238
-13
lines changed

12 files changed

+238
-13
lines changed

XEngine_Source/MQCore_ConfigModule/Config_Define.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ typedef struct
2121
int nTCPPort;
2222
int nHttpPort;
2323
int nWSPort;
24+
int nMQTTPort;
2425
struct
2526
{
2627
int nMaxClient;
@@ -29,6 +30,7 @@ typedef struct
2930
int nTCPThread;
3031
int nHttpThread;
3132
int nWSThread;
33+
int nMQTTThread;
3234
}st_XMax;
3335
struct
3436
{

XEngine_Source/MQCore_ConfigModule/Config_Json/Config_Json.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,9 @@ bool CConfig_Json::Config_Json_File(LPCXSTR lpszConfigFile,XENGINE_SERVERCONFIG
6969
pSt_ServerConfig->nTCPPort = st_JsonRoot["nTCPPort"].asInt();
7070
pSt_ServerConfig->nHttpPort = st_JsonRoot["nHttpPort"].asInt();
7171
pSt_ServerConfig->nWSPort = st_JsonRoot["nWSPort"].asInt();
72+
pSt_ServerConfig->nMQTTPort = st_JsonRoot["nMQTTPort"].asInt();
7273

73-
if (st_JsonRoot["XMax"].empty() || (6 != st_JsonRoot["XMax"].size()))
74+
if (st_JsonRoot["XMax"].empty() || (7 != st_JsonRoot["XMax"].size()))
7475
{
7576
Config_IsErrorOccur = true;
7677
Config_dwErrorCode = ERROR_MQ_MODULE_CONFIG_JSON_XMAX;
@@ -83,6 +84,7 @@ bool CConfig_Json::Config_Json_File(LPCXSTR lpszConfigFile,XENGINE_SERVERCONFIG
8384
pSt_ServerConfig->st_XMax.nTCPThread = st_JsonXMax["nTCPThread"].asInt();
8485
pSt_ServerConfig->st_XMax.nHttpThread = st_JsonXMax["nHttpThread"].asInt();
8586
pSt_ServerConfig->st_XMax.nWSThread = st_JsonXMax["nWSThread"].asInt();
87+
pSt_ServerConfig->st_XMax.nMQTTThread = st_JsonXMax["nMQTTThread"].asInt();
8688

8789
if (st_JsonRoot["XTime"].empty() || (1 != st_JsonRoot["XTime"].size()))
8890
{

XEngine_Source/XEngine_MQServiceApp/MQService_Hdr.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ using namespace std;
3939
#include <XEngine_Include/XEngine_RfcComponents/HttpProtocol_Error.h>
4040
#include <XEngine_Include/XEngine_RfcComponents/WSProtocol_Define.h>
4141
#include <XEngine_Include/XEngine_RfcComponents/WSProtocol_Error.h>
42+
#include <XEngine_Include/XEngine_RfcComponents/MQTTProtocol_Define.h>
43+
#include <XEngine_Include/XEngine_RfcComponents/MQTTProtocol_Error.h>
4244
#include "../XEngine_Depend/XEngine_Module/XEngine_InfoReport/InfoReport_Define.h"
4345
#include "../XEngine_Depend/XEngine_Module/XEngine_InfoReport/InfoReport_Error.h"
4446

@@ -62,6 +64,7 @@ extern XHANDLE xhLog;
6264
extern XHANDLE xhTCPSocket;
6365
extern XHANDLE xhHTTPSocket;
6466
extern XHANDLE xhWSSocket;
67+
extern XHANDLE xhMQTTSocket;
6568

6669
extern XHANDLE xhTCPPacket;
6770
extern XHANDLE xhHTTPPacket;
@@ -70,6 +73,7 @@ extern XHANDLE xhWSPacket;
7073
extern XHANDLE xhTCPPool;
7174
extern XHANDLE xhHttpPool;
7275
extern XHANDLE xhWSPool;
76+
extern XHANDLE xhMQTTPool;
7377

7478
extern XENGINE_SERVERCONFIG st_ServiceCfg;
7579
extern MESSAGEQUEUE_DBCONFIG st_DBConfig;
@@ -80,6 +84,7 @@ extern MESSAGEQUEUE_DBCONFIG st_DBConfig;
8084
#include "MQService_HttpTask.h"
8185
#include "MQService_WSTask.h"
8286
#include "MQService_Task.h"
87+
#include "MQService_MQTTTask.h"
8388

8489
#ifdef _MSC_BUILD
8590
#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib.lib")
@@ -90,6 +95,7 @@ extern MESSAGEQUEUE_DBCONFIG st_DBConfig;
9095
#pragma comment(lib,"XEngine_HelpComponents/HelpComponents_Packets.lib")
9196
#pragma comment(lib,"XEngine_RfcComponents/RfcComponents_HttpProtocol.lib")
9297
#pragma comment(lib,"XEngine_RfcComponents/RfcComponents_WSProtocol.lib")
98+
#pragma comment(lib,"XEngine_RfcComponents/RfcComponents_MQTTProtocol.lib")
9399
#pragma comment(lib,"Ws2_32.lib")
94100
#ifdef _DEBUG
95101
#ifdef _WIN64
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
#include "MQService_Hdr.h"
2+
3+
XHTHREAD CALLBACK MessageQueue_MQTTThread(XPVOID lParam)
4+
{
5+
int nThreadPos = *(int*)lParam;
6+
nThreadPos++;
7+
while (bIsRun)
8+
{
9+
if (!MQTTProtocol_Parse_WaitEvent(nThreadPos))
10+
{
11+
continue;
12+
}
13+
int nListCount = 0;
14+
XENGINE_MANAGEPOOL_TASKEVENT** ppSst_ListAddr;
15+
16+
MQTTProtocol_Parse_GetPool(nThreadPos, &ppSst_ListAddr, &nListCount);
17+
for (int i = 0; i < nListCount; i++)
18+
{
19+
for (int j = 0; j < ppSst_ListAddr[i]->nPktCount; j++)
20+
{
21+
MQTTPROTOCOL_INFORMATION st_MQTTProtcol = {};
22+
23+
if (MQTTProtocol_Parse_Recv(ppSst_ListAddr[i]->tszClientAddr, &st_MQTTProtcol))
24+
{
25+
MQService_MQTT_Handle(ppSst_ListAddr[i]->tszClientAddr, &st_MQTTProtcol);
26+
}
27+
}
28+
}
29+
BaseLib_OperatorMemory_Free((XPPPMEM)&ppSst_ListAddr, nListCount);
30+
}
31+
return 0;
32+
}
33+
void Packet_Property(XCHAR* ptszMsgBuffer, int* pInt_Len, MQTTPROTOCOL_HDRPROPERTY*** pppSt_HDRProperty, int nListCount)
34+
{
35+
BaseLib_OperatorMemory_Malloc((XPPPMEM)pppSt_HDRProperty, nListCount, sizeof(MQTTPROTOCOL_HDRPROPERTY));
36+
37+
(*pppSt_HDRProperty)[0]->nProLen = 4;
38+
(*pppSt_HDRProperty)[0]->st_unValue.nValue = 1024000;
39+
(*pppSt_HDRProperty)[0]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_PACKMAX;
40+
41+
(*pppSt_HDRProperty)[1]->nProLen = 1;
42+
(*pppSt_HDRProperty)[1]->st_unValue.byValue = 1;
43+
(*pppSt_HDRProperty)[1]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_REVERAVAI;
44+
45+
(*pppSt_HDRProperty)[2]->nProLen = 1;
46+
(*pppSt_HDRProperty)[2]->st_unValue.byValue = 1;
47+
(*pppSt_HDRProperty)[2]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_SHAREDSUBAVAI;
48+
49+
(*pppSt_HDRProperty)[3]->nProLen = 1;
50+
(*pppSt_HDRProperty)[3]->st_unValue.byValue = 1;
51+
(*pppSt_HDRProperty)[3]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_SUBIDAVAI;
52+
53+
(*pppSt_HDRProperty)[4]->nProLen = 2;
54+
(*pppSt_HDRProperty)[4]->st_unValue.wValue = 65535;
55+
(*pppSt_HDRProperty)[4]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_ALIASMAX;
56+
57+
(*pppSt_HDRProperty)[5]->nProLen = 1;
58+
(*pppSt_HDRProperty)[5]->st_unValue.byValue = 1;
59+
(*pppSt_HDRProperty)[5]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_WILDCARDSUBAVAI;
60+
}
61+
bool MQService_MQTT_Handle(LPCXSTR lpszClientAddr, MQTTPROTOCOL_INFORMATION* pSt_MQTTProtcol)
62+
{
63+
int nSDLen = 0;
64+
int nRVLen = 0;
65+
XCHAR tszSDBuffer[1024];
66+
XCHAR tszRVBuffer[1024];
67+
68+
memset(tszSDBuffer, '\0', sizeof(tszSDBuffer));
69+
memset(tszRVBuffer, '\0', sizeof(tszRVBuffer));
70+
//是不是连接
71+
if (XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_CONNECT == pSt_MQTTProtcol->st_FixedHdr.byMsgType)
72+
{
73+
int nListCount = 6;
74+
MQTTPROTOCOL_HDRPROPERTY** ppSt_HDRProperty;
75+
76+
Packet_Property(tszSDBuffer, &nSDLen, &ppSt_HDRProperty, nListCount);
77+
MQTTProtocol_Packet_REPConnect(tszRVBuffer, &nRVLen, 0, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_REASON_SUCCESS, &ppSt_HDRProperty, nListCount);
78+
MQTTProtocol_Packet_Header(tszSDBuffer, &nSDLen, nRVLen, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_CONNACK, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_FLAG_CONNACK);
79+
memcpy(tszSDBuffer + nSDLen, tszRVBuffer, nRVLen);
80+
nSDLen += nRVLen;
81+
82+
XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_MQAPP_NETTYPE_TCP);
83+
}
84+
else if (XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_SUBSCRIBE == pSt_MQTTProtcol->st_FixedHdr.byMsgType)
85+
{
86+
MQTTProtocol_Packet_REPComm(tszRVBuffer, &nRVLen, pSt_MQTTProtcol->wMsgID, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_REASON_SUCCESS);
87+
MQTTProtocol_Packet_Header(tszSDBuffer, &nSDLen, nRVLen, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_SUBACK, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_FLAG_SUBACK);
88+
memcpy(tszSDBuffer + nSDLen, tszRVBuffer, nRVLen);
89+
nSDLen += nRVLen;
90+
91+
XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_MQAPP_NETTYPE_TCP);
92+
}
93+
else if (XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_UNSUBSCRIBE == pSt_MQTTProtcol->st_FixedHdr.byMsgType)
94+
{
95+
MQTTProtocol_Packet_REPComm(tszRVBuffer, &nRVLen, pSt_MQTTProtcol->wMsgID, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_REASON_SUCCESS);
96+
MQTTProtocol_Packet_Header(tszSDBuffer, &nSDLen, nRVLen, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_UNSUBACK, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_FLAG_UNSUBACK);
97+
memcpy(tszSDBuffer + nSDLen, tszRVBuffer, nRVLen);
98+
nSDLen += nRVLen;
99+
100+
XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_MQAPP_NETTYPE_TCP);
101+
}
102+
else if (XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_PUBLISH == pSt_MQTTProtcol->st_FixedHdr.byMsgType)
103+
{
104+
if ((XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_FLAG_PUBLISH_QOS1 == pSt_MQTTProtcol->st_FixedHdr.byMsgFlag) || (XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_FLAG_PUBLISH_QOS2 == pSt_MQTTProtcol->st_FixedHdr.byMsgFlag))
105+
{
106+
//需要回复
107+
MQTTProtocol_Packet_REPPublish(tszRVBuffer, &nRVLen, pSt_MQTTProtcol->wMsgID, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_REASON_SUCCESS);
108+
MQTTProtocol_Packet_Header(tszSDBuffer, &nSDLen, nRVLen, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_PUBACK, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_FLAG_PUBACK);
109+
memcpy(tszSDBuffer + nSDLen, tszRVBuffer, nRVLen);
110+
nSDLen += nRVLen;
111+
112+
XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_MQAPP_NETTYPE_TCP);
113+
}
114+
}
115+
else if (XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_PINGREQ == pSt_MQTTProtcol->st_FixedHdr.byMsgType)
116+
{
117+
MQTTProtocol_Packet_Header(tszSDBuffer, &nSDLen, 0, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_PINGREP, 0);
118+
XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_MQAPP_NETTYPE_TCP);
119+
}
120+
return true;
121+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#pragma once
2+
3+
XHTHREAD CALLBACK MessageQueue_MQTTThread(XPVOID lParam);
4+
bool MQService_MQTT_Handle(LPCXSTR lpszClientAddr, MQTTPROTOCOL_INFORMATION *pSt_MQTTProtcol);

XEngine_Source/XEngine_MQServiceApp/MQService_Net.cpp

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,37 @@ bool CALLBACK MessageQueue_Callback_TCPLogin(LPCXSTR lpszClientAddr, XSOCKET hSo
88
}
99
void CALLBACK MessageQueue_Callback_TCPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg,int nMsgLen,XPVOID lParam)
1010
{
11-
if (!HelpComponents_Datas_PostEx(xhTCPPacket,lpszClientAddr,lpszRecvMsg,nMsgLen))
12-
{
13-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR,_X("投递TCP数据包到消息队列失败,错误:%lX"),Packets_GetLastError());
14-
return;
15-
}
16-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("投递TCP数据包到消息队列成功,%d"), nMsgLen);
11+
if (!HelpComponents_Datas_PostEx(xhTCPPacket, lpszClientAddr, lpszRecvMsg, nMsgLen))
12+
{
13+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("投递TCP数据包到消息队列失败,错误:%lX"), Packets_GetLastError());
14+
return;
15+
}
16+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("投递TCP数据包到消息队列成功,%d"), nMsgLen);
1717
}
1818
void CALLBACK MessageQueue_Callback_TCPLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam)
1919
{
2020
XEngine_MQXService_Close(lpszClientAddr, XENGINE_MQAPP_NETTYPE_TCP, false);
2121
}
2222
//////////////////////////////////////////////////////////////////////////
23+
bool CALLBACK MessageQueue_Callback_MQTTLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam)
24+
{
25+
MQTTProtocol_Parse_Insert(lpszClientAddr);
26+
return true;
27+
}
28+
void CALLBACK MessageQueue_Callback_MQTTRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam)
29+
{
30+
if (!MQTTProtocol_Parse_Send(lpszClientAddr, lpszRecvMsg, nMsgLen))
31+
{
32+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("投递MQTT数据包到消息队列失败,错误:%lX"), MQTTProtocol_GetLastError());
33+
return;
34+
}
35+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("投递MQTT数据包到消息队列成功,%d"), nMsgLen);
36+
}
37+
void CALLBACK MessageQueue_Callback_MQTTLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam)
38+
{
39+
XEngine_MQXService_Close(lpszClientAddr, XENGINE_MQAPP_NETTYPE_MQTT, false);
40+
}
41+
//////////////////////////////////////////////////////////////////////////
2342
bool CALLBACK MessageQueue_Callback_HttpLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam)
2443
{
2544
HttpProtocol_Server_CreateClientEx(xhHTTPPacket, lpszClientAddr, 0);
@@ -88,12 +107,18 @@ void XEngine_MQXService_Close(LPCXSTR lpszClientAddr, int nIPProto, bool bHeart)
88107
NetCore_TCPXCore_CloseForClientEx(xhWSSocket, lpszClientAddr);
89108
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Websocket客户端离开,Websocket客户端地址:%s"), lpszClientAddr);
90109
}
91-
else
110+
else if (XENGINE_MQAPP_NETTYPE_HTTP == nIPProto)
92111
{
93112
HttpProtocol_Server_CloseClinetEx(xhHTTPPacket, lpszClientAddr);
94113
NetCore_TCPXCore_CloseForClientEx(xhHTTPSocket, lpszClientAddr);
95114
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端离开,HTTP客户端地址:%s"), lpszClientAddr);
96115
}
116+
else
117+
{
118+
MQTTProtocol_Parse_Delete(lpszClientAddr);
119+
NetCore_TCPXCore_CloseForClientEx(xhTCPSocket, lpszClientAddr);
120+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("TCP客户端离开,TCP客户端地址:%s"), lpszClientAddr);
121+
}
97122
XENGINE_PROTOCOL_USERINFO st_UserInfo;
98123
memset(&st_UserInfo, '\0', sizeof(XENGINE_PROTOCOL_USERINFO));
99124
if (SessionModule_Client_GetUser(lpszClientAddr, st_UserInfo.tszUserName))

XEngine_Source/XEngine_MQServiceApp/MQService_Net.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ bool CALLBACK MessageQueue_Callback_TCPLogin(LPCXSTR lpszClientAddr, XSOCKET hSo
44
void CALLBACK MessageQueue_Callback_TCPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg,int nMsgLen,XPVOID lParam); //接受到数据
55
void CALLBACK MessageQueue_Callback_TCPLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); //用户离开
66

7+
bool CALLBACK MessageQueue_Callback_MQTTLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam);
8+
void CALLBACK MessageQueue_Callback_MQTTRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam);
9+
void CALLBACK MessageQueue_Callback_MQTTLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam);
10+
711
bool CALLBACK MessageQueue_Callback_HttpLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam);
812
void CALLBACK MessageQueue_Callback_HttpRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam);
913
void CALLBACK MessageQueue_Callback_HttpLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam);

XEngine_Source/XEngine_MQServiceApp/Makefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ LIB = -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool
1111
-lMQCore_ConfigModule -lMQCore_ProtocolModule -lMQCore_SessionModule -lMQCore_DBModule \
1212
-ljsoncpp -lXEngine_InfoReport
1313
LIBEX =
14-
OBJECTS = MQService_Net.o MQService_Config.o MQService_TCPTask.o MQService_HttpTask.o MQService_WSTask.o MQService_Task.o XEngine_MQServiceApp.o
14+
OBJECTS = MQService_Net.o MQService_Config.o MQService_TCPTask.o MQService_HttpTask.o MQService_WSTask.o MQService_Task.o MQService_MQTTTask.o XEngine_MQServiceApp.o
1515

1616
ifeq ($(RELEASE),1)
1717
FLAGS = -c
@@ -60,6 +60,8 @@ MQService_WSTask.o:./MQService_WSTask.cpp
6060
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./MQService_WSTask.cpp
6161
MQService_Task.o:./MQService_Task.cpp
6262
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./MQService_Task.cpp
63+
MQService_MQTTTask.o:./MQService_MQTTTask.cpp
64+
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./MQService_MQTTTask.cpp
6365

6466
XEngine_MQServiceApp.o:./XEngine_MQServiceApp.cpp
6567
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./XEngine_MQServiceApp.cpp

0 commit comments

Comments
 (0)