From a3c78fa43a7d374bb54dcbad79ce14731aa7e700 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 19 Jun 2020 10:15:13 +0800 Subject: [PATCH] 1 --- server/imserver/MSConn.h | 7 ++++ server/imserver/synchelper.cc | 47 +++++++++++++++++++++++--- server/imserver/synchelper.h | 10 ++++++ server/tools/protobuild/ss_msgid.proto | 4 +++ server/tools/protobuild/ss_proto.proto | 12 +++++++ 5 files changed, 75 insertions(+), 5 deletions(-) diff --git a/server/imserver/MSConn.h b/server/imserver/MSConn.h index c975cd6..982a020 100644 --- a/server/imserver/MSConn.h +++ b/server/imserver/MSConn.h @@ -34,6 +34,13 @@ class MSConn f8::DumpMsgToLog(msg, "<<<<<<GetPlayerByAccountId(target_id); - if (target) { - - } + ss::SS_IM_FriendAgreeRequest notifymsg; + notifymsg.set_target_id(target_id); + BroadcastIMConnMsg(notifymsg); } void SyncHelper::SyncDeleteFriend(Player* hum, const std::string& target_id) { - + ss::SS_IM_FriendDeleteRequest notifymsg; + notifymsg.set_target_id(target_id); + BroadcastIMConnMsg(notifymsg); } void SyncHelper::SyncUpdateFriend(Player* hum, const std::string& target_id) { } + +void SyncHelper::BroadcastIMConnMsg(int msgid, ::google::protobuf::Message& msg) +{ + IMConnMgr::Instance()->TraverseIMConn + ( + [msgid, &msg] (IMConn* conn) + { + conn->SendMsg(msgid, msg); + return true; + } + ); + int packlen = msg.ByteSize(); + char* buff = nullptr; + if (packlen > 0) { + buff = (char*)malloc(packlen); + msg.SerializeToArray(buff, packlen); + } + App::Instance()->AddSocketMsg + ( + SF_IMConn, + 0, + 0, + msgid, + 0, + buff, + packlen + ); + if (buff) { + free(buff); + } +} diff --git a/server/imserver/synchelper.h b/server/imserver/synchelper.h index 69cb6b6..299d26d 100644 --- a/server/imserver/synchelper.h +++ b/server/imserver/synchelper.h @@ -14,4 +14,14 @@ class SyncHelper : public a8::Singleton void SyncNewFriend(Player* hum, const std::string& target_id); void SyncDeleteFriend(Player* hum, const std::string& target_id); void SyncUpdateFriend(Player* hum, const std::string& target_id); + + private: + template + void BroadcastIMConnMsg(T& msg) + { + static int msgid = f8::Net_GetMessageId(msg); + BroadcastIMConnMsg(msgid, msg); + } + + void BroadcastIMConnMsg(int msgid, ::google::protobuf::Message& msg); }; diff --git a/server/tools/protobuild/ss_msgid.proto b/server/tools/protobuild/ss_msgid.proto index 90201c5..bd5fc4c 100644 --- a/server/tools/protobuild/ss_msgid.proto +++ b/server/tools/protobuild/ss_msgid.proto @@ -30,4 +30,8 @@ enum SSMessageId_e _SS_IM_IMServerList = 1013; _SS_MS_IMServerList = 1014; _SS_IM_UpdateUserInfo = 1015; + _SS_IM_FriendAgreeRequest = 1016; + _SS_IM_FriendAgreeResponse = 1017; + _SS_IM_FriendDeleteRequest = 1018; + _SS_IM_FriendDeleteResponse = 1019; } diff --git a/server/tools/protobuild/ss_proto.proto b/server/tools/protobuild/ss_proto.proto index b02feff..5c25e45 100755 --- a/server/tools/protobuild/ss_proto.proto +++ b/server/tools/protobuild/ss_proto.proto @@ -208,3 +208,15 @@ message SS_IM_FriendAgreeResponse optional MFIMMsgConext context = 1; optional string target_id = 3; } + +message SS_IM_FriendDeleteRequest +{ + optional MFIMMsgConext context = 1; + optional string target_id = 3; +} + +message SS_IM_FriendDeleteResponse +{ + optional MFIMMsgConext context = 1; + optional string target_id = 3; +}