[Code] LoginServerList Global to Singleton Cleanup (#4941)

This commit is contained in:
Alex King 2025-06-25 14:49:55 -04:00 committed by GitHub
parent 2128b45313
commit 1153c9ab96
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 32 additions and 35 deletions

View File

@ -90,7 +90,6 @@ std::vector<RaceClassAllocation> character_create_allocations;
std::vector<RaceClassCombos> character_create_race_class_combos;
extern ZSList zoneserver_list;
extern LoginServerList loginserverlist;
extern ClientList client_list;
extern uint32 numclients;
extern volatile bool RunLoops;
@ -518,7 +517,7 @@ bool Client::HandleSendLoginInfoPacket(const EQApplicationPacket *app)
ServerLSPlayerJoinWorld_Struct* join =(ServerLSPlayerJoinWorld_Struct*)pack->pBuffer;
strcpy(join->key,GetLSKey());
join->lsaccount_id = GetLSID();
loginserverlist.SendPacket(pack);
LoginServerList::Instance()->SendPacket(pack);
safe_delete(pack);
}
@ -1250,7 +1249,7 @@ bool Client::Process() {
ServerLSPlayerLeftWorld_Struct* logout =(ServerLSPlayerLeftWorld_Struct*)pack->pBuffer;
strcpy(logout->key,GetLSKey());
logout->lsaccount_id = GetLSID();
loginserverlist.SendPacket(pack);
LoginServerList::Instance()->SendPacket(pack);
safe_delete(pack);
}
LogInfo("Client disconnected (not active in process)");

View File

@ -9,7 +9,6 @@
#include "world_config.h"
extern uint32 numplayers;
extern LoginServerList loginserverlist;
extern ClientList client_list;
extern volatile bool RunLoops;
extern SharedTaskManager shared_task_manager;
@ -146,7 +145,7 @@ void ClientListEntry::LSUpdate(ZoneServer *iZS)
zone->count = iZS->NumPlayers();
zone->zone = iZS->GetZoneID();
zone->zone_wid = iZS->GetID();
loginserverlist.SendPacket(pack);
LoginServerList::Instance()->SendPacket(pack);
safe_delete(pack);
}
}
@ -162,7 +161,7 @@ void ClientListEntry::LSZoneChange(ZoneToZone_Struct *ztz)
zonechange->lsaccount_id = LSID();
zonechange->from = ztz->current_zone_id;
zonechange->to = ztz->requested_zone_id;
loginserverlist.SendPacket(pack);
LoginServerList::Instance()->SendPacket(pack);
safe_delete(pack);
}
}

View File

@ -35,7 +35,6 @@
extern ClientList client_list;
extern ZSList zoneserver_list;
extern LoginServerList loginserverlist;
/**
* @param username
@ -534,8 +533,8 @@ void ConsoleLock(
)
{
WorldConfig::LockWorld();
if (loginserverlist.Connected()) {
loginserverlist.SendStatus();
if (LoginServerList::Instance()->Connected()) {
LoginServerList::Instance()->SendStatus();
connection->SendLine("World locked.");
}
else {
@ -555,8 +554,8 @@ void ConsoleUnlock(
)
{
WorldConfig::UnlockWorld();
if (loginserverlist.Connected()) {
loginserverlist.SendStatus();
if (LoginServerList::Instance()->Connected()) {
LoginServerList::Instance()->SendStatus();
connection->SendLine("World unlocked.");
}
else {

View File

@ -48,7 +48,6 @@
extern ZSList zoneserver_list;
extern ClientList client_list;
extern uint32 numzones;
extern LoginServerList loginserverlist;
extern LauncherList launcher_list;
extern volatile bool RunLoops;
@ -86,15 +85,15 @@ const std::string &EQW::GetOutput() const {
void EQW::LockWorld() {
WorldConfig::LockWorld();
if (loginserverlist.Connected()) {
loginserverlist.SendStatus();
if (LoginServerList::Instance()->Connected()) {
LoginServerList::Instance()->SendStatus();
}
}
void EQW::UnlockWorld() {
WorldConfig::UnlockWorld();
if (loginserverlist.Connected()) {
loginserverlist.SendStatus();
if (LoginServerList::Instance()->Connected()) {
LoginServerList::Instance()->SendStatus();
}
}
@ -104,7 +103,7 @@ Const_char *EQW::GetConfig(Const_char *var_name) {
}
bool EQW::LSConnected() {
return(loginserverlist.Connected());
return(LoginServerList::Instance()->Connected());
}
int EQW::CountZones() {

View File

@ -37,7 +37,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#include "world_config.h"
extern ZSList zoneserver_list;
extern LoginServerList loginserverlist;
extern ClientList client_list;
extern uint32 numzones;
extern uint32 numplayers;

View File

@ -21,6 +21,13 @@ public:
bool SendAccountUpdate(ServerPacket *pack);
bool Connected();
size_t GetServerCount() const { return m_list.size(); }
static LoginServerList* Instance()
{
static LoginServerList instance;
return &instance;
}
protected:
std::list<std::unique_ptr<LoginServer>> m_list;
};

View File

@ -94,7 +94,6 @@
ClientList client_list;
GroupLFPList LFPGroupList;
ZSList zoneserver_list;
LoginServerList loginserverlist;
UCSConnection UCSLink;
QueryServConnection QSLink;
LauncherList launcher_list;

View File

@ -6,7 +6,6 @@
#include "zonelist.h"
#include "launcher_list.h"
extern LoginServerList loginserverlist;
extern ClientList client_list;
extern ZSList zoneserver_list;
extern LauncherList launcher_list;
@ -33,8 +32,8 @@ void EQW__IsLocked(WebInterface *i, const std::string& method, const std::string
void EQW__Lock(WebInterface *i, const std::string& method, const std::string& id, const Json::Value& params) {
WorldConfig::LockWorld();
if (loginserverlist.Connected()) {
loginserverlist.SendStatus();
if (LoginServerList::Instance()->Connected()) {
LoginServerList::Instance()->SendStatus();
}
Json::Value ret;
@ -44,8 +43,8 @@ void EQW__Lock(WebInterface *i, const std::string& method, const std::string& id
void EQW__Unlock(WebInterface *i, const std::string& method, const std::string& id, const Json::Value& params) {
WorldConfig::UnlockWorld();
if (loginserverlist.Connected()) {
loginserverlist.SendStatus();
if (LoginServerList::Instance()->Connected()) {
LoginServerList::Instance()->SendStatus();
}
Json::Value ret;
@ -69,7 +68,7 @@ void EQW__GetLauncherCount(WebInterface *i, const std::string& method, const std
}
void EQW__GetLoginServerCount(WebInterface *i, const std::string& method, const std::string& id, const Json::Value& params) {
Json::Value ret = loginserverlist.GetServerCount();
Json::Value ret = LoginServerList::Instance()->GetServerCount();
i->SendResponse(id, ret);
}

View File

@ -183,15 +183,13 @@ int get_file_size(const std::string &filename) // path to file
return size;
}
extern LoginServerList loginserverlist;
void WorldBoot::RegisterLoginservers()
{
const auto c = EQEmuConfig::get();
if (c->LoginCount == 0) {
if (c->LoginHost.length()) {
loginserverlist.Add(
LoginServerList::Instance()->Add(
c->LoginHost.c_str(),
c->LoginPort,
c->LoginAccount.c_str(),
@ -207,7 +205,7 @@ void WorldBoot::RegisterLoginservers()
iterator.Reset();
while (iterator.MoreElements()) {
if (iterator.GetData()->LoginHost.length()) {
loginserverlist.Add(
LoginServerList::Instance()->Add(
iterator.GetData()->LoginHost.c_str(),
iterator.GetData()->LoginPort,
iterator.GetData()->LoginAccount.c_str(),

View File

@ -55,7 +55,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
extern ClientList client_list;
extern GroupLFPList LFPGroupList;
extern ZSList zoneserver_list;
extern LoginServerList loginserverlist;
extern volatile bool RunLoops;
extern volatile bool UCSServerAvailable_;
extern AdventureManager adventure_manager;
@ -164,7 +163,7 @@ void ZoneServer::LSBootUpdate(uint32 zone_id, uint32 instanceid, bool startup) {
bootup->zone = zone_id;
bootup->zone_wid = GetID();
bootup->instance = instanceid;
loginserverlist.SendPacket(pack);
LoginServerList::Instance()->SendPacket(pack);
safe_delete(pack);
}
}
@ -179,7 +178,7 @@ void ZoneServer::LSSleepUpdate(uint32 zone_id) {
auto sleep = (ServerLSZoneSleep_Struct*) pack->pBuffer;
sleep->zone = zone_id;
sleep->zone_wid = GetID();
loginserverlist.SendPacket(pack);
LoginServerList::Instance()->SendPacket(pack);
safe_delete(pack);
}
}
@ -1076,8 +1075,8 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
WorldConfig::UnlockWorld();
}
if (loginserverlist.Connected()) {
loginserverlist.SendStatus();
if (LoginServerList::Instance()->Connected()) {
LoginServerList::Instance()->SendStatus();
SendEmoteMessage(
l->character_name,
0,
@ -1339,7 +1338,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
case ServerOP_LSAccountUpdate: {
LogNetcode("Received ServerOP_LSAccountUpdate packet from zone");
loginserverlist.SendAccountUpdate(pack);
LoginServerList::Instance()->SendAccountUpdate(pack);
break;
}
case ServerOP_DiscordWebhookMessage: