add playermgr player
This commit is contained in:
parent
d809b4cbbf
commit
5e6e9a7ce4
@ -19,6 +19,7 @@
|
|||||||
#include "handlermgr.h"
|
#include "handlermgr.h"
|
||||||
#include "ss_msgid.pb.h"
|
#include "ss_msgid.pb.h"
|
||||||
#include "ss_proto.pb.h"
|
#include "ss_proto.pb.h"
|
||||||
|
#include "playermgr.h"
|
||||||
|
|
||||||
#include "MSConnMgr.h"
|
#include "MSConnMgr.h"
|
||||||
#include "IMConnMgr.h"
|
#include "IMConnMgr.h"
|
||||||
@ -123,6 +124,7 @@ bool App::Init(int argc, char* argv[])
|
|||||||
IMConnMgr::Instance()->Init();
|
IMConnMgr::Instance()->Init();
|
||||||
MSConnMgr::Instance()->Init();
|
MSConnMgr::Instance()->Init();
|
||||||
WSListener::Instance()->Init();
|
WSListener::Instance()->Init();
|
||||||
|
PlayerMgr::Instance()->Init();
|
||||||
|
|
||||||
a8::UdpLog::Instance()->Info("friend_imserver starting instance_id:%d pid:%d ",
|
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()
|
void App::UnInit()
|
||||||
{
|
{
|
||||||
a8::XPrintf("friend_imserver terminating instance_id:%d pid:%d\n", {instance_id, getpid()});
|
a8::XPrintf("friend_imserver terminating instance_id:%d pid:%d\n", {instance_id, getpid()});
|
||||||
|
PlayerMgr::Instance()->UnInit();
|
||||||
WSListener::Instance()->UnInit();
|
WSListener::Instance()->UnInit();
|
||||||
IMConnMgr::Instance()->UnInit();
|
IMConnMgr::Instance()->UnInit();
|
||||||
MSConnMgr::Instance()->UnInit();
|
MSConnMgr::Instance()->UnInit();
|
||||||
|
@ -26,7 +26,9 @@ enum NetHandler_e
|
|||||||
{
|
{
|
||||||
HID_WSListener,
|
HID_WSListener,
|
||||||
HID_MasterSvrMgr,
|
HID_MasterSvrMgr,
|
||||||
HID_IMListener
|
HID_IMListener,
|
||||||
|
HID_PlayerMgr,
|
||||||
|
HID_Player,
|
||||||
};
|
};
|
||||||
|
|
||||||
const char* const PROJ_NAME_FMT = "friend_imserver";
|
const char* const PROJ_NAME_FMT = "friend_imserver";
|
||||||
|
@ -6,8 +6,10 @@
|
|||||||
|
|
||||||
#include "WSListener.h"
|
#include "WSListener.h"
|
||||||
#include "app.h"
|
#include "app.h"
|
||||||
|
#include "playermgr.h"
|
||||||
|
|
||||||
#include "ss_proto.pb.h"
|
#include "ss_proto.pb.h"
|
||||||
|
#include "cs_proto.pb.h"
|
||||||
|
|
||||||
static void _GMOpsSelfChecking(f8::JsonHttpRequest* request)
|
static void _GMOpsSelfChecking(f8::JsonHttpRequest* request)
|
||||||
{
|
{
|
||||||
@ -30,6 +32,8 @@ void HandlerMgr::UnInit()
|
|||||||
void HandlerMgr::RegisterNetMsgHandlers()
|
void HandlerMgr::RegisterNetMsgHandlers()
|
||||||
{
|
{
|
||||||
RegisterNetMsgHandler(&wsmsghandler, &WSListener::_SS_Ping);
|
RegisterNetMsgHandler(&wsmsghandler, &WSListener::_SS_Ping);
|
||||||
|
RegisterNetMsgHandler(&wsmsghandler, &PlayerMgr::_SS_WSP_SocketDisconnect);
|
||||||
|
RegisterNetMsgHandler(&wsmsghandler, &PlayerMgr::_CMLogin);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandlerMgr::ProcGMMsg(unsigned long saddr, int sockhandle,
|
void HandlerMgr::ProcGMMsg(unsigned long saddr, int sockhandle,
|
||||||
|
14
server/imserver/player.cc
Normal file
14
server/imserver/player.cc
Normal 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
17
server/imserver/player.h
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace cs
|
||||||
|
{
|
||||||
|
class MFPair;
|
||||||
|
}
|
||||||
|
|
||||||
|
class Player
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
enum { HID = HID_Player };
|
||||||
|
|
||||||
|
public:
|
||||||
|
void Init();
|
||||||
|
void UnInit();
|
||||||
|
|
||||||
|
};
|
69
server/imserver/playermgr.cc
Normal file
69
server/imserver/playermgr.cc
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
38
server/imserver/playermgr.h
Normal file
38
server/imserver/playermgr.h
Normal 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_;
|
||||||
|
};
|
@ -5,7 +5,7 @@ enum CMMessageId_e
|
|||||||
{
|
{
|
||||||
_CMPing = 101;
|
_CMPing = 101;
|
||||||
|
|
||||||
_CMJoin = 103;
|
_CMLogin = 103;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum SMMessageId_e
|
enum SMMessageId_e
|
||||||
@ -13,5 +13,5 @@ enum SMMessageId_e
|
|||||||
_SMPing = 101;
|
_SMPing = 101;
|
||||||
_SMRpcError = 102;
|
_SMRpcError = 102;
|
||||||
|
|
||||||
_SMJoinedNotify = 103;
|
_SMLogin = 103;
|
||||||
}
|
}
|
||||||
|
@ -14,3 +14,12 @@ message SMPing
|
|||||||
{
|
{
|
||||||
optional int32 param1 = 1;
|
optional int32 param1 = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
message CMLogin
|
||||||
|
{
|
||||||
|
}
|
||||||
|
message SMLogin
|
||||||
|
{
|
||||||
|
optional int32 param1 = 1;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user