add playermgr player

This commit is contained in:
aozhiwei 2020-05-03 20:49:31 +08:00
parent d809b4cbbf
commit 5e6e9a7ce4
9 changed files with 159 additions and 3 deletions

View File

@ -19,6 +19,7 @@
#include "handlermgr.h"
#include "ss_msgid.pb.h"
#include "ss_proto.pb.h"
#include "playermgr.h"
#include "MSConnMgr.h"
#include "IMConnMgr.h"
@ -123,6 +124,7 @@ bool App::Init(int argc, char* argv[])
IMConnMgr::Instance()->Init();
MSConnMgr::Instance()->Init();
WSListener::Instance()->Init();
PlayerMgr::Instance()->Init();
a8::UdpLog::Instance()->Info("friend_imserver starting instance_id:%d pid:%d ",
{
@ -169,6 +171,7 @@ bool App::Init(int argc, char* argv[])
void App::UnInit()
{
a8::XPrintf("friend_imserver terminating instance_id:%d pid:%d\n", {instance_id, getpid()});
PlayerMgr::Instance()->UnInit();
WSListener::Instance()->UnInit();
IMConnMgr::Instance()->UnInit();
MSConnMgr::Instance()->UnInit();

View File

@ -26,7 +26,9 @@ enum NetHandler_e
{
HID_WSListener,
HID_MasterSvrMgr,
HID_IMListener
HID_IMListener,
HID_PlayerMgr,
HID_Player,
};
const char* const PROJ_NAME_FMT = "friend_imserver";

View File

@ -6,8 +6,10 @@
#include "WSListener.h"
#include "app.h"
#include "playermgr.h"
#include "ss_proto.pb.h"
#include "cs_proto.pb.h"
static void _GMOpsSelfChecking(f8::JsonHttpRequest* request)
{
@ -30,6 +32,8 @@ void HandlerMgr::UnInit()
void HandlerMgr::RegisterNetMsgHandlers()
{
RegisterNetMsgHandler(&wsmsghandler, &WSListener::_SS_Ping);
RegisterNetMsgHandler(&wsmsghandler, &PlayerMgr::_SS_WSP_SocketDisconnect);
RegisterNetMsgHandler(&wsmsghandler, &PlayerMgr::_CMLogin);
}
void HandlerMgr::ProcGMMsg(unsigned long saddr, int sockhandle,

14
server/imserver/player.cc Normal file
View File

@ -0,0 +1,14 @@
#include "precompile.h"
#include "player.h"
#include "cs_proto.pb.h"
void Player::Init()
{
}
void Player::UnInit()
{
}

17
server/imserver/player.h Normal file
View File

@ -0,0 +1,17 @@
#pragma once
namespace cs
{
class MFPair;
}
class Player
{
public:
enum { HID = HID_Player };
public:
void Init();
void UnInit();
};

View File

@ -0,0 +1,69 @@
#include "precompile.h"
#include "playermgr.h"
#include "player.h"
#include "cs_proto.pb.h"
#include "framework/cpp/utils.h"
void PlayerMgr::Init()
{
}
void PlayerMgr::UnInit()
{
}
void PlayerMgr::_SS_WSP_SocketDisconnect(f8::MsgHdr& hdr, const ss::SS_WSP_SocketDisconnect& msg)
{
Player* hum = GetPlayerBySocket(hdr.socket_handle);
if (hum) {
RemovePlayerBySocket(hdr.socket_handle);
}
}
void PlayerMgr::_CMLogin(f8::MsgHdr& hdr, const cs::CMLogin& msg)
{
}
int PlayerMgr::OnlineNum()
{
return socket_hash_.size();
}
Player* PlayerMgr::GetPlayerBySocket(int socket)
{
auto itr = socket_hash_.find(socket);
return itr != socket_hash_.end() ? itr->second : nullptr;
}
void PlayerMgr::OnClientDisconnect(a8::XParams& param)
{
int gg_socket = param.sender;
std::vector<int> socket_list;
for (auto& pair : socket_hash_) {
unsigned short parent_socket_handle = (pair.first >> 16) & 0xFFFF;
if (parent_socket_handle == gg_socket) {
socket_list.push_back(pair.first);
}
}
for (int socket_handle : socket_list) {
Player* hum = GetPlayerBySocket(socket_handle);
if (hum) {
RemovePlayerBySocket(socket_handle);
}
}
}
void PlayerMgr::RemovePlayerBySocket(int socket_handle)
{
auto itr = socket_hash_.find(socket_handle);
if (itr != socket_hash_.end()) {
#if 0
itr->second->socket_handle = 0;
#endif
socket_hash_.erase(itr);
}
}

View File

@ -0,0 +1,38 @@
#pragma once
namespace cs
{
class CMLogin;
}
namespace ss
{
class SS_WSP_SocketDisconnect;
}
class Player;
class PlayerMgr : public a8::Singleton<PlayerMgr>
{
public:
enum { HID = HID_PlayerMgr };
private:
PlayerMgr() {};
friend class a8::Singleton<PlayerMgr>;
public:
void Init();
void UnInit();
void _SS_WSP_SocketDisconnect(f8::MsgHdr& hdr, const ss::SS_WSP_SocketDisconnect& msg);
void _CMLogin(f8::MsgHdr& hdr, const cs::CMLogin& msg);
private:
int OnlineNum();
Player* GetPlayerBySocket(int socket);
void OnClientDisconnect(a8::XParams& param);
void RemovePlayerBySocket(int socket_handle);
private:
std::map<int, Player*> socket_hash_;
};

View File

@ -5,7 +5,7 @@ enum CMMessageId_e
{
_CMPing = 101;
_CMJoin = 103;
_CMLogin = 103;
}
enum SMMessageId_e
@ -13,5 +13,5 @@ enum SMMessageId_e
_SMPing = 101;
_SMRpcError = 102;
_SMJoinedNotify = 103;
_SMLogin = 103;
}

View File

@ -14,3 +14,12 @@ message SMPing
{
optional int32 param1 = 1;
}
//
message CMLogin
{
}
message SMLogin
{
optional int32 param1 = 1;
}