From 30cfeed736f6eabcb78618d76b84672f34eecd2d Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 27 May 2019 16:25:01 +0800 Subject: [PATCH] 1 --- server/gameserver/CMakeLists.txt | 4 ++-- server/gameserver/main.cc | 1 + server/gameserver/playermgr.cc | 5 +++++ server/gameserver/playermgr.h | 1 + server/gameserver/precompile.h | 6 +++--- server/gameserver/room.cc | 3 +++ third_party/a8engine | 2 +- 7 files changed, 16 insertions(+), 6 deletions(-) diff --git a/server/gameserver/CMakeLists.txt b/server/gameserver/CMakeLists.txt index d395195..f0d709a 100644 --- a/server/gameserver/CMakeLists.txt +++ b/server/gameserver/CMakeLists.txt @@ -9,8 +9,8 @@ else() endif() set(CMAKE_BUILD_TYPE "Debug") -set(CMAKE_CXX_FLAGS_RELEASE "-O2 -g -std=gnu++11 -DGAME_ID=${GAME_ID}") -set(CMAKE_CXX_FLAGS_DEBUG "-Wall -g -std=gnu++11 -DGAME_ID=${GAME_ID}") +set(CMAKE_CXX_FLAGS_RELEASE "-O2 -g -std=gnu++11 -DGAME_ID=${GAME_ID} -DA8_TCP_SESSION2=1 -fsanitize=address -fno-omit-frame-pointer") +set(CMAKE_CXX_FLAGS_DEBUG "-Wall -g -std=gnu++11 -DGAME_ID=${GAME_ID} -DA8_TCP_SESSION2=1") include_directories( AFTER diff --git a/server/gameserver/main.cc b/server/gameserver/main.cc index 7dffbf1..ecf2f44 100644 --- a/server/gameserver/main.cc +++ b/server/gameserver/main.cc @@ -1,6 +1,7 @@ #include "precompile.h" #include "app.h" +#include int main(int argc, char* argv[]) { int exitcode = 0; diff --git a/server/gameserver/playermgr.cc b/server/gameserver/playermgr.cc index 416df43..197fee3 100644 --- a/server/gameserver/playermgr.cc +++ b/server/gameserver/playermgr.cc @@ -81,3 +81,8 @@ void PlayerMgr::OnClientDisconnect(a8::XParams& param) socket_hash_.erase(socket_handle); } } + +void PlayerMgr::RemovePlayerBySocket(int socket_handle) +{ + socket_hash_.erase(socket_handle); +} diff --git a/server/gameserver/playermgr.h b/server/gameserver/playermgr.h index e93bf51..59ccf29 100644 --- a/server/gameserver/playermgr.h +++ b/server/gameserver/playermgr.h @@ -30,6 +30,7 @@ class PlayerMgr : public a8::Singleton Player* GetPlayerBySocket(int socket); Player* CreatePlayerByCMJoin(int socket, const cs::CMJoin& msg); void OnClientDisconnect(a8::XParams& param); + void RemovePlayerBySocket(int socket_handle); private: std::map socket_hash_; diff --git a/server/gameserver/precompile.h b/server/gameserver/precompile.h index eb9e6a3..78e3b76 100644 --- a/server/gameserver/precompile.h +++ b/server/gameserver/precompile.h @@ -1,5 +1,8 @@ #pragma once +#define GAMESERVER_SRC 1 +#define PERFT 1 + #include #include @@ -17,9 +20,6 @@ namespace google } } -#define GAMESERVER_SRC 1 -#define PERFT 1 - #include "framework/cpp/types.h" #include "framework/cpp/protoutils.h" diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 4d69849..1e90f10 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -81,6 +81,9 @@ void Room::UnInit() a8::Timer::Instance()->DeleteTimer(stats_timer_); stats_timer_ = nullptr; } + for (auto& pair : accountid_hash_) { + PlayerMgr::Instance()->RemovePlayerBySocket(pair.second->socket_handle); + } for (auto& pair : uniid_hash_) { delete pair.second; } diff --git a/third_party/a8engine b/third_party/a8engine index 1cf5fb6..fc4a7d7 160000 --- a/third_party/a8engine +++ b/third_party/a8engine @@ -1 +1 @@ -Subproject commit 1cf5fb6ba3f75c2b949962f9c12b39430c7ae2dc +Subproject commit fc4a7d7d241002c04aaa09dbf6d6dac91f659a04