This commit is contained in:
aozhiwei 2020-09-29 20:08:02 +08:00
parent 4c9b572079
commit 1bcc82aef3
9 changed files with 57 additions and 1 deletions

View File

@ -103,6 +103,16 @@ void GuildMgr::_SS_IM_ForwardGuildSMMsg(f8::MsgHdr& hdr, const ss::SS_IM_Forward
}
}
void GuildMgr::_SS_IM_RefeshGuildMemberInfo(f8::MsgHdr& hdr, const ss::SS_IM_RefeshGuildMemberInfo& msg)
{
}
void GuildMgr::_SS_IM_PushGuildUserOnlineState(f8::MsgHdr& hdr, const ss::SS_IM_PushGuildUserOnlineState& msg)
{
}
void GuildMgr::CreateAsyncTask(int socket_handle, long long guild_id, AsyncGuildTask* task)
{
Guild* guild = GetGuild(guild_id);

View File

@ -5,6 +5,8 @@ namespace ss
class MFIMMsgConext;
class SS_IM_ForwardGuildCMMsg;
class SS_IM_ForwardGuildSMMsg;
class SS_IM_RefeshGuildMemberInfo;
class SS_IM_PushGuildUserOnlineState;
}
class Guild;
@ -35,6 +37,8 @@ class GuildMgr : public a8::Singleton<GuildMgr>
const ::google::protobuf::Message& smmsg);
void _SS_IM_ForwardGuildCMMsg(f8::MsgHdr& hdr, const ss::SS_IM_ForwardGuildCMMsg& msg);
void _SS_IM_ForwardGuildSMMsg(f8::MsgHdr& hdr, const ss::SS_IM_ForwardGuildSMMsg& msg);
void _SS_IM_RefeshGuildMemberInfo(f8::MsgHdr& hdr, const ss::SS_IM_RefeshGuildMemberInfo& msg);
void _SS_IM_PushGuildUserOnlineState(f8::MsgHdr& hdr, const ss::SS_IM_PushGuildUserOnlineState& msg);
private:
void CreateAsyncTask(int socket_handle, long long guild_id, AsyncGuildTask* task);

View File

@ -67,8 +67,11 @@ void HandlerMgr::RegisterNetMsgHandlers()
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_RandomUsersRequest);
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_GuildMemberQuitRequest);
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_GuildMemberUpdateRequest);
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_GS_QueryGuildUserOnlineState);
RegisterNetMsgHandler(&imcmsghandler, &GuildMgr::_SS_IM_ForwardGuildCMMsg);
RegisterNetMsgHandler(&imcmsghandler, &GuildMgr::_SS_IM_RefeshGuildMemberInfo);
RegisterNetMsgHandler(&imcmsghandler, &GuildMgr::_SS_IM_PushGuildUserOnlineState);
RegisterNetMsgHandler(&wsmsghandler, &WSListener::_SS_Ping);

View File

@ -1159,6 +1159,15 @@ void Player::ForwardGuildCMMsg(f8::MsgHdr& hdr, long long guild_id)
msg);
}
void Player::SendGSMsg(int msgid, ::google::protobuf::Message& msg)
{
if (GuildId() != 0) {
SyncHelper::Instance()->SendIMConnMsg(JsonDataMgr::Instance()->GetIMInstanceId(GuildId()),
msgid,
msg);
}
}
void Player::FillMFUserInfo(cs::MFUserInfo* user_info)
{
TypeConvert::Convert(myself.base_data, *(user_info->mutable_base_data()));
@ -1322,6 +1331,7 @@ void Player::NotifyOnline()
}
SendSSMsg(myself, msg);
}
SyncGuildMemberInfo();
}
void Player::NotifyOffline()
@ -1329,6 +1339,7 @@ void Player::NotifyOffline()
ss::SS_IM_OnUserOffline msg;
msg.add_account_ids(AccountId());
SendSSMsg(myself, msg);
SyncGuildMemberInfo();
}
void Player::OnDataVersion1Change()
@ -1966,3 +1977,10 @@ void Player::InternalRemoveFriend(const std::string& account_id, bool need_sync,
MarkDirty();
}
}
void Player::SyncGuildMemberInfo()
{
ss::SS_IM_RefeshGuildMemberInfo msg;
FillIMMsgConext(msg.mutable_context());
SendGSMsg(msg);
}

View File

@ -69,6 +69,13 @@ class Player
}
}
template <typename T>
void SendGSMsg(T& msg)
{
static int msgid = f8::Net_GetMessageId(msg);
SendGSMsg(msgid, msg);
}
void _CMPing(f8::MsgHdr& hdr, const cs::CMPing& msg);
void _CMUpdateUserInfo(f8::MsgHdr& hdr, const cs::CMUpdateUserInfo& msg);
void _CMUpdateTempCustomData(f8::MsgHdr& hdr, const cs::CMUpdateTempCustomData& msg);
@ -142,6 +149,7 @@ private:
void FillBlackList(::google::protobuf::RepeatedPtrField< ::cs::MFUserInfo >* black_list);
void ForwardGroupCMMsg(f8::MsgHdr& hdr, long long hash_code);
void ForwardGuildCMMsg(f8::MsgHdr& hdr, long long guild_id);
void SendGSMsg(int msgid, ::google::protobuf::Message& msg);
void FillApplyList(const cs::MFPaging& paging, cs::SMFriendApplyList& respmsg);
void MarkDirty();
void OnDataVersion1Change();
@ -174,6 +182,7 @@ private:
void QueryUserFromDB();
void ShowErrorMsg(const std::string& msg);
void InternalRemoveFriend(const std::string& account_id, bool need_sync, bool auto_delete);
void SyncGuildMemberInfo();
private:
bool dirty_ = false;

View File

@ -247,6 +247,11 @@ void PlayerMgr::_SS_IM_UpdateUserInfo(f8::MsgHdr& hdr, const ss::SS_IM_UpdateUse
}
}
void PlayerMgr::_SS_GS_QueryGuildUserOnlineState(f8::MsgHdr& hdr, const ss::SS_GS_QueryGuildUserOnlineState& msg)
{
}
void PlayerMgr::_CMLoginOld(f8::MsgHdr& hdr, const cs::CMLoginOld& msg)
{
cs::CMLogin new_msg;
@ -625,6 +630,7 @@ void PlayerMgr::OnClientSocketDisconnect(int socket_handle)
Player* hum = GetPlayerBySocket(socket_handle);
if (hum) {
GameLog::Instance()->Logout(hum);
hum->myself.base_data.online = false;
hum->NotifyOffline();
hum->UnInit();
socket_hash_.erase(socket_handle);

View File

@ -26,6 +26,7 @@ namespace ss
class SS_IM_GuildMemberQuitResponse;
class SS_IM_GuildMemberUpdateRequest;
class SS_IM_GuildMemberUpdateResponse;
class SS_GS_QueryGuildUserOnlineState;
}
class Player;
@ -60,6 +61,8 @@ class PlayerMgr : public a8::Singleton<PlayerMgr>
void _SS_IM_UpdateUserInfo(f8::MsgHdr& hdr, const ss::SS_IM_UpdateUserInfo& msg);
void _SS_GS_QueryGuildUserOnlineState(f8::MsgHdr& hdr, const ss::SS_GS_QueryGuildUserOnlineState& msg);
void _CMLoginOld(f8::MsgHdr& hdr, const cs::CMLoginOld& msg);
void _CMLogin(f8::MsgHdr& hdr, const cs::CMLogin& msg);

View File

@ -47,4 +47,7 @@ enum SSMessageId_e
_SS_IM_GuildMemberQuitResponse = 1032;
_SS_IM_GuildMemberUpdateRequest = 1033;
_SS_IM_GuildMemberUpdateResponse = 1034;
_SS_IM_RefeshGuildMemberInfo = 1035;
_SS_GS_QueryGuildUserOnlineState = 1036;
_SS_IM_PushGuildUserOnlineState = 1037;
}

View File

@ -368,5 +368,5 @@ message SS_GS_QueryGuildUserOnlineState
message SS_IM_PushGuildUserOnlineState
{
optional MFIMMsgConext context = 1;
repeated cs.MFUserInfo user_infos = 2;
repeated string online_users = 2;
}