@@ -41,21 +41,12 @@ XHTHREAD CALLBACK MessageQueue_HttpThread(XPVOID lParam)
4141bool MessageQueue_Http_Handle (RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR** pptszListHdr, int nHdrCount)
4242{
4343 int nPKTLen = 4096 ;
44- XCHAR tszPKTBuffer[4096 ];
45- XCHAR tszKey[MAX_PATH];
46- XCHAR tszValue[MAX_PATH];
47-
48- memset (tszKey, ' \0 ' , MAX_PATH);
49- memset (tszValue, ' \0 ' , MAX_PATH);
50- memset (tszPKTBuffer, ' \0 ' , sizeof (tszPKTBuffer));
44+ XCHAR tszPKTBuffer[4096 ] = {};
45+ XCHAR tszKey[MAX_PATH] = {};
46+ XCHAR tszValue[MAX_PATH] = {};
5147
5248 LPCXSTR lpszPostMethod = _X (" POST" );
5349 LPCXSTR lpszGetMethod = _X (" GET" );
54- LPCXSTR lpszAPIGet = _X (" get" );
55- LPCXSTR lpszAPIUser = _X (" user" );
56- LPCXSTR lpszAPITopic = _X (" topic" );
57- LPCXSTR lpszAPIOnline = _X (" online" );
58- LPCXSTR lpszAPIDelete = _X (" delete" );
5950
6051 int nUrlCount = 0 ;
6152 XCHAR** ppSt_ListUrl;
@@ -107,123 +98,8 @@ bool MessageQueue_Http_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST
10798 }
10899 else if (0 == _tcsxnicmp (lpszGetMethod, pSt_HTTPParam->tszHttpMethod , _tcsxlen (lpszGetMethod)))
109100 {
110- // 获取函数
111- memset (tszValue, ' \0 ' , MAX_PATH);
112101 BaseLib_String_GetKeyValue (ppSt_ListUrl[0 ], _X (" =" ), tszKey, tszValue);
113- if (0 == _tcsxnicmp (lpszAPIUser, tszValue, _tcsxlen (lpszAPIUser)))
114- {
115- // 用户 http://127.0.0.1:5202/api?function=user
116- int nListCount = 0 ;
117- XENGINE_PROTOCOL_USERINFO** ppSt_UserInfo;
118- DBModule_MQUser_UserList (&ppSt_UserInfo, &nListCount);
119- ProtocolModule_Packet_UserList (tszPKTBuffer, &nPKTLen, &ppSt_UserInfo, nListCount);
120- BaseLib_Memory_Free ((XPPPMEM)&ppSt_UserInfo, nListCount);
121-
122- XEngine_MQXService_Send (lpszClientAddr, tszPKTBuffer, nPKTLen, XENGINE_MQAPP_NETTYPE_HTTP);
123- XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" HTTP客户端:%s,发送的获取用户列表请求成功,获取到的用户列表个数:%d" ), lpszClientAddr, nListCount);
124- }
125- else if (0 == _tcsxnicmp (lpszAPIOnline, tszValue, _tcsxlen (lpszAPIOnline)))
126- {
127- // 获取在线用户 http://127.0.0.1:5202/api?function=online&type=0
128- int nListCount = 0 ;
129- XCHAR** pptszListAddr;
130-
131- BaseLib_String_GetKeyValue (ppSt_ListUrl[nMethodPos + 1 ], _X (" =" ), tszKey, tszValue);
132- SessionModule_Client_GetListAddr (&pptszListAddr, &nListCount, _ttxoi (tszValue));
133- ProtocolModule_Packet_OnlineList (tszPKTBuffer, &nPKTLen, &pptszListAddr, nListCount);
134- BaseLib_Memory_Free ((XPPPMEM)&pptszListAddr, nListCount);
135- XEngine_MQXService_Send (lpszClientAddr, tszPKTBuffer, nPKTLen, XENGINE_MQAPP_NETTYPE_HTTP);
136- XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" HTTP客户端:%s,发送的获取在线用户列表请求成功,获取到的列表个数:%d" ), lpszClientAddr, nListCount);
137- }
138- else if (0 == _tcsxnicmp (lpszAPITopic, tszValue, _tcsxlen (lpszAPITopic)))
139- {
140- // 主题 http://127.0.0.1:5202/api?function=topic&name=comm
141- if (2 == nUrlCount)
142- {
143- int nListCount = 0 ;
144- XCHAR** ppszTableName;
145- DBModule_MQData_ShowTable (&ppszTableName, &nListCount);
146- ProtocolModule_Packet_TopicList (tszPKTBuffer, &nPKTLen, &ppszTableName, nListCount);
147- BaseLib_Memory_Free ((XPPPMEM)&ppszTableName, nListCount);
148- XEngine_MQXService_Send (lpszClientAddr, tszPKTBuffer, nPKTLen, XENGINE_MQAPP_NETTYPE_HTTP);
149- XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" HTTP客户端:%s,发送的获取主题列表请求成功,获取到的主题列表个数:%d" ), lpszClientAddr, nListCount);
150- }
151- else
152- {
153- int nDBCount = 0 ;
154- BaseLib_String_GetKeyValue (ppSt_ListUrl[nMethodPos + 1 ], _X (" =" ), tszKey, tszValue);
155- DBModule_MQData_GetLeftCount (tszValue, 0 , &nDBCount);
156- ProtocolModule_Packet_TopicName (tszPKTBuffer, &nPKTLen, tszValue, nDBCount);
157- XEngine_MQXService_Send (lpszClientAddr, tszPKTBuffer, nPKTLen, XENGINE_MQAPP_NETTYPE_HTTP);
158- XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" HTTP客户端:%s,发送的获取主题列表请求成功,获取到的主题消息个数:%d" ), lpszClientAddr, nDBCount);
159- }
160- }
161- else if (0 == _tcsxnicmp (lpszAPIDelete, tszValue, _tcsxlen (lpszAPIDelete)))
162- {
163- // http://127.0.0.1:5202/api?function=delete&type=0&name=comm
164-
165- memset (tszValue, ' \0 ' , MAX_PATH);
166- BaseLib_String_GetKeyValue (ppSt_ListUrl[nMethodPos + 2 ], _X (" =" ), tszKey, tszValue);
167- if (0 == _ttxoi (tszValue))
168- {
169- // type = 0 删除主题
170- memset (tszValue, ' \0 ' , MAX_PATH);
171- BaseLib_String_GetKeyValue (ppSt_ListUrl[nMethodPos + 3 ], _X (" =" ), tszKey, tszValue);
172-
173- XENGINE_DBTOPICOWNER st_DBOwner = {};
174- XENGINE_DBUSERKEY st_UserKey = {};
175- XENGINE_DBTIMERELEASE st_DBInfo = {};
176-
177- _tcsxcpy (st_DBOwner.tszQueueName , tszValue);
178- _tcsxcpy (st_UserKey.tszKeyName , tszValue);
179- _tcsxcpy (st_DBInfo.tszQueueName , tszValue);
180- if (!DBModule_MQUser_OwnerDelete (&st_DBOwner))
181- {
182- ProtocolModule_Packet_Http (tszPKTBuffer, &nPKTLen, ERROR_XENGINE_MESSAGE_HTTP_NOTFOUND, " topic name not found" );
183- XEngine_MQXService_Send (lpszClientAddr, tszPKTBuffer, nPKTLen, XENGINE_MQAPP_NETTYPE_HTTP);
184- XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" HTTP客户端:%s,请求HTTP删除主题失败,主题不存在:%s" ), lpszClientAddr, tszValue);
185- return false ;
186- }
187- // 清楚数据库
188- APIHelp_Counter_SerialDel (tszValue);
189- DBModule_MQData_DeleteTable (tszValue);
190- DBModule_MQUser_KeyDelete (&st_UserKey);
191- DBModule_MQUser_TimeDelete (&st_DBInfo);
192-
193- ProtocolModule_Packet_Http (tszPKTBuffer, &nPKTLen);
194- XEngine_MQXService_Send (lpszClientAddr, tszPKTBuffer, nPKTLen, XENGINE_MQAPP_NETTYPE_HTTP);
195- XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" HTTP客户端:%s,请求主题删除成功,主题名:%s" ), lpszClientAddr, tszValue);
196- }
197- else
198- {
199- // 删除用户
200- memset (tszValue, ' \0 ' , MAX_PATH);
201- BaseLib_String_GetKeyValue (ppSt_ListUrl[nMethodPos + 3 ], _X (" =" ), tszKey, tszValue);
202-
203- XENGINE_PROTOCOL_USERINFO st_UserInfo = {};
204- XENGINE_DBUSERKEY st_UserKey = {};
205- XENGINE_DBTOPICOWNER st_DBOwner = {};
206-
207- _tcsxcpy (st_UserInfo.tszUserName , tszValue);
208- _tcsxcpy (st_UserKey.tszUserName , tszValue);
209- _tcsxcpy (st_DBOwner.tszUserName , tszValue);
210-
211- if (!DBModule_MQUser_UserQuery (&st_UserInfo))
212- {
213- ProtocolModule_Packet_Http (tszPKTBuffer, &nPKTLen, ERROR_XENGINE_MESSAGE_HTTP_NOTFOUND, " user name not found" );
214- XEngine_MQXService_Send (lpszClientAddr, tszPKTBuffer, nPKTLen, XENGINE_MQAPP_NETTYPE_HTTP);
215- XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" HTTP客户端:%s,请求HTTP删除用户失败,用户不存在:%s" ), lpszClientAddr, st_UserInfo.tszUserName );
216- return false ;
217- }
218- DBModule_MQUser_UserDelete (&st_UserInfo);
219- DBModule_MQUser_KeyDelete (&st_UserKey);
220- DBModule_MQUser_OwnerDelete (&st_DBOwner);
221-
222- ProtocolModule_Packet_Http (tszPKTBuffer, &nPKTLen);
223- XEngine_MQXService_Send (lpszClientAddr, tszPKTBuffer, nPKTLen, XENGINE_MQAPP_NETTYPE_HTTP);
224- XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" HTTP客户端:%s,请求用户删除成功,用户名:%s" ), lpszClientAddr, st_UserInfo.tszUserName );
225- }
226- }
102+ MessageQueue_HttpTask_Get (lpszClientAddr, tszValue, lpszMsgBuffer, nMsgLen, nMethodPos, &ppSt_ListUrl, nUrlCount);
227103 }
228104 else
229105 {
0 commit comments