From 914c93a9315aee890333c5d91eb0842bac02b9a7 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 25 Sep 2020 18:46:05 +0800 Subject: [PATCH] 1 --- server/imserver/guildmgr.cc | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/server/imserver/guildmgr.cc b/server/imserver/guildmgr.cc index 6101eb5..4ef80ef 100644 --- a/server/imserver/guildmgr.cc +++ b/server/imserver/guildmgr.cc @@ -118,9 +118,6 @@ void GuildMgr::CreateAsyncTask(int socket_handle, long long guild_id, AsyncGuild void GuildMgr::LoadGuild(long long guild_id) { - if (GetGuild(guild_id)) { - return; - } if (pending_guild_hash_.find(guild_id) != pending_guild_hash_.end()) { return; } @@ -130,9 +127,10 @@ void GuildMgr::LoadGuild(long long guild_id) [] (a8::XParams& param, const f8::DataSet* data_set) { GuildMgr::Instance()->pending_guild_hash_.erase(param.sender); + Guild* guild = nullptr; if (data_set) { for (auto& row : *data_set) { - Guild* guild = Guild::CreateGuild + guild = Guild::CreateGuild ( a8::XValue(row[0]), //gameid a8::XValue(row[1]), //guild_id @@ -158,6 +156,19 @@ void GuildMgr::LoadGuild(long long guild_id) GuildMgr::Instance()->id_hash_[guild->GuildId()] = guild; break; } + }//end if + GuildMgr::Instance()->pending_guild_hash_.erase(param.sender); + auto itr = GuildMgr::Instance()->task_hash_.find(param.sender); + if (itr != GuildMgr::Instance()->task_hash_.end()) { + for (auto task : itr->second) { + if (guild) { + task->Execute(guild); + } else { + task->OnError(); + } + delete task; + } + GuildMgr::Instance()->task_hash_.erase(itr); } }; auto on_error = @@ -172,7 +183,7 @@ void GuildMgr::LoadGuild(long long guild_id) } GuildMgr::Instance()->task_hash_.erase(itr); } - }; + }; a8::XObject conn_info = DBEngine::Instance()->GetConnInfo(guild_id); DBEngine::Instance()->ExecAsyncQuery