diff --git a/server/masterserver/GGListener.cc b/server/masterserver/GGListener.cc index a401b05..bccb20d 100644 --- a/server/masterserver/GGListener.cc +++ b/server/masterserver/GGListener.cc @@ -85,7 +85,7 @@ static void GSListeneron_error(a8::TcpListener*, int type, int errorid) void GGListener::Init() { - tcp_listener_ = new a8::TcpListener(); + tcp_listener_ = std::make_shared(); tcp_listener_->on_create_client_socket = CreateGameClientSocket; tcp_listener_->on_error = GSListeneron_error; @@ -96,8 +96,6 @@ void GGListener::Init() void GGListener::UnInit() { - delete tcp_listener_; - tcp_listener_ = nullptr; } void GGListener::SendText(int sockhandle, const std::string& text) diff --git a/server/masterserver/GGListener.h b/server/masterserver/GGListener.h index 4192a15..2e332bd 100644 --- a/server/masterserver/GGListener.h +++ b/server/masterserver/GGListener.h @@ -22,7 +22,7 @@ class GGListener : public a8::Singleton void SendMsg(int sockhandle, T& msg) { static int msgid = f8::Net_GetMessageId(msg); - f8::Net_SendMsg(tcp_listener_, sockhandle, 0, msgid, msg); + f8::Net_SendMsg(tcp_listener_.get(), sockhandle, 0, msgid, msg); } void SendText(int sockhandle, const std::string& text); @@ -31,5 +31,5 @@ class GGListener : public a8::Singleton void MarkClient(int sockhandle, bool is_active); private: - a8::TcpListener *tcp_listener_ = nullptr; + std::shared_ptr tcp_listener_; }; diff --git a/server/masterserver/app.cc b/server/masterserver/app.cc index 5c0743a..b9bec93 100755 --- a/server/masterserver/app.cc +++ b/server/masterserver/app.cc @@ -51,7 +51,7 @@ const std::string App::GetPkgName() void App::Init() { - msg_mutex_ = new std::mutex(); + msg_mutex_ = std::make_shared(); HandlerMgr::Instance()->Init(); JsonDataMgr::Instance()->Init(); @@ -80,9 +80,6 @@ void App::UnInit() GGListener::Instance()->UnInit(); JsonDataMgr::Instance()->UnInit(); HandlerMgr::Instance()->UnInit(); - - delete msg_mutex_; - msg_mutex_ = nullptr; } void App::Update() diff --git a/server/masterserver/app.h b/server/masterserver/app.h index f84dae4..a66fcbe 100644 --- a/server/masterserver/app.h +++ b/server/masterserver/app.h @@ -40,7 +40,7 @@ public: private: - std::mutex *msg_mutex_ = nullptr; + std::shared_ptr msg_mutex_; MsgNode* top_node_ = nullptr; MsgNode* bot_node_ = nullptr; MsgNode* work_node_ = nullptr;