diff --git a/server/imserver/guildmgr.cc b/server/imserver/guildmgr.cc index 0435885..79f42ab 100644 --- a/server/imserver/guildmgr.cc +++ b/server/imserver/guildmgr.cc @@ -307,24 +307,35 @@ void GuildMgr::LoadGuild(long long guild_id) auto on_ok = [] (a8::XParams& param, const f8::DataSet* data_set) { + GuildMgr::Instance()->pending_guild_hash_.erase(param.sender); if (data_set) { } }; auto on_error = [] (a8::XParams& param, int error_code, const std::string& error_msg) { - + 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) { + task->OnError(); + } + } }; a8::XObject conn_info = DBEngine::Instance()->GetConnInfo(GetGuildCrc32(guild_id)); DBEngine::Instance()->ExecAsyncQuery ( conn_info, - "", + "SELECT gameid, guild_id, guild_name, guild_lv, guild_exp, guild_badge, guild_apply_num, " + " guild_administers, guild_notice, guild_declaration, guild_log, owner_id, owner_name, " + " creator_id, guild_data, guild_status, createtime " + "WHERE guild_id=%d;", { - + guild_id }, - a8::XParams(), + a8::XParams() + .SetSender(guild_id), on_ok, on_error, GetGuildCrc32(guild_id) @@ -353,3 +364,25 @@ void GuildMgr::ForwardGuildSMMsg(int socket_handle, smmsg.SerializeToString(msg.mutable_payload()); IMListener::Instance()->SendMsg(socket_handle, msg); } + +Guild* 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_administers, + 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& creator_id, + const std::string& guild_data, + int guild_status, + int createtime + ) +{ + return nullptr; +} diff --git a/server/imserver/guildmgr.h b/server/imserver/guildmgr.h index 6450c12..483ef08 100644 --- a/server/imserver/guildmgr.h +++ b/server/imserver/guildmgr.h @@ -49,7 +49,25 @@ class GuildMgr : public a8::Singleton void CreateAsyncTask(int socket_handle, long long guild_id, AsyncGuildTask* task); void LoadGuild(long long guild_id); bool IsValidGuildId(long long guild_id); - Guild* GetGuild(long long group_id); + Guild* GetGuild(long long guild_id); + 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_administers, + 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& creator_id, + const std::string& guild_data, + int guild_status, + int createtime + ); private: std::map id_hash_;