From 109b15dfc88a1c99615c6a01b49772e90a2326d4 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 25 Sep 2020 18:10:45 +0800 Subject: [PATCH] 1 --- server/imserver/guild.cc | 48 ++++++++++++++++++++++++++++ server/imserver/guild.h | 23 +++++++++++++- server/imserver/guildmgr.cc | 62 +++++++------------------------------ server/imserver/guildmgr.h | 23 ++------------ 4 files changed, 84 insertions(+), 72 deletions(-) diff --git a/server/imserver/guild.cc b/server/imserver/guild.cc index 6000156..82dd929 100644 --- a/server/imserver/guild.cc +++ b/server/imserver/guild.cc @@ -600,3 +600,51 @@ void Guild::ClearApplyByIdx(long long idx) apply_hash_.erase(itr); } } + +Guild* Guild::CreateGuild(int gameid, + long long guild_id, + const std::string& guild_name, + int guild_lv, + int guild_exp, + int guild_badge, + int guild_apply_num, + const std::string& guild_members, + const std::string& guild_notice, + const std::string& guild_declaration, + const std::string& guild_log, + const std::string& owner_id, + const std::string& owner_name, + const std::string& owner_avatar_url, + const std::string& creator_id, + const std::string& creator_name, + const std::string& creator_avatar_url, + const std::string& guild_data, + int guild_status, + int createtime + ) +{ + if (GuildMgr::Instance()->GetGuild(guild_id)) { + abort(); + } + Guild* guild = new Guild; + guild->gameid_ = gameid; + guild->guild_id_ = guild_id; + guild->guild_name_ = guild_name; + guild->guild_lv_ = guild_lv; + guild->guild_exp_ = guild_exp; + guild->guild_badge_ = guild_badge; + guild->guild_apply_num_ = guild_apply_num; + guild->guild_notice_ = guild_notice; + guild->guild_declaration_ = guild_declaration; + guild->owner_id_ = owner_id; + guild->owner_name_ = owner_name; + guild->owner_avatar_url_ = owner_avatar_url; + guild->creator_id_ = creator_id; + guild->creator_name_ = creator_name; + guild->creator_avatar_url_ = creator_avatar_url; + guild->guild_status_ = guild_status; + guild->createtime_ = createtime; + //guild_members + guild->Deserialize(guild_data, guild_log); + return guild; +} diff --git a/server/imserver/guild.h b/server/imserver/guild.h index 4ad8824..deacb48 100644 --- a/server/imserver/guild.h +++ b/server/imserver/guild.h @@ -78,5 +78,26 @@ private: a8::TimerAttacher timer_attacher_; - friend class GuildMgr; +public: + static Guild* CreateGuild(int gameid, + long long guild_id, + const std::string& guild_name, + int guild_lv, + int guild_exp, + int guild_badge, + int guild_apply_num, + const std::string& guild_members, + const std::string& guild_notice, + const std::string& guild_declaration, + const std::string& guild_log, + const std::string& owner_id, + const std::string& owner_name, + const std::string& owner_avatar_url, + const std::string& creator_id, + const std::string& creator_name, + const std::string& creator_avatar_url, + const std::string& guild_data, + int guild_status, + int createtime + ); }; diff --git a/server/imserver/guildmgr.cc b/server/imserver/guildmgr.cc index 3d441d7..6101eb5 100644 --- a/server/imserver/guildmgr.cc +++ b/server/imserver/guildmgr.cc @@ -66,7 +66,16 @@ void GuildMgr::Init() void GuildMgr::UnInit() { - + for (auto& pair : id_hash_) { + delete pair.second; + } + id_hash_.clear(); + for (auto& pair : task_hash_) { + for (auto task :pair.second) { + delete task; + } + } + task_hash_.clear(); } void GuildMgr::_SS_IM_ForwardGuildCMMsg(f8::MsgHdr& hdr, const ss::SS_IM_ForwardGuildCMMsg& msg) @@ -123,7 +132,7 @@ void GuildMgr::LoadGuild(long long guild_id) GuildMgr::Instance()->pending_guild_hash_.erase(param.sender); if (data_set) { for (auto& row : *data_set) { - GuildMgr::Instance()->CreateGuild + Guild* guild = Guild::CreateGuild ( a8::XValue(row[0]), //gameid a8::XValue(row[1]), //guild_id @@ -146,6 +155,7 @@ void GuildMgr::LoadGuild(long long guild_id) a8::XValue(19), //guild_status a8::XValue(20) //createtime ); + GuildMgr::Instance()->id_hash_[guild->GuildId()] = guild; break; } } @@ -206,51 +216,3 @@ void GuildMgr::ForwardGuildSMMsg(int socket_handle, smmsg.SerializeToString(msg.mutable_payload()); IMListener::Instance()->SendMsg(socket_handle, msg); } - -void GuildMgr::CreateGuild(int gameid, - long long guild_id, - const std::string& guild_name, - int guild_lv, - int guild_exp, - int guild_badge, - int guild_apply_num, - const std::string& guild_members, - const std::string& guild_notice, - const std::string& guild_declaration, - const std::string& guild_log, - const std::string& owner_id, - const std::string& owner_name, - const std::string& owner_avatar_url, - const std::string& creator_id, - const std::string& creator_name, - const std::string& creator_avatar_url, - const std::string& guild_data, - int guild_status, - int createtime - ) -{ - if (GetGuild(guild_id)) { - abort(); - } - Guild* guild = new Guild; - guild->gameid_ = gameid; - guild->guild_id_ = guild_id; - guild->guild_name_ = guild_name; - guild->guild_lv_ = guild_lv; - guild->guild_exp_ = guild_exp; - guild->guild_badge_ = guild_badge; - guild->guild_apply_num_ = guild_apply_num; - guild->guild_notice_ = guild_notice; - guild->guild_declaration_ = guild_declaration; - guild->owner_id_ = owner_id; - guild->owner_name_ = owner_name; - guild->owner_avatar_url_ = owner_avatar_url; - guild->creator_id_ = creator_id; - guild->creator_name_ = creator_name; - guild->creator_avatar_url_ = creator_avatar_url; - guild->guild_status_ = guild_status; - guild->createtime_ = createtime; - //guild_members - guild->Deserialize(guild_data, guild_log); - id_hash_[guild_id] = guild; -} diff --git a/server/imserver/guildmgr.h b/server/imserver/guildmgr.h index 828f80c..3e1c978 100644 --- a/server/imserver/guildmgr.h +++ b/server/imserver/guildmgr.h @@ -33,31 +33,12 @@ class GuildMgr : public a8::Singleton int msgid, const ::google::protobuf::Message& smmsg); void _SS_IM_ForwardGuildCMMsg(f8::MsgHdr& hdr, const ss::SS_IM_ForwardGuildCMMsg& msg); + private: void CreateAsyncTask(int socket_handle, long long guild_id, AsyncGuildTask* task); void LoadGuild(long long guild_id); bool IsValidGuildId(long long guild_id); - void CreateGuild(int gameid, - long long guild_id, - const std::string& guild_name, - int guild_lv, - int guild_exp, - int guild_badge, - int guild_apply_num, - const std::string& guild_members, - const std::string& guild_notice, - const std::string& guild_declaration, - const std::string& guild_log, - const std::string& owner_id, - const std::string& owner_name, - const std::string& owner_avatar_url, - const std::string& creator_id, - const std::string& creator_name, - const std::string& creator_avatar_url, - const std::string& guild_data, - int guild_status, - int createtime - ); + private: std::map id_hash_; std::set pending_guild_hash_;