From b5f1e99d3b4c4f3fc35d441cc0ba43e587c5c728 Mon Sep 17 00:00:00 2001 From: Alex King <89047260+Kinglykrab@users.noreply.github.com> Date: Wed, 25 Jun 2025 14:47:47 -0400 Subject: [PATCH] [Code] DiscordManager Global to Singleton Cleanup (#4926) * [Code] DiscordManager Global to Singleton Cleanup * Update discord_manager.h --------- Co-authored-by: Chris Miles --- common/discord/discord_manager.h | 6 ++++++ queryserv/queryserv.cpp | 2 -- queryserv/zoneserver.cpp | 5 +---- ucs/ucs.cpp | 3 +-- ucs/worldserver.cpp | 5 ++--- 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/common/discord/discord_manager.h b/common/discord/discord_manager.h index f577d994f..d02180859 100644 --- a/common/discord/discord_manager.h +++ b/common/discord/discord_manager.h @@ -13,6 +13,12 @@ public: void QueueWebhookMessage(uint32 webhook_id, const std::string& message); void ProcessMessageQueue(); void QueuePlayerEventMessage(const PlayerEvent::PlayerEventContainer& e); + + static DiscordManager* Instance() + { + static DiscordManager instance; + return &instance; + } private: std::mutex webhook_queue_lock{}; std::map> webhook_message_queue{}; diff --git a/queryserv/queryserv.cpp b/queryserv/queryserv.cpp index 667f06e66..0334949b4 100644 --- a/queryserv/queryserv.cpp +++ b/queryserv/queryserv.cpp @@ -20,7 +20,6 @@ #include "../common/net/console_server.h" #include "../queryserv/zonelist.h" #include "../queryserv/zoneserver.h" -#include "../common/discord/discord_manager.h" volatile bool RunLoops = true; @@ -34,7 +33,6 @@ EQEmuLogSys LogSys; PlayerEventLogs player_event_logs; ZSList zs_list; uint32 numzones = 0; -DiscordManager discord_manager; void CatchSignal(int sig_num) { diff --git a/queryserv/zoneserver.cpp b/queryserv/zoneserver.cpp index b540cf63f..dfa71f66b 100644 --- a/queryserv/zoneserver.cpp +++ b/queryserv/zoneserver.cpp @@ -5,9 +5,6 @@ #include "../common/events/player_event_logs.h" #include "../common/discord/discord_manager.h" -extern DiscordManager discord_manager; - - ZoneServer::ZoneServer( std::shared_ptr in_connection, EQ::Net::ConsoleServer *in_console @@ -38,7 +35,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) player_event_logs.AddToQueue(n.player_event_log); - discord_manager.QueuePlayerEventMessage(n); + DiscordManager::Instance()->QueuePlayerEventMessage(n); break; } default: { diff --git a/ucs/ucs.cpp b/ucs/ucs.cpp index 7e44a4f3a..68e3fbd12 100644 --- a/ucs/ucs.cpp +++ b/ucs/ucs.cpp @@ -47,7 +47,6 @@ Clientlist *g_Clientlist; EQEmuLogSys LogSys; UCSDatabase database; WorldServer *worldserver = nullptr; -DiscordManager discord_manager; PlayerEventLogs player_event_logs; const ucsconfig *Config; @@ -95,7 +94,7 @@ void CatchSignal(int sig_num) { void PlayerEventQueueListener() { while (caught_loop == 0) { - discord_manager.ProcessMessageQueue(); + DiscordManager::Instance()->ProcessMessageQueue(); Sleep(100); } } diff --git a/ucs/worldserver.cpp b/ucs/worldserver.cpp index 253f61fc3..8345afd22 100644 --- a/ucs/worldserver.cpp +++ b/ucs/worldserver.cpp @@ -42,7 +42,6 @@ extern WorldServer worldserver; extern Clientlist *g_Clientlist; extern const ucsconfig *Config; extern UCSDatabase database; -extern DiscordManager discord_manager; void ProcessMailTo(Client *c, const std::string& from, const std::string& subject, const std::string& message); @@ -92,14 +91,14 @@ void WorldServer::ProcessMessage(uint16 opcode, EQ::Net::Packet &p) cereal::BinaryInputArchive archive(ss); archive(n); - discord_manager.QueuePlayerEventMessage(n); + DiscordManager::Instance()->QueuePlayerEventMessage(n); break; } case ServerOP_DiscordWebhookMessage: { auto *q = (DiscordWebhookMessage_Struct *) p.Data(); - discord_manager.QueueWebhookMessage( + DiscordManager::Instance()->QueueWebhookMessage( q->webhook_id, q->message );