diff --git a/server/imserver/synchelper.cc b/server/imserver/synchelper.cc index 3513302..45564c6 100644 --- a/server/imserver/synchelper.cc +++ b/server/imserver/synchelper.cc @@ -10,6 +10,8 @@ #include "IMConn.h" #include "IMConnMgr.h" #include "dbhelper.h" +#include "guild.h" +#include "guildmgr.h" #include "cs_proto.pb.h" #include "ss_proto.pb.h" @@ -107,7 +109,34 @@ void SyncHelper::SyncGuildMemberQuit(Guild* guild, const std::string& target_id, int reason) { - + ss::SS_IM_GuildMemberQuitRequest* notifymsg = new ss::SS_IM_GuildMemberQuitRequest; + notifymsg->set_seqid(App::Instance()->NewUUID()); + notifymsg->set_guild_id(guild->GuildId()); + notifymsg->set_sender_id(sender_id); + notifymsg->set_target_id(target_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_GuildMemberQuitRequest* notifymsg = + (ss::SS_IM_GuildMemberQuitRequest*)param.sender.GetUserData(); + SyncHelper::Instance()->SS_IM_GuildMemberQuitRequest_TimeOut(notifymsg); + }, + [] (const a8::XParams& param) + { + ss::SS_IM_GuildMemberQuitRequest* notifymsg = + (ss::SS_IM_GuildMemberQuitRequest*)param.sender.GetUserData(); + delete notifymsg; + SyncHelper::Instance()->RemovePendingRequest(param.param1); + } + ); } void SyncHelper::BroadcastIMConnMsg(int msgid, ::google::protobuf::Message& msg) @@ -190,6 +219,16 @@ void SyncHelper::SS_IM_FriendDeleteRequest_TimeOut(ss::SS_IM_FriendDeleteRequest ); } +void SyncHelper::SS_IM_GuildMemberQuitRequest_TimeOut(ss::SS_IM_GuildMemberQuitRequest* msg) +{ + +} + +void SyncHelper::SS_IM_GuildMemberUpdateRequest_TimeOut(ss::SS_IM_GuildMemberUpdateRequest* msg) +{ + +} + void SyncHelper::SendIMConnMsg(int instance_id, int msgid, const ::google::protobuf::Message& msg) { if (instance_id == App::Instance()->instance_id) { diff --git a/server/imserver/synchelper.h b/server/imserver/synchelper.h index b49cb98..51fc7fc 100644 --- a/server/imserver/synchelper.h +++ b/server/imserver/synchelper.h @@ -8,6 +8,8 @@ namespace ss class SS_IM_FriendAgreeResponse; class SS_IM_FriendDeleteRequest; class SS_IM_FriendDeleteResponse; + class SS_IM_GuildMemberQuitRequest; + class SS_IM_GuildMemberUpdateRequest; } class Guild; @@ -49,6 +51,8 @@ private: void RemovePendingRequest(long long seqid); void SS_IM_FriendAgreeRequest_TimeOut(ss::SS_IM_FriendAgreeRequest* msg); void SS_IM_FriendDeleteRequest_TimeOut(ss::SS_IM_FriendDeleteRequest* msg); + void SS_IM_GuildMemberQuitRequest_TimeOut(ss::SS_IM_GuildMemberQuitRequest* msg); + void SS_IM_GuildMemberUpdateRequest_TimeOut(ss::SS_IM_GuildMemberUpdateRequest* msg); public: template diff --git a/server/tools/protobuild/ss_msgid.proto b/server/tools/protobuild/ss_msgid.proto index f620470..d9c92ee 100644 --- a/server/tools/protobuild/ss_msgid.proto +++ b/server/tools/protobuild/ss_msgid.proto @@ -43,4 +43,8 @@ enum SSMessageId_e _SS_IM_RandomUsersResponse = 1026; _SS_IM_ForwardGuildCMMsg = 1027; _SS_IM_ForwardGuildSMMsg = 1028; + _SS_IM_GuildMemberQuitRequest = 1031; + _SS_IM_GuildMemberQuitResponsea = 1032; + _SS_IM_GuildMemberUpdateRequest = 1033; + _SS_IM_GuildMemberUpdateResponse = 1034; } diff --git a/server/tools/protobuild/ss_proto.proto b/server/tools/protobuild/ss_proto.proto index cbb7f8b..ea78924 100755 --- a/server/tools/protobuild/ss_proto.proto +++ b/server/tools/protobuild/ss_proto.proto @@ -324,3 +324,38 @@ message SS_IM_RandomUsersResponse optional MFIMMsgConext context = 1; repeated cs.MFUserInfo user_infos = 2; } + +message SS_IM_GuildMemberQuitRequest +{ + optional int64 seqid = 1; + optional int64 guild_id = 2; + optional string sender_id = 3; + optional string target_id = 4; + optional int32 reason = 5; +} + +message SS_IM_GuildMemberQuitResponse +{ + optional int64 seqid = 1; + optional int64 guild_id = 2; + optional string sender_id = 3; + optional string target_id = 4; + optional int32 reason = 5; +} + +message SS_IM_GuildMemberUpdateRequest +{ + optional int64 seqid = 1; + optional int64 guild_id = 2; + optional string sender_id = 3; + optional string target_id = 4; + optional int32 reason = 5; +} + +message SS_IM_GuildMemberUpdateResponse +{ + optional int64 seqid = 1; + optional int64 guild_id = 2; + optional string target_id = 4; + optional int32 reason = 5; +}