Skip to content

Commit 520ce28

Browse files
committed
added:get topic of http restful support get message count
1 parent 8c19384 commit 520ce28

File tree

6 files changed

+103
-12
lines changed

6 files changed

+103
-12
lines changed

XEngine_Source/MQCore_ProtocolModule/MQCore_ProtocolModule.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ EXPORTS
1111
ProtocolModule_Packet_UserList
1212
ProtocolModule_Packet_TopicList
1313
ProtocolModule_Packet_OnlineList
14+
ProtocolModule_Packet_TopicName
1415
ProtocolModule_Packet_UNReadCreate
1516
ProtocolModule_Packet_UNReadInsert
1617
ProtocolModule_Packet_UNReadDelete

XEngine_Source/MQCore_ProtocolModule/ProtocolModule_Packet/ProtocolModule_Packet.cpp

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,50 @@ bool CProtocolModule_Packet::ProtocolModule_Packet_OnlineList(XCHAR* ptszMsgBuff
480480
return true;
481481
}
482482
/********************************************************************
483+
函数名称:ProtocolModule_Packet_TopicName
484+
函数功能:主题信息打包函数
485+
参数.一:ptszMsgBuffer
486+
In/Out:Out
487+
类型:字符指针
488+
可空:N
489+
意思:输出打包的内容
490+
参数.二:pInt_MsgLen
491+
In/Out:Out
492+
类型:整数型指针
493+
可空:N
494+
意思:输出打包大小
495+
参数.三:lpszTopicName
496+
In/Out:In
497+
类型:常量字符指针
498+
可空:N
499+
意思:输入要打包的主题名
500+
参数.四:nTopicCount
501+
In/Out:In
502+
类型:整数型
503+
可空:N
504+
意思:输入要打包的数据的个数
505+
返回值
506+
类型:逻辑型
507+
意思:是否成功
508+
备注:
509+
*********************************************************************/
510+
bool CProtocolModule_Packet::ProtocolModule_Packet_TopicName(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszTopicName, int nTopicCount)
511+
{
512+
Protocol_IsErrorOccur = false;
513+
514+
Json::Value st_JsonRoot;
515+
Json::StreamWriterBuilder st_JsonBuilder;
516+
517+
st_JsonRoot["code"] = 0;
518+
st_JsonRoot["lpszTopicName"] = lpszTopicName;
519+
st_JsonRoot["Count"] = nTopicCount;
520+
521+
st_JsonBuilder["emitUTF8"] = true;
522+
*pInt_MsgLen = Json::writeString(st_JsonBuilder, st_JsonRoot).length();
523+
memcpy(ptszMsgBuffer, Json::writeString(st_JsonBuilder, st_JsonRoot).c_str(), *pInt_MsgLen);
524+
return true;
525+
}
526+
/********************************************************************
483527
函数名称:ProtocolModule_Packet_UNReadCreate
484528
函数功能:未读消息打包创建函数
485529
参数.一:pSt_ProtocolHdr

XEngine_Source/MQCore_ProtocolModule/ProtocolModule_Packet/ProtocolModule_Packet.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class CProtocolModule_Packet
3333
bool ProtocolModule_Packet_UserList(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_PROTOCOL_USERINFO*** pppSt_UserInfo, int nListCount);
3434
bool ProtocolModule_Packet_TopicList(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XCHAR*** pppszTableName, int nListCount);
3535
bool ProtocolModule_Packet_OnlineList(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XCHAR*** ppptszListUser, int nListCount);
36+
bool ProtocolModule_Packet_TopicName(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszTopicName, int nTopicCount);
3637
public:
3738
XHANDLE ProtocolModule_Packet_UNReadCreate(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, ENUM_XENGINE_PROTOCOLHDR_PAYLOAD_TYPE enPayType);
3839
bool ProtocolModule_Packet_UNReadInsert(XHANDLE xhToken, LPCXSTR lpszKeyName, int nListCount);

XEngine_Source/MQCore_ProtocolModule/Protocol_Define.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,35 @@ extern "C" bool ProtocolModule_Packet_TopicList(XCHAR* ptszMsgBuffer, int* pInt_
270270
*********************************************************************/
271271
extern "C" bool ProtocolModule_Packet_OnlineList(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XCHAR*** ppptszListUser, int nListCount);
272272
/********************************************************************
273+
函数名称:ProtocolModule_Packet_TopicName
274+
函数功能:主题信息打包函数
275+
参数.一:ptszMsgBuffer
276+
In/Out:Out
277+
类型:字符指针
278+
可空:N
279+
意思:输出打包的内容
280+
参数.二:pInt_MsgLen
281+
In/Out:Out
282+
类型:整数型指针
283+
可空:N
284+
意思:输出打包大小
285+
参数.三:lpszTopicName
286+
In/Out:In
287+
类型:常量字符指针
288+
可空:N
289+
意思:输入要打包的主题名
290+
参数.四:nTopicCount
291+
In/Out:In
292+
类型:整数型
293+
可空:N
294+
意思:输入要打包的数据的个数
295+
返回值
296+
类型:逻辑型
297+
意思:是否成功
298+
备注:
299+
*********************************************************************/
300+
extern "C" bool ProtocolModule_Packet_TopicName(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszTopicName, int nTopicCount);
301+
/********************************************************************
273302
函数名称:ProtocolModule_Packet_UNReadCreate
274303
函数功能:未读消息打包创建函数
275304
参数.一:pSt_ProtocolHdr

XEngine_Source/MQCore_ProtocolModule/pch.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ extern "C" bool ProtocolModule_Packet_OnlineList(XCHAR * ptszMsgBuffer, int* pIn
6363
{
6464
return m_ProtocolPacket.ProtocolModule_Packet_OnlineList(ptszMsgBuffer, pInt_MsgLen, ppptszListUser, nListCount);
6565
}
66+
extern "C" bool ProtocolModule_Packet_TopicName(XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszTopicName, int nTopicCount)
67+
{
68+
return m_ProtocolPacket.ProtocolModule_Packet_TopicName(ptszMsgBuffer, pInt_MsgLen, lpszTopicName, nTopicCount);
69+
}
6670
extern "C" XHANDLE ProtocolModule_Packet_UNReadCreate(XENGINE_PROTOCOLHDR * pSt_ProtocolHdr, ENUM_XENGINE_PROTOCOLHDR_PAYLOAD_TYPE enPayType)
6771
{
6872
return m_ProtocolPacket.ProtocolModule_Packet_UNReadCreate(pSt_ProtocolHdr, enPayType);

XEngine_Source/XEngine_MQServiceApp/MQService_HttpTask.cpp

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -91,14 +91,15 @@ bool MessageQueue_Http_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST
9191
else if (0 == _tcsxnicmp(lpszAPIOnline, tszValue, _tcsxlen(lpszAPIOnline)))
9292
{
9393
//获取在线用户 http://127.0.0.1:5202/api?function=get&method=online&type=0
94-
int nListCount = 0;
95-
XCHAR** pptszListAddr;
96-
if (nUrlCount < 2)
94+
if (3 != nUrlCount)
9795
{
9896
ProtocolModule_Packet_Http(tszPKTBuffer, &nPKTLen, 400, "url parament is incorrent");
9997
XEngine_MQXService_Send(lpszClientAddr, tszPKTBuffer, nPKTLen, XENGINE_MQAPP_NETTYPE_HTTP);
10098
return false;
10199
}
100+
int nListCount = 0;
101+
XCHAR** pptszListAddr;
102+
102103
BaseLib_OperatorString_GetKeyValue(ppSt_ListUrl[2], _X("="), tszKey, tszValue);
103104
SessionModule_Client_GetListAddr(&pptszListAddr, &nListCount, _ttxoi(tszValue));
104105
ProtocolModule_Packet_OnlineList(tszPKTBuffer, &nPKTLen, &pptszListAddr, nListCount);
@@ -108,15 +109,26 @@ bool MessageQueue_Http_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST
108109
}
109110
else if (0 == _tcsxnicmp(lpszAPITopic, tszValue, _tcsxlen(lpszAPITopic)))
110111
{
111-
//主题 http://127.0.0.1:5202/api?function=get&method=topic
112-
int nListCount = 0;
113-
XCHAR** ppszTableName;
114-
DBModule_MQData_ShowTable(&ppszTableName, &nListCount);
115-
ProtocolModule_Packet_TopicList(tszPKTBuffer, &nPKTLen, &ppszTableName, nListCount);
116-
BaseLib_OperatorMemory_Free((XPPPMEM)&ppszTableName, nListCount);
117-
118-
XEngine_MQXService_Send(lpszClientAddr, tszPKTBuffer, nPKTLen, XENGINE_MQAPP_NETTYPE_HTTP);
119-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,发送的获取主题列表请求成功,获取到的主题列表个数:%d"), lpszClientAddr, nListCount);
112+
//主题 http://127.0.0.1:5202/api?function=get&method=topic&name=comm
113+
if (2 == nUrlCount)
114+
{
115+
int nListCount = 0;
116+
XCHAR** ppszTableName;
117+
DBModule_MQData_ShowTable(&ppszTableName, &nListCount);
118+
ProtocolModule_Packet_TopicList(tszPKTBuffer, &nPKTLen, &ppszTableName, nListCount);
119+
BaseLib_OperatorMemory_Free((XPPPMEM)&ppszTableName, nListCount);
120+
XEngine_MQXService_Send(lpszClientAddr, tszPKTBuffer, nPKTLen, XENGINE_MQAPP_NETTYPE_HTTP);
121+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,发送的获取主题列表请求成功,获取到的主题列表个数:%d"), lpszClientAddr, nListCount);
122+
}
123+
else
124+
{
125+
int nDBCount = 0;
126+
BaseLib_OperatorString_GetKeyValue(ppSt_ListUrl[2], _X("="), tszKey, tszValue);
127+
DBModule_MQData_GetLeftCount(tszValue, 0, &nDBCount);
128+
ProtocolModule_Packet_TopicName(tszPKTBuffer, &nPKTLen, tszValue, nDBCount);
129+
XEngine_MQXService_Send(lpszClientAddr, tszPKTBuffer, nPKTLen, XENGINE_MQAPP_NETTYPE_HTTP);
130+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,发送的获取主题列表请求成功,获取到的主题消息个数:%d"), lpszClientAddr, nDBCount);
131+
}
120132
}
121133
}
122134
}

0 commit comments

Comments
 (0)