@@ -14,9 +14,15 @@ bool MessageQueue_HttpTask_Post(LPCXSTR lpszClientAddr, LPCXSTR lpszFuncName, LP
1414{
1515 int nSDLen = 0 ;
1616 XCHAR tszSDBuffer[1024 ] = {};
17+ XCHAR tszKeyStr[MAX_PATH] = {};
18+ XCHAR tszVluStr[MAX_PATH] = {};
1719 LPCXSTR lpszAPIRegister = _X (" register" );
18- LPCXSTR lpszAPIDelete = _X (" delete" );
19-
20+ LPCXSTR lpszAPIGetUser = _X (" getuser" );
21+ LPCXSTR lpszAPIGetTopic = _X (" gettopic" );
22+ LPCXSTR lpszAPIGetList = _X (" getlist" );
23+ LPCXSTR lpszAPIGetOnline = _X (" getonline" );
24+ LPCXSTR lpszAPIDelTopic = _X (" deltopic" );
25+ LPCXSTR lpszAPIDelUser = _X (" deluser" );
2026 // 判断请求
2127 if (0 == _tcsxnicmp (lpszAPIRegister, lpszFuncName, _tcsxlen (lpszAPIRegister)))
2228 {
@@ -79,7 +85,84 @@ bool MessageQueue_HttpTask_Post(LPCXSTR lpszClientAddr, LPCXSTR lpszFuncName, LP
7985 XEngine_MQXService_Send (lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_MQAPP_NETTYPE_HTTP);
8086 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" HTTP客户端:%s,请求用户注册成功,用户名:%s,密码:%s" ), lpszClientAddr, st_UserInfo.tszUserName , st_UserInfo.tszUserPass );
8187 }
82- else if (0 == _tcsxnicmp (lpszAPIDelete, lpszFuncName, _tcsxlen (lpszAPIDelete)))
88+ else if (0 == _tcsxnicmp (lpszAPIGetUser, lpszFuncName, _tcsxlen (lpszAPIGetUser)))
89+ {
90+ // 用户 http://127.0.0.1:5202/api?function=getuser
91+ int nListCount = 0 ;
92+ XENGINE_PROTOCOL_USERINFO** ppSt_UserInfo;
93+ DBModule_MQUser_UserList (&ppSt_UserInfo, &nListCount);
94+ ProtocolModule_Packet_UserList (tszSDBuffer, &nSDLen, &ppSt_UserInfo, nListCount);
95+ XEngine_MQXService_Send (lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_MQAPP_NETTYPE_HTTP);
96+ BaseLib_Memory_Free ((XPPPMEM)&ppSt_UserInfo, nListCount);
97+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" HTTP客户端:%s,发送的获取用户列表请求成功,获取到的用户列表个数:%d" ), lpszClientAddr, nListCount);
98+ }
99+ else if (0 == _tcsxnicmp (lpszAPIGetOnline, lpszFuncName, _tcsxlen (lpszAPIGetOnline)))
100+ {
101+ // 获取在线用户 http://127.0.0.1:5202/api?function=getonline
102+ int nType = 0 ;
103+ int nListCount = 0 ;
104+ XCHAR** pptszListAddr;
105+
106+ ProtocolModule_Parse_Type (lpszMsgBuffer, nMsgLen, &nType);
107+ SessionModule_Client_GetListAddr (&pptszListAddr, &nListCount, nType);
108+ ProtocolModule_Packet_OnlineList (tszSDBuffer, &nSDLen, &pptszListAddr, nListCount);
109+ BaseLib_Memory_Free ((XPPPMEM)&pptszListAddr, nListCount);
110+ XEngine_MQXService_Send (lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_MQAPP_NETTYPE_HTTP);
111+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" HTTP客户端:%s,发送的获取在线用户列表请求成功,获取到的列表个数:%d,类型:%d" ), lpszClientAddr, nListCount, nType);
112+ }
113+ else if (0 == _tcsxnicmp (lpszAPIGetTopic, lpszFuncName, _tcsxlen (lpszAPIGetTopic)))
114+ {
115+ // 主题 http://127.0.0.1:5202/api?function=gettopic
116+ int nDBCount = 0 ;
117+ XCHAR tszTopicName[MAX_PATH] = {};
118+ ProtocolModule_Parse_Name (lpszMsgBuffer, nMsgLen, tszTopicName);
119+ DBModule_MQData_GetLeftCount (tszTopicName, 0 , &nDBCount);
120+ ProtocolModule_Packet_TopicName (tszSDBuffer, &nSDLen, tszTopicName, nDBCount);
121+ XEngine_MQXService_Send (lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_MQAPP_NETTYPE_HTTP);
122+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" HTTP客户端:%s,发送的获取主题列表请求成功,获取到的主题:%s 消息个数:%d" ), lpszClientAddr, tszTopicName, nDBCount);
123+ }
124+ else if (0 == _tcsxnicmp (lpszAPIGetList, lpszFuncName, _tcsxlen (lpszAPIGetList)))
125+ {
126+ // 主题 http://127.0.0.1:5202/api?function=getlist
127+ int nListCount = 0 ;
128+ XCHAR** ppszTableName;
129+ DBModule_MQData_ShowTable (&ppszTableName, &nListCount);
130+ ProtocolModule_Packet_TopicList (tszSDBuffer, &nSDLen, &ppszTableName, nListCount);
131+ BaseLib_Memory_Free ((XPPPMEM)&ppszTableName, nListCount);
132+ XEngine_MQXService_Send (lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_MQAPP_NETTYPE_HTTP);
133+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" HTTP客户端:%s,发送的获取主题列表请求成功,获取到的主题列表个数:%d" ), lpszClientAddr, nListCount);
134+ }
135+ else if (0 == _tcsxnicmp (lpszAPIDelTopic, lpszFuncName, _tcsxlen (lpszAPIDelTopic)))
136+ {
137+ // http://127.0.0.1:5202/api?function=deltopic
138+ XENGINE_DBTOPICOWNER st_DBOwner = {};
139+ XENGINE_DBUSERKEY st_UserKey = {};
140+ XENGINE_DBTIMERELEASE st_DBInfo = {};
141+
142+ XCHAR tszTopicName[MAX_PATH] = {};
143+ ProtocolModule_Parse_Name (lpszMsgBuffer, nMsgLen, tszTopicName);
144+
145+ _tcsxcpy (st_DBOwner.tszQueueName , tszTopicName);
146+ _tcsxcpy (st_UserKey.tszKeyName , tszTopicName);
147+ _tcsxcpy (st_DBInfo.tszQueueName , tszTopicName);
148+ if (!DBModule_MQUser_OwnerDelete (&st_DBOwner))
149+ {
150+ ProtocolModule_Packet_Http (tszSDBuffer, &nSDLen, ERROR_XENGINE_MESSAGE_HTTP_NOTFOUND, " topic name not found" );
151+ XEngine_MQXService_Send (lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_MQAPP_NETTYPE_HTTP);
152+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" HTTP客户端:%s,请求HTTP删除主题失败,主题不存在:%s" ), lpszClientAddr, tszTopicName);
153+ return false ;
154+ }
155+ // 清楚数据库
156+ APIHelp_Counter_SerialDel (tszTopicName);
157+ DBModule_MQData_DeleteTable (tszTopicName);
158+ DBModule_MQUser_KeyDelete (&st_UserKey);
159+ DBModule_MQUser_TimeDelete (&st_DBInfo);
160+
161+ ProtocolModule_Packet_Http (tszSDBuffer, &nSDLen);
162+ XEngine_MQXService_Send (lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_MQAPP_NETTYPE_HTTP);
163+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" HTTP客户端:%s,请求主题删除成功,主题名:%s" ), lpszClientAddr, tszTopicName);
164+ }
165+ else if (0 == _tcsxnicmp (lpszAPIDelUser, lpszFuncName, _tcsxlen (lpszAPIDelUser)))
83166 {
84167 XENGINE_PROTOCOL_USERINFO st_UserInfo = {};
85168 if (!ProtocolModule_Parse_Register (lpszMsgBuffer, nMsgLen, &st_UserInfo))
0 commit comments