From 66e478516cad8bae610a55ad01a313626bb510df Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 29 Sep 2020 15:14:45 +0800 Subject: [PATCH] 1 --- server/imserver/synchelper.cc | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/server/imserver/synchelper.cc b/server/imserver/synchelper.cc index 32a30a9..189ade9 100644 --- a/server/imserver/synchelper.cc +++ b/server/imserver/synchelper.cc @@ -101,7 +101,34 @@ void SyncHelper::SyncGuildMemberUpdate(Guild* guild, GuildMember* member, int reason) { - + ss::SS_IM_GuildMemberUpdateRequest* notifymsg = new ss::SS_IM_GuildMemberUpdateRequest; + notifymsg->set_seqid(App::Instance()->NewUUID()); + notifymsg->set_guild_id(guild->GuildId()); + notifymsg->set_sender_id(member->account_id); + notifymsg->set_target_id(member->account_id); + notifymsg->set_reason(reason); + BroadcastIMConnMsg(*notifymsg); + pending_request_hash_[notifymsg->seqid()] = + a8::Timer::Instance()->AddDeadLineTimer + ( + 1000 * 10, + a8::XParams() + .SetSender(notifymsg) + .SetParam1(notifymsg->seqid()), + [] (const a8::XParams& param) + { + ss::SS_IM_GuildMemberUpdateRequest* notifymsg = + (ss::SS_IM_GuildMemberUpdateRequest*)param.sender.GetUserData(); + SyncHelper::Instance()->SS_IM_GuildMemberUpdateRequest_TimeOut(notifymsg); + }, + [] (const a8::XParams& param) + { + ss::SS_IM_GuildMemberUpdateRequest* notifymsg = + (ss::SS_IM_GuildMemberUpdateRequest*)param.sender.GetUserData(); + delete notifymsg; + SyncHelper::Instance()->RemovePendingRequest(param.param1); + } + ); } void SyncHelper::SyncGuildMemberQuit(Guild* guild,