This commit is contained in:
aozhiwei 2020-09-24 15:32:09 +08:00
parent 8316eb4743
commit 8b61a75d6f
4 changed files with 41 additions and 190 deletions

View File

@ -105,38 +105,47 @@ void Guild::Deserialize(const std::string& guild_data, const std::string& guild_
GenSortedMembers(); GenSortedMembers();
} }
void Guild::_CMGuildInfo(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildInfo& msg) void Guild::_CMGuildInfo(f8::MsgHdr& hdr, const cs::CMGuildInfo& msg)
{ {
cs::SMGuildInfo respmsg; cs::SMGuildInfo respmsg;
FillGuildBasic(respmsg.mutable_info()); FillGuildBasic(respmsg.mutable_info());
#if 0
GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg); GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg);
#endif
} }
void Guild::_CMGuildJoin(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildJoin& msg) void Guild::_CMGuildJoin(f8::MsgHdr& hdr, const cs::CMGuildJoin& msg)
{ {
cs::SMGuildJoin respmsg; cs::SMGuildJoin respmsg;
#if 0
GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg); GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg);
#endif
} }
void Guild::_CMGuildAgree(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildAgree& msg) void Guild::_CMGuildAgree(f8::MsgHdr& hdr, const cs::CMGuildAgree& msg)
{ {
cs::SMGuildAgree respmsg; cs::SMGuildAgree respmsg;
#if 0
GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg); GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg);
#endif
} }
void Guild::_CMGuildKick(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildKick& msg) void Guild::_CMGuildKick(f8::MsgHdr& hdr, const cs::CMGuildKick& msg)
{ {
cs::SMGuildKick respmsg; cs::SMGuildKick respmsg;
#if 0
GuildMember* member = GetMember(context.user_info().base_data().account_id()); GuildMember* member = GetMember(context.user_info().base_data().account_id());
if (!member) { if (!member) {
return; return;
} }
GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg); GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg);
#endif
} }
void Guild::_CMGuildQuit(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildQuit& msg) void Guild::_CMGuildQuit(f8::MsgHdr& hdr, const cs::CMGuildQuit& msg)
{ {
cs::SMGuildQuit respmsg; cs::SMGuildQuit respmsg;
#if 0
GuildMember* member = GetMember(context.user_info().base_data().account_id()); GuildMember* member = GetMember(context.user_info().base_data().account_id());
if (!member) { if (!member) {
return; return;
@ -146,11 +155,13 @@ void Guild::_CMGuildQuit(int socket_handle, const ss::MFIMMsgConext& context, co
} }
RemoveMember(member->account_id); RemoveMember(member->account_id);
GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg); GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg);
#endif
} }
void Guild::_CMGuildDismiss(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildDismiss& msg) void Guild::_CMGuildDismiss(f8::MsgHdr& hdr, const cs::CMGuildDismiss& msg)
{ {
cs::SMGuildDismiss respmsg; cs::SMGuildDismiss respmsg;
#if 0
GuildMember* member = GetMember(context.user_info().base_data().account_id()); GuildMember* member = GetMember(context.user_info().base_data().account_id());
if (!member) { if (!member) {
return; return;
@ -161,17 +172,20 @@ void Guild::_CMGuildDismiss(int socket_handle, const ss::MFIMMsgConext& context,
guild_status = kGuildDismissed; guild_status = kGuildDismissed;
SaveToDB(); SaveToDB();
GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg); GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg);
#endif
} }
void Guild::_CMGuildRename(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildRename& msg) void Guild::_CMGuildRename(f8::MsgHdr& hdr, const cs::CMGuildRename& msg)
{ {
guild_name = msg.new_name(); guild_name = msg.new_name();
cs::SMGuildRename respmsg; cs::SMGuildRename respmsg;
#if 0
GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg); GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg);
MarkDirty(); MarkDirty();
#endif
} }
void Guild::_CMGuildMemberList(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildMemberList& msg) void Guild::_CMGuildMemberList(f8::MsgHdr& hdr, const cs::CMGuildMemberList& msg)
{ {
cs::SMGuildMemberList respmsg; cs::SMGuildMemberList respmsg;
*respmsg.mutable_paging() = msg.paging(); *respmsg.mutable_paging() = msg.paging();
@ -188,10 +202,12 @@ void Guild::_CMGuildMemberList(int socket_handle, const ss::MFIMMsgConext& conte
auto p = respmsg.add_member_list(); auto p = respmsg.add_member_list();
TypeConvert::Convert(*sorted_members_[i], *p); TypeConvert::Convert(*sorted_members_[i], *p);
} }
#if 0
GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg); GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg);
#endif
} }
void Guild::_CMGuildLog(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildLog& msg) void Guild::_CMGuildLog(f8::MsgHdr& hdr, const cs::CMGuildLog& msg)
{ {
cs::SMGuildLog respmsg; cs::SMGuildLog respmsg;
*respmsg.mutable_paging() = msg.paging(); *respmsg.mutable_paging() = msg.paging();
@ -210,7 +226,9 @@ void Guild::_CMGuildLog(int socket_handle, const ss::MFIMMsgConext& context, con
TypeConvert::Convert(*sorted_members_[i], *p); TypeConvert::Convert(*sorted_members_[i], *p);
#endif #endif
} }
#if 0
GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg); GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg);
#endif
} }
void Guild::FillGuildBasic(cs::MFGuildBasic* guild_basic) void Guild::FillGuildBasic(cs::MFGuildBasic* guild_basic)

View File

@ -55,15 +55,15 @@ class Guild
void MarkDirty(); void MarkDirty();
void Deserialize(const std::string& guild_data, const std::string& guild_log); void Deserialize(const std::string& guild_data, const std::string& guild_log);
void _CMGuildInfo(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildInfo& msg); void _CMGuildInfo(f8::MsgHdr& hdr, const cs::CMGuildInfo& msg);
void _CMGuildJoin(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildJoin& msg); void _CMGuildJoin(f8::MsgHdr& hdr, const cs::CMGuildJoin& msg);
void _CMGuildAgree(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildAgree& msg); void _CMGuildAgree(f8::MsgHdr& hdr, const cs::CMGuildAgree& msg);
void _CMGuildKick(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildKick& msg); void _CMGuildKick(f8::MsgHdr& hdr, const cs::CMGuildKick& msg);
void _CMGuildQuit(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildQuit& msg); void _CMGuildQuit(f8::MsgHdr& hdr, const cs::CMGuildQuit& msg);
void _CMGuildDismiss(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildDismiss& msg); void _CMGuildDismiss(f8::MsgHdr& hdr, const cs::CMGuildDismiss& msg);
void _CMGuildRename(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildRename& msg); void _CMGuildRename(f8::MsgHdr& hdr, const cs::CMGuildRename& msg);
void _CMGuildMemberList(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildMemberList& msg); void _CMGuildMemberList(f8::MsgHdr& hdr, const cs::CMGuildMemberList& msg);
void _CMGuildLog(int socket_handle, const ss::MFIMMsgConext& context, const cs::CMGuildLog& msg); void _CMGuildLog(f8::MsgHdr& hdr, const cs::CMGuildLog& msg);
private: private:
bool IsFull(); bool IsFull();

View File

@ -27,115 +27,15 @@ public:
time_t time = 0; time_t time = 0;
ss::SS_IM_ForwardGuildCMMsg forward_msg; ss::SS_IM_ForwardGuildCMMsg forward_msg;
virtual ~AsyncGuildTask() {} void Execute(Guild* guild)
virtual void Execute(Guild* guild) {}
virtual void OnError() {}
};
class CMGuildInfoTask : public AsyncGuildTask
{
private:
cs::CMGuildInfo cmmsg;
virtual void Execute(Guild* guild) override
{ {
guild->_CMGuildInfo(socket_handle, forward_msg.context(), cmmsg);
}
};
class CMGuildJoinTask : public AsyncGuildTask
{
private:
cs::CMGuildJoin cmmsg;
virtual void Execute(Guild* guild) override
{
guild->_CMGuildJoin(socket_handle, forward_msg.context(), cmmsg);
}
};
class CMGuildAgreeTask : public AsyncGuildTask
{
private:
cs::CMGuildAgree cmmsg;
virtual void Execute(Guild* guild) override
{
guild->_CMGuildAgree(socket_handle, forward_msg.context(), cmmsg);
} }
}; void OnError()
class CMGuildKickTask : public AsyncGuildTask
{
private:
cs::CMGuildKick cmmsg;
virtual void Execute(Guild* guild) override
{ {
guild->_CMGuildKick(socket_handle, forward_msg.context(), cmmsg);
} }
};
class CMGuildQuitTask : public AsyncGuildTask
{
private:
cs::CMGuildQuit cmmsg;
virtual void Execute(Guild* guild) override
{
guild->_CMGuildQuit(socket_handle, forward_msg.context(), cmmsg);
}
};
class CMGuildDismissTask : public AsyncGuildTask
{
private:
cs::CMGuildDismiss cmmsg;
virtual void Execute(Guild* guild) override
{
guild->_CMGuildDismiss(socket_handle, forward_msg.context(), cmmsg);
}
};
class CMGuildRenameTask : public AsyncGuildTask
{
private:
cs::CMGuildRename cmmsg;
virtual void Execute(Guild* guild) override
{
guild->_CMGuildRename(socket_handle, forward_msg.context(), cmmsg);
}
};
class CMGuildMemberListTask : public AsyncGuildTask
{
private:
cs::CMGuildMemberList cmmsg;
virtual void Execute(Guild* guild) override
{
guild->_CMGuildMemberList(socket_handle, forward_msg.context(), cmmsg);
}
};
class CMGuildLogTask : public AsyncGuildTask
{
private:
cs::CMGuildLog cmmsg;
virtual void Execute(Guild* guild) override
{
guild->_CMGuildLog(socket_handle, forward_msg.context(), cmmsg);
}
}; };
void GuildMgr::Init() void GuildMgr::Init()
@ -154,77 +54,13 @@ void GuildMgr::_SS_IM_ForwardGuildCMMsg(f8::MsgHdr& hdr, const ss::SS_IM_Forward
msg.msgid() > cs::CMMessageId_e::_CMGuildMsgEnd) { msg.msgid() > cs::CMMessageId_e::_CMGuildMsgEnd) {
return; return;
} }
if (!IsValidGuildId(msg.context().user_info().base_data().guild_id())) { if (!IsValidGuildId(msg.guild_id())) {
ss::SS_CommonError respmsg; ss::SS_CommonError respmsg;
respmsg.set_errcode(SERVER_INTERNAL_ERROR); respmsg.set_errcode(SERVER_INTERNAL_ERROR);
respmsg.set_errmsg("服务器内部错误"); respmsg.set_errmsg("服务器内部错误");
ForwardGuildSMMsg(hdr.socket_handle, msg.context(), msg.msgid(), respmsg); ForwardGuildSMMsg(hdr.socket_handle, msg.context(), msg.msgid(), respmsg);
return; return;
} }
switch (msg.msgid()) {
case cs::CMMessageId_e::_CMGuildInfo:
{
cs::CMGuildInfo cmmsg;
cmmsg.ParseFromArray(msg.payload().data(), msg.payload().size());
CMGuildInfoTask* task = new CMGuildInfoTask;
CreateAsyncTask(hdr.socket_handle, cmmsg.guild_id(), task);
}
break;
case cs::CMMessageId_e::_CMGuildJoin:
{
cs::CMGuildJoin cmmsg;
cmmsg.ParseFromArray(msg.payload().data(), msg.payload().size());
CMGuildJoinTask* task = new CMGuildJoinTask;
CreateAsyncTask(hdr.socket_handle, cmmsg.guild_id(), task);
}
break;
case cs::CMMessageId_e::_CMGuildAgree:
{
cs::CMGuildAgree cmmsg;
cmmsg.ParseFromArray(msg.payload().data(), msg.payload().size());
}
break;
case cs::CMMessageId_e::_CMGuildKick:
{
cs::CMGuildKick cmmsg;
cmmsg.ParseFromArray(msg.payload().data(), msg.payload().size());
}
break;
case cs::CMMessageId_e::_CMGuildQuit:
{
cs::CMGuildQuit cmmsg;
cmmsg.ParseFromArray(msg.payload().data(), msg.payload().size());
}
break;
case cs::CMMessageId_e::_CMGuildDismiss:
{
cs::CMGuildDismiss cmmsg;
cmmsg.ParseFromArray(msg.payload().data(), msg.payload().size());
}
break;
case cs::CMMessageId_e::_CMGuildRename:
{
cs::CMGuildRename cmmsg;
cmmsg.ParseFromArray(msg.payload().data(), msg.payload().size());
}
break;
case cs::CMMessageId_e::_CMGuildMemberList:
{
cs::CMGuildMemberList cmmsg;
cmmsg.ParseFromArray(msg.payload().data(), msg.payload().size());
}
break;
case cs::CMMessageId_e::_CMGuildLog:
{
cs::CMGuildLog cmmsg;
cmmsg.ParseFromArray(msg.payload().data(), msg.payload().size());
}
break;
default:
{
break;
}
}
} }
void GuildMgr::CreateAsyncTask(int socket_handle, long long guild_id, AsyncGuildTask* task) void GuildMgr::CreateAsyncTask(int socket_handle, long long guild_id, AsyncGuildTask* task)
@ -326,7 +162,7 @@ void GuildMgr::LoadGuild(long long guild_id)
bool GuildMgr::IsValidGuildId(long long guild_id) bool GuildMgr::IsValidGuildId(long long guild_id)
{ {
return true; return JsonDataMgr::Instance()->GetIMInstanceId(guild_id) == App::Instance()->instance_id;
} }
Guild* GuildMgr::GetGuild(long long guild_id) Guild* GuildMgr::GetGuild(long long guild_id)

View File

@ -12,7 +12,6 @@ class GuildMgr : public a8::Singleton<GuildMgr>
{ {
public: public:
enum { HID = HID_GuildMgr }; enum { HID = HID_GuildMgr };
private: private:
GuildMgr() {}; GuildMgr() {};
friend class a8::Singleton<GuildMgr>; friend class a8::Singleton<GuildMgr>;
@ -32,7 +31,6 @@ class GuildMgr : public a8::Singleton<GuildMgr>
int msgid, int msgid,
const ::google::protobuf::Message& smmsg); const ::google::protobuf::Message& smmsg);
void _SS_IM_ForwardGuildCMMsg(f8::MsgHdr& hdr, const ss::SS_IM_ForwardGuildCMMsg& msg); void _SS_IM_ForwardGuildCMMsg(f8::MsgHdr& hdr, const ss::SS_IM_ForwardGuildCMMsg& msg);
private: private:
void CreateAsyncTask(int socket_handle, long long guild_id, AsyncGuildTask* task); void CreateAsyncTask(int socket_handle, long long guild_id, AsyncGuildTask* task);
void LoadGuild(long long guild_id); void LoadGuild(long long guild_id);
@ -59,7 +57,6 @@ class GuildMgr : public a8::Singleton<GuildMgr>
int guild_status, int guild_status,
int createtime int createtime
); );
private: private:
std::map<long long, Guild*> id_hash_; std::map<long long, Guild*> id_hash_;
std::set<long long> pending_guild_hash_; std::set<long long> pending_guild_hash_;