173 lines
7.6 KiB
C++
173 lines
7.6 KiB
C++
#include "precompile.h"
|
|
|
|
#include <a8/mutable_xobject.h>
|
|
|
|
#include "handlermgr.h"
|
|
|
|
#include "IMListener.h"
|
|
#include "WSListener.h"
|
|
#include "app.h"
|
|
#include "player.h"
|
|
#include "playermgr.h"
|
|
#include "groupmgr.h"
|
|
#include "IMConnMgr.h"
|
|
#include "synchelper.h"
|
|
#include "guildmgr.h"
|
|
#include "guild.h"
|
|
|
|
#include "ss_proto.pb.h"
|
|
#include "cs_proto.pb.h"
|
|
|
|
static void _GMOpsSelfChecking(f8::JsonHttpRequest* request)
|
|
{
|
|
request->resp_xobj->SetVal("errcode", 0);
|
|
request->resp_xobj->SetVal("errmsg", "");
|
|
request->resp_xobj->SetVal("healthy", 1);
|
|
request->resp_xobj->SetVal("max_rundelay", 10);
|
|
}
|
|
|
|
void HandlerMgr::Init()
|
|
{
|
|
RegisterNetMsgHandlers();
|
|
RegisterGMMsgHandler("Ops$selfChecking", _GMOpsSelfChecking);
|
|
}
|
|
|
|
void HandlerMgr::UnInit()
|
|
{
|
|
}
|
|
|
|
void HandlerMgr::RegisterNetMsgHandlers()
|
|
{
|
|
RegisterNetMsgHandler(&immsghandler, &IMListener::_SS_Ping);
|
|
|
|
RegisterNetMsgHandler(&immsghandler, &SyncHelper::_SS_IM_FriendAgreeResponse);
|
|
RegisterNetMsgHandler(&immsghandler, &SyncHelper::_SS_IM_FriendDeleteResponse);
|
|
RegisterNetMsgHandler(&immsghandler, &SyncHelper::_SS_IM_GuildMemberQuitResponse);
|
|
RegisterNetMsgHandler(&immsghandler, &SyncHelper::_SS_IM_GuildMemberUpdateResponse);
|
|
RegisterNetMsgHandler(&immsghandler, &PlayerMgr::_SS_IM_PushUserOnlineState);
|
|
RegisterNetMsgHandler(&immsghandler, &PlayerMgr::_SS_IM_RandomUsersResponse);
|
|
|
|
RegisterNetMsgHandler(&mscmsghandler, &PlayerMgr::_SS_MS_PushUserList);
|
|
RegisterNetMsgHandler(&mscmsghandler, &GroupMgr::_SS_MS_LoadGroup);
|
|
RegisterNetMsgHandler(&mscmsghandler, &GroupMgr::_SS_MS_ForwardGroupCMMsg);
|
|
|
|
RegisterNetMsgHandler(&mscmsghandler, &IMConnMgr::_SS_Pong);
|
|
RegisterNetMsgHandler(&mscmsghandler, &IMConnMgr::_SS_MS_IMServerList);
|
|
|
|
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_SendChatMsg);
|
|
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_SendCustomMsg);
|
|
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_UpdateUserInfo);
|
|
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_FriendAgreeRequest);
|
|
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_FriendDeleteRequest);
|
|
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_FriendApply);
|
|
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_OnUserOnline);
|
|
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_OnUserOffline);
|
|
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_QueryUserOnlineState);
|
|
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_RandomUsersRequest);
|
|
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_GuildMemberQuitRequest);
|
|
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_GuildMemberUpdateRequest);
|
|
|
|
RegisterNetMsgHandler(&wsmsghandler, &WSListener::_SS_Ping);
|
|
|
|
RegisterNetMsgHandler(&wsmsghandler, &PlayerMgr::_SS_WSP_SocketDisconnect);
|
|
#if 0
|
|
RegisterNetMsgHandler(&wsmsghandler, &PlayerMgr::_CMLogin);
|
|
#endif
|
|
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMPing);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMUpdateUserInfo);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMUpdateTempCustomData);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMFriendList);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMFriendApply);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMFriendApplyList);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMFriendAgree);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMFriendRefuse);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMFriendDelete);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMFriendBlackList);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMFriendAddBlack);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMFriendDeleteBlack);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMQueryUserStatus);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMRecommandFriend);
|
|
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMSendChatMsg);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMSendCustomMsg);
|
|
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGroupCreate);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGroupJoin);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGroupAgree);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGroupKick);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGroupQuit);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGroupDismiss);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGroupRename);
|
|
|
|
RegisterNetMsgHandler(&immsghandler, &GuildMgr::_SS_IM_ForwardGuildCMMsg);
|
|
RegisterNetMsgHandler(&immsghandler, &GuildMgr::_SS_IM_ForwardGuildSMMsg);
|
|
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGuildInfo);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGuildCreate);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGuildJoin);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGuildAgree);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGuildKick);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGuildQuit);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGuildDismiss);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGuildChange);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGuildSearch);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGuildRank);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGuildMemberList);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGuildLog);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGuildMemberPromote);
|
|
RegisterNetMsgHandler(&wsmsghandler, &Player::_CMGuildMemberFire);
|
|
|
|
RegisterNetMsgHandler(&guild_msghandler, &Guild::_CMGuildInfo);
|
|
RegisterNetMsgHandler(&guild_msghandler, &Guild::_CMGuildJoin);
|
|
RegisterNetMsgHandler(&guild_msghandler, &Guild::_CMGuildAgree);
|
|
RegisterNetMsgHandler(&guild_msghandler, &Guild::_CMGuildKick);
|
|
RegisterNetMsgHandler(&guild_msghandler, &Guild::_CMGuildQuit);
|
|
RegisterNetMsgHandler(&guild_msghandler, &Guild::_CMGuildDismiss);
|
|
RegisterNetMsgHandler(&guild_msghandler, &Guild::_CMGuildChange);
|
|
RegisterNetMsgHandler(&guild_msghandler, &Guild::_CMGuildMemberList);
|
|
RegisterNetMsgHandler(&guild_msghandler, &Guild::_CMGuildApplyList);
|
|
RegisterNetMsgHandler(&guild_msghandler, &Guild::_CMGuildLog);
|
|
RegisterNetMsgHandler(&guild_msghandler, &Guild::_CMGuildMemberPromote);
|
|
RegisterNetMsgHandler(&guild_msghandler, &Guild::_CMGuildMemberFire);
|
|
}
|
|
|
|
void HandlerMgr::ProcGMMsg(unsigned long saddr, int sockhandle,
|
|
const std::string& url, const std::string& querystr)
|
|
{
|
|
if (url != "/webapp/index.php") {
|
|
WSListener::Instance()->SendText(sockhandle, a8::HttpResponse(404, ""));
|
|
return;
|
|
}
|
|
|
|
a8::HTTPRequest request;
|
|
a8::ParserUrlQueryString(querystr.c_str(), request);
|
|
|
|
std::string msgname = a8::Get(request, "c").GetString() + "$" + a8::Get(request, "a").GetString();
|
|
auto itr = gmhandlers_.find(msgname);
|
|
if (itr != gmhandlers_.end()) {
|
|
f8::JsonHttpRequest* request = new f8::JsonHttpRequest;
|
|
request->saddr = saddr;
|
|
request->socket_handle = sockhandle;
|
|
request->query_str = querystr;
|
|
request->request.ReadFromUrlQueryString(querystr);
|
|
itr->second(request);
|
|
|
|
if (!request->pending){
|
|
std::string response;
|
|
request->resp_xobj->ToJsonStr(response);
|
|
WSListener::Instance()->SendText(sockhandle, a8::HttpResponse(response));
|
|
|
|
delete request;
|
|
}
|
|
} else {
|
|
WSListener::Instance()->SendText(sockhandle, a8::HttpResponse("{}"));
|
|
}
|
|
}
|
|
|
|
void HandlerMgr::RegisterGMMsgHandler(const std::string& msgname,
|
|
void (*handler)(f8::JsonHttpRequest*))
|
|
{
|
|
gmhandlers_[msgname] = handler;
|
|
}
|