[Code] DiscordManager Global to Singleton Cleanup (#4926)

* [Code] DiscordManager Global to Singleton Cleanup

* Update discord_manager.h

---------

Co-authored-by: Chris Miles <akkadius1@gmail.com>
This commit is contained in:
Alex King 2025-06-25 14:47:47 -04:00 committed by GitHub
parent 83918ce020
commit b5f1e99d3b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 10 additions and 11 deletions

View File

@ -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<uint32, std::vector<std::string>> webhook_message_queue{};

View File

@ -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)
{

View File

@ -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<EQ::Net::ServertalkServerConnection> 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: {

View File

@ -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);
}
}

View File

@ -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
);