This commit is contained in:
aozhiwei 2020-06-15 17:25:58 +08:00
parent 362de597bb
commit f9b0747b38
10 changed files with 61 additions and 6 deletions

View File

@ -30,7 +30,7 @@ class IMConn
void SendMsg(T& msg)
{
static int msgid = f8::Net_GetMessageId(msg);
SendMsg(tcp_client_, msgid, msg);
SendMsg(msgid, msg);
}
void SendMsg(int msgid, ::google::protobuf::Message& msg)
{

View File

@ -51,3 +51,12 @@ void IMConnMgr::_SS_MS_IMServerList(f8::MsgHdr& hdr, const ss::SS_MS_IMServerLis
{
}
void IMConnMgr::TraverseIMConn(std::function<bool (IMConn*)> func)
{
for (auto& pair : key_hash_) {
if (!func(pair.second)) {
return;
}
}
}

View File

@ -25,6 +25,7 @@ class IMConnMgr : public a8::Singleton<IMConnMgr>
IMConn* GetConnByKey(const std::string& key);
IMConn* RecreateIMConn(const std::string& host, int port);
void _SS_MS_IMServerList(f8::MsgHdr& hdr, const ss::SS_MS_IMServerList& msg);
void TraverseIMConn(std::function<bool (IMConn*)> func);
private:
std::map<std::string, IMConn*> key_hash_;

View File

@ -35,3 +35,12 @@ MSConn* MSConnMgr::GetConnById(int instance_id)
auto itr = id_hash_.find(instance_id);
return itr != id_hash_.end() ? itr->second : nullptr;
}
void MSConnMgr::TraverseMSConn(std::function<bool (MSConn*)> func)
{
for (auto& pair : id_hash_) {
if (!func(pair.second)) {
return;
}
}
}

View File

@ -23,6 +23,7 @@ class MSConnMgr : public a8::Singleton<MSConnMgr>
}
conn->SendMsg(msg);
}
void TraverseMSConn(std::function<bool (MSConn*)> func);
private:
MSConn* GetConnById(int instance_id);

View File

@ -45,6 +45,7 @@ void HandlerMgr::RegisterNetMsgHandlers()
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_SendChatMsg);
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_SendCustomMsg);
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_UpdateUserInfo);
RegisterNetMsgHandler(&wsmsghandler, &WSListener::_SS_Ping);

View File

@ -15,13 +15,16 @@
#include "IMConn.h"
#include "IMConnMgr.h"
#include "MSConn.h"
#include "MSConnMgr.h"
void Player::Init()
{
crc32_code = a8::openssl::Crc32(
(unsigned char*)data.base_data.account_id.data(),
data.base_data.account_id.size()
);
crc32_code = a8::openssl::Crc32
(
(unsigned char*)data.base_data.account_id.data(),
data.base_data.account_id.size()
);
SyncLocToMasterServer();
NotifyOnline();
}
@ -415,6 +418,11 @@ void Player::ForwardGroupCMMsg(f8::MsgHdr& hdr, long long hash_code)
MSConnMgr::Instance()->SendMsg(msg, hash_code);
}
void Player::FillMFUserInfo(cs::MFUserInfo* user_info)
{
}
void Player::MarkDirty()
{
if (!dirty_) {
@ -581,5 +589,22 @@ const std::string Player::AccountId()
void Player::InternalUpdateUserInfo()
{
ss::SS_IM_UpdateUserInfo ss_msg;
FillMFUserInfo(ss_msg.mutable_user_info());
MSConnMgr::Instance()->TraverseMSConn
(
[&ss_msg] (MSConn* conn)
{
conn->SendMsg(ss_msg);
return true;
}
);
IMConnMgr::Instance()->TraverseIMConn
(
[&ss_msg] (IMConn* conn)
{
conn->SendMsg(ss_msg);
return true;
}
);
}

View File

@ -98,6 +98,7 @@ class Player
private:
void FillFriendList(::google::protobuf::RepeatedPtrField< ::cs::MFUserInfo >* friend_list);
void FillIMMsgConext(f8::MsgHdr& hdr, ss::MFIMMsgConext* conext);
void FillMFUserInfo(cs::MFUserInfo* user_info);
void ForwardGroupCMMsg(f8::MsgHdr& hdr, long long hash_code);
void SaveToDB();
Friend* GetFriendById(const std::string& friend_id);

View File

@ -40,6 +40,11 @@ void PlayerMgr::_SS_IM_SendCustomMsg(f8::MsgHdr& hdr, const ss::SS_IM_SendCustom
}
void PlayerMgr::_SS_IM_UpdateUserInfo(f8::MsgHdr& hdr, const ss::SS_IM_UpdateUserInfo& msg)
{
}
void PlayerMgr::_CMLogin(f8::MsgHdr& hdr, const cs::CMLogin& msg)
{
Player* hum = GetPlayerByAccountId(msg.account_id());

View File

@ -11,6 +11,7 @@ namespace ss
class SS_MS_PushUserList;
class SS_IM_SendChatMsg;
class SS_IM_SendCustomMsg;
class SS_IM_UpdateUserInfo;
}
class Player;
@ -32,6 +33,8 @@ class PlayerMgr : public a8::Singleton<PlayerMgr>
void _SS_IM_SendChatMsg(f8::MsgHdr& hdr, const ss::SS_IM_SendChatMsg& msg);
void _SS_IM_SendCustomMsg(f8::MsgHdr& hdr, const ss::SS_IM_SendCustomMsg& msg);
void _SS_IM_UpdateUserInfo(f8::MsgHdr& hdr, const ss::SS_IM_UpdateUserInfo& msg);
void _CMLogin(f8::MsgHdr& hdr, const cs::CMLogin& msg);
Player* GetPlayerBySocket(int socket);