From 93e29761c8f8b6d7a402d4bd5488d3a7281fe354 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 16 Sep 2020 16:21:20 +0800 Subject: [PATCH] 1 --- server/imserver/guildmgr.cc | 21 +++++++++++++++++++++ server/imserver/guildmgr.h | 9 +-------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/server/imserver/guildmgr.cc b/server/imserver/guildmgr.cc index 0b0ae39..1faeb1b 100644 --- a/server/imserver/guildmgr.cc +++ b/server/imserver/guildmgr.cc @@ -14,6 +14,10 @@ public: long long watch_guild_id = 0; time_t time = 0; ss::SS_IM_ForwardGuildCMMsg forward_msg; + + virtual ~AsyncGuildTask() {} + virtual void Execute() {} + virtual void OnError() {} }; class CMGuildInfoTask : public AsyncGuildTask @@ -204,6 +208,23 @@ void GuildMgr::_CMGuildRank(const ss::MFIMMsgConext& context, const cs::CMGuildR } void GuildMgr::AddAsyncTask(long long guild_id, AsyncGuildTask* task) +{ + Guild* guild = GetGuild(guild_id); + if (guild) { + task->Execute(); + delete task; + return; + } + auto itr = task_hash_.find(guild_id); + if (itr != task_hash_.end()) { + itr->second.push_back(task); + } else { + task_hash_[guild_id] = std::list({task}); + LoadGuild(guild_id); + } +} + +void GuildMgr::LoadGuild(long long guild_id) { } diff --git a/server/imserver/guildmgr.h b/server/imserver/guildmgr.h index be2a85d..d1079d6 100644 --- a/server/imserver/guildmgr.h +++ b/server/imserver/guildmgr.h @@ -13,14 +13,6 @@ namespace ss class SS_IM_ForwardGuildCMMsg; } -namespace google -{ - namespace protobuf - { - class Message; - } -} - class Guild; class AsyncGuildTask; class GuildMgr : public a8::Singleton @@ -44,6 +36,7 @@ class GuildMgr : public a8::Singleton void _CMGuildRank(const ss::MFIMMsgConext& context, const cs::CMGuildRank& msg); void AddAsyncTask(long long guild_id, AsyncGuildTask* task); + void LoadGuild(long long guild_id); bool IsValidGuildId(long long guild_id); Guild* GetGuild(long long group_id); template