[Code] ZSList Global to Singleton Cleanup (#4940)

* [Code] ZSList Global to Singleton Cleanup

* Final

* Post merge fixes

---------

Co-authored-by: Chris Miles <akkadius1@gmail.com>
This commit is contained in:
Alex King 2025-06-25 16:16:44 -04:00 committed by GitHub
parent 643ee56433
commit dc261bb203
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
24 changed files with 266 additions and 275 deletions

View File

@ -28,7 +28,6 @@ Database database;
std::string WorldShortName;
const queryservconfig *Config;
WorldServer *worldserver = 0;
ZSList zs_list;
uint32 numzones = 0;
void CatchSignal(int sig_num)
@ -122,7 +121,7 @@ int main()
server_connection->OnConnectionIdentified(
"Zone", [&console](std::shared_ptr<EQ::Net::ServertalkServerConnection> connection) {
numzones++;
zs_list.Add(new ZoneServer(connection, console.get()));
ZSList::Instance()->Add(new ZoneServer(connection, console.get()));
LogInfo(
"New Zone Server connection from [{}] at [{}:{}] zone_count [{}]",
@ -137,7 +136,7 @@ int main()
server_connection->OnConnectionRemoved(
"Zone", [](std::shared_ptr<EQ::Net::ServertalkServerConnection> connection) {
numzones--;
zs_list.Remove(connection->GetUUID());
ZSList::Instance()->Remove(connection->GetUUID());
LogInfo(
"Removed Zone Server connection from [{}] total zone_count [{}]",

View File

@ -26,7 +26,6 @@
extern WorldServer worldserver;
extern const queryservconfig *Config;
extern QSDatabase qs_database;
extern ZSList zs_list;
WorldServer::WorldServer()
{
@ -80,7 +79,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
if (o->type == ServerReload::Type::Logs) {
EQEmuLogSys::Instance()->LoadLogDatabaseSettings();
PlayerEventLogs::Instance()->ReloadSettings();
zs_list.SendPlayerEventLogSettings();
ZSList::Instance()->SendPlayerEventLogSettings();
}
break;

View File

@ -6,9 +6,9 @@
#include <vector>
#include <memory>
#include <list>
#include "zoneserver.h"
class WorldTCPConnection;
class ZoneServer;
class ZSList {
public:
@ -17,6 +17,12 @@ public:
void Remove(const std::string& uuid);
void SendPlayerEventLogSettings();
static ZSList* Instance()
{
static ZSList instance;
return &instance;
}
private:
std::list<std::unique_ptr<ZoneServer>> zone_server_list;
};

View File

@ -15,7 +15,6 @@
#include "../common/zone_store.h"
#include "../common/repositories/character_corpses_repository.h"
extern ZSList zoneserver_list;
extern ClientList client_list;
extern EQ::Random emu_random;
@ -176,7 +175,7 @@ void Adventure::SetStatus(AdventureStatus new_status)
ut->instance_id = instance_id;
ut->new_duration = adventure_template->duration + 60;
zoneserver_list.SendPacket(0, instance_id, pack);
ZSList::Instance()->SendPacket(0, instance_id, pack);
safe_delete(pack);
}
else if(new_status == AS_WaitingForSecondaryEndTime)
@ -190,7 +189,7 @@ void Adventure::SetStatus(AdventureStatus new_status)
ut->instance_id = instance_id;
ut->new_duration = 1860;
zoneserver_list.SendPacket(0, instance_id, pack);
ZSList::Instance()->SendPacket(0, instance_id, pack);
safe_delete(pack);
}
else if(new_status == AS_Finished)
@ -204,7 +203,7 @@ void Adventure::SetStatus(AdventureStatus new_status)
ut->instance_id = instance_id;
ut->new_duration = 1860;
zoneserver_list.SendPacket(0, instance_id, pack);
ZSList::Instance()->SendPacket(0, instance_id, pack);
safe_delete(pack);
}
else
@ -233,7 +232,7 @@ void Adventure::SendAdventureMessage(uint32 type, const char *msg)
if(current)
{
strcpy(sms->to, (*iter).c_str());
zoneserver_list.SendPacket(current->zone(), current->instance(), pack);
ZSList::Instance()->SendPacket(current->zone(), current->instance(), pack);
}
++iter;
}
@ -309,7 +308,7 @@ void Adventure::Finished(AdventureWinStatus ws)
af->win = false;
af->points = 0;
}
zoneserver_list.SendPacket(current->zone(), current->instance(), pack);
ZSList::Instance()->SendPacket(current->zone(), current->instance(), pack);
database.UpdateAdventureStatsEntry(character_id, GetTemplate()->theme, (ws != AWS_Lose) ? true : false);
delete pack;
}
@ -395,7 +394,7 @@ void Adventure::MoveCorpsesToGraveyard()
d->InstanceID = 0;
d->ZoneID = GetTemplate()->graveyard_zone_id;
zoneserver_list.SendPacket(0, GetInstanceID(), pack);
ZSList::Instance()->SendPacket(0, GetInstanceID(), pack);
delete pack;
@ -406,7 +405,7 @@ void Adventure::MoveCorpsesToGraveyard()
spc->player_corpse_id = e.id;
spc->zone_id = GetTemplate()->graveyard_zone_id;
zoneserver_list.SendPacket(spc->zone_id, 0, pack);
ZSList::Instance()->SendPacket(spc->zone_id, 0, pack);
delete pack;
}

View File

@ -14,7 +14,6 @@
#include <sstream>
#include <stdio.h>
extern ZSList zoneserver_list;
extern ClientList client_list;
AdventureManager::AdventureManager()
@ -83,7 +82,7 @@ void AdventureManager::CalculateAdventureRequestReply(const char *data)
ServerAdventureRequestDeny_Struct *deny = (ServerAdventureRequestDeny_Struct*)pack->pBuffer;
strcpy(deny->leader, sar->leader);
strcpy(deny->reason, "There are currently no adventures set for this theme.");
zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack);
ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack);
delete pack;
return;
}
@ -112,7 +111,7 @@ void AdventureManager::CalculateAdventureRequestReply(const char *data)
ss << (data + sizeof(ServerAdventureRequest_Struct) + (64 * i)) << " is already apart of an active adventure.";
strcpy(deny->reason, ss.str().c_str());
zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack);
ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack);
delete pack;
return;
}
@ -243,7 +242,7 @@ void AdventureManager::CalculateAdventureRequestReply(const char *data)
ServerAdventureRequestDeny_Struct *deny = (ServerAdventureRequestDeny_Struct*)pack->pBuffer;
strcpy(deny->leader, sar->leader);
strcpy(deny->reason, "The number of found players for this adventure was zero.");
zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack);
ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack);
delete pack;
return;
}
@ -260,7 +259,7 @@ void AdventureManager::CalculateAdventureRequestReply(const char *data)
ss << "The maximum level range for this adventure is " << RuleI(Adventure, MaxLevelRange);
ss << " but the level range calculated was " << (max_level - min_level) << ".";
strcpy(deny->reason, ss.str().c_str());
zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack);
ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack);
delete pack;
return;
}
@ -337,7 +336,7 @@ void AdventureManager::CalculateAdventureRequestReply(const char *data)
sra->id = (*ea_iter)->id;
sra->member_count = sar->member_count;
memcpy((pack->pBuffer + sizeof(ServerAdventureRequestAccept_Struct)), (data + sizeof(ServerAdventureRequest_Struct)), (sar->member_count * 64));
zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack);
ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack);
delete pack;
return;
}
@ -347,7 +346,7 @@ void AdventureManager::CalculateAdventureRequestReply(const char *data)
ServerAdventureRequestDeny_Struct *deny = (ServerAdventureRequestDeny_Struct*)pack->pBuffer;
strcpy(deny->leader, sar->leader);
strcpy(deny->reason, "The number of adventures returned was zero.");
zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack);
ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack);
delete pack;
return;
}
@ -367,7 +366,7 @@ void AdventureManager::TryAdventureCreate(const char *data)
{
auto pack = new ServerPacket(ServerOP_AdventureCreateDeny, 64);
strcpy((char*)pack->pBuffer, src->leader);
zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack);
ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack);
delete pack;
return;
}
@ -377,7 +376,7 @@ void AdventureManager::TryAdventureCreate(const char *data)
{
auto pack = new ServerPacket(ServerOP_AdventureCreateDeny, 64);
strcpy((char*)pack->pBuffer, src->leader);
zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack);
ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack);
delete pack;
delete adv;
return;
@ -390,7 +389,7 @@ void AdventureManager::TryAdventureCreate(const char *data)
{
auto pack = new ServerPacket(ServerOP_AdventureCreateDeny, 64);
strcpy((char*)pack->pBuffer, src->leader);
zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack);
ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack);
delete pack;
delete adv;
return;
@ -435,7 +434,7 @@ void AdventureManager::TryAdventureCreate(const char *data)
sfa->zone_in_object = finished_adventures[f]->GetTemplate()->zone_in_object_id;
}
zoneserver_list.SendPacket(player->zone(), player->instance(), pack);
ZSList::Instance()->SendPacket(player->zone(), player->instance(), pack);
safe_delete_array(finished_adventures);
delete pack;
}
@ -496,7 +495,7 @@ void AdventureManager::GetAdventureData(const char *name)
delete pack;
auto pack = new ServerPacket(ServerOP_AdventureDataClear, 64);
strcpy((char*)pack->pBuffer, name);
zoneserver_list.SendPacket(player->zone(), player->instance(), pack);
ZSList::Instance()->SendPacket(player->zone(), player->instance(), pack);
delete pack;
delete[] finished_adventures;
@ -514,7 +513,7 @@ void AdventureManager::GetAdventureData(const char *name)
sfa->zone_in_object = finished_adventures[i]->GetTemplate()->zone_in_object_id;
}
zoneserver_list.SendPacket(player->zone(), player->instance(), pack);
ZSList::Instance()->SendPacket(player->zone(), player->instance(), pack);
safe_delete_array(finished_adventures);
delete pack;
delete[] finished_adventures;
@ -782,7 +781,7 @@ void AdventureManager::PlayerClickedDoor(const char *player, int zone_id, int do
(*iter)->SetStatus(AS_WaitingForPrimaryEndTime);
}
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
safe_delete(pack);
}
return;
@ -796,7 +795,7 @@ void AdventureManager::PlayerClickedDoor(const char *player, int zone_id, int do
{
auto pack = new ServerPacket(ServerOP_AdventureClickDoorError, 64);
strcpy((char*)pack->pBuffer, player);
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
safe_delete(pack);
}
}
@ -813,7 +812,7 @@ void AdventureManager::LeaveAdventure(const char *name)
{
auto pack = new ServerPacket(ServerOP_AdventureLeaveDeny, 64);
strcpy((char*)pack->pBuffer, name);
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
safe_delete(pack);
}
else
@ -826,7 +825,7 @@ void AdventureManager::LeaveAdventure(const char *name)
current->RemovePlayer(name);
auto pack = new ServerPacket(ServerOP_AdventureLeaveReply, 64);
strcpy((char*)pack->pBuffer, name);
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
safe_delete(pack);
}
}
@ -834,7 +833,7 @@ void AdventureManager::LeaveAdventure(const char *name)
{
auto pack = new ServerPacket(ServerOP_AdventureLeaveReply, 64);
strcpy((char*)pack->pBuffer, name);
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
safe_delete(pack);
}
}
@ -871,7 +870,7 @@ void AdventureManager::IncrementCount(uint16 instance_id)
{
memset(ac->player, 0, 64);
strcpy(ac->player, (*siter).c_str());
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
}
++siter;
}
@ -935,7 +934,7 @@ void AdventureManager::GetZoneData(uint16 instance_id)
zd->dest_y = temp->dest_y;
zd->dest_z = temp->dest_z;
zd->dest_h = temp->dest_h;
zoneserver_list.SendPacket(0, instance_id, pack);
ZSList::Instance()->SendPacket(0, instance_id, pack);
delete pack;
}
}
@ -1320,7 +1319,7 @@ void AdventureManager::DoLeaderboardRequestWins(const char* player)
al->failure = our_failures;
}
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
delete pack;
}
}
@ -1386,7 +1385,7 @@ void AdventureManager::DoLeaderboardRequestPercentage(const char* player)
al->failure = our_failures;
}
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
delete pack;
}
}
@ -1452,7 +1451,7 @@ void AdventureManager::DoLeaderboardRequestWinsGuk(const char* player)
al->failure = our_failures;
}
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
delete pack;
}
}
@ -1518,7 +1517,7 @@ void AdventureManager::DoLeaderboardRequestPercentageGuk(const char* player)
al->failure = our_failures;
}
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
delete pack;
}
}
@ -1584,7 +1583,7 @@ void AdventureManager::DoLeaderboardRequestWinsMir(const char* player)
al->failure = our_failures;
}
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
delete pack;
}
}
@ -1650,7 +1649,7 @@ void AdventureManager::DoLeaderboardRequestPercentageMir(const char* player)
al->failure = our_failures;
}
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
delete pack;
}
}
@ -1716,7 +1715,7 @@ void AdventureManager::DoLeaderboardRequestWinsMmc(const char* player)
al->failure = our_failures;
}
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
delete pack;
}
}
@ -1782,7 +1781,7 @@ void AdventureManager::DoLeaderboardRequestPercentageMmc(const char* player)
al->failure = our_failures;
}
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
delete pack;
}
}
@ -1848,7 +1847,7 @@ void AdventureManager::DoLeaderboardRequestWinsRuj(const char* player)
al->failure = our_failures;
}
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
delete pack;
}
}
@ -1914,7 +1913,7 @@ void AdventureManager::DoLeaderboardRequestPercentageRuj(const char* player)
al->failure = our_failures;
}
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
delete pack;
}
}
@ -1980,7 +1979,7 @@ void AdventureManager::DoLeaderboardRequestWinsTak(const char* player)
al->failure = our_failures;
}
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
delete pack;
}
}
@ -2046,7 +2045,7 @@ void AdventureManager::DoLeaderboardRequestPercentageTak(const char* player)
al->failure = our_failures;
}
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
delete pack;
}
}
@ -2083,7 +2082,7 @@ void AdventureManager::SendAdventureFinish(AdventureFinishEvent fe)
af->win = fe.win;
af->points = fe.points;
zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack);
ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack);
delete pack;
}
}

View File

@ -89,7 +89,6 @@
std::vector<RaceClassAllocation> character_create_allocations;
std::vector<RaceClassCombos> character_create_race_class_combos;
extern ZSList zoneserver_list;
extern ClientList client_list;
extern uint32 numclients;
extern volatile bool RunLoops;
@ -1415,18 +1414,18 @@ void Client::EnterWorld(bool TryBootup) {
return;
}
zone_server = zoneserver_list.FindByInstanceID(instance_id);
zone_server = ZSList::Instance()->FindByInstanceID(instance_id);
}
else
{
zone_server = zoneserver_list.FindByZoneID(zone_id);
zone_server = ZSList::Instance()->FindByZoneID(zone_id);
}
const char *zone_name = ZoneName(zone_id, true);
if (zone_server) {
if (false == enter_world_triggered) {
//Drop any clients we own in other zones.
zoneserver_list.DropClient(GetLSID(), zone_server);
ZSList::Instance()->DropClient(GetLSID(), zone_server);
// warn the zone we're coming
zone_server->IncomingClient(this);
@ -1439,7 +1438,7 @@ void Client::EnterWorld(bool TryBootup) {
if (TryBootup) {
LogInfo("Attempting autobootup of [{}] [{}] [{}]", zone_name, zone_id, instance_id);
autobootup_timeout.Start();
zone_waiting_for_bootup = zoneserver_list.TriggerBootup(zone_id, instance_id);
zone_waiting_for_bootup = ZSList::Instance()->TriggerBootup(zone_id, instance_id);
if (zone_waiting_for_bootup == 0) {
LogInfo("No zoneserver available to boot up");
TellClientZoneUnavailable();
@ -1455,7 +1454,7 @@ void Client::EnterWorld(bool TryBootup) {
zone_waiting_for_bootup = 0;
if (GetAdmin() < 80 && zoneserver_list.IsZoneLocked(zone_id)) {
if (GetAdmin() < 80 && ZSList::Instance()->IsZoneLocked(zone_id)) {
LogInfo("Enter world failed. Zone is locked");
TellClientZoneUnavailable();
return;
@ -1501,11 +1500,11 @@ void Client::Clearance(int8 response)
ZoneServer* zs = nullptr;
if(instance_id > 0)
{
zs = zoneserver_list.FindByInstanceID(instance_id);
zs = ZSList::Instance()->FindByInstanceID(instance_id);
}
else
{
zs = zoneserver_list.FindByZoneID(zone_id);
zs = ZSList::Instance()->FindByZoneID(zone_id);
}
if(zs == 0 || response == -1 || response == 0)

View File

@ -36,7 +36,6 @@
#include "../common/zone_store.h"
#include <set>
extern ZSList zoneserver_list;
uint32 numplayers = 0; //this really wants to be a member variable of ClientList...
ClientList::ClientList()
@ -232,7 +231,7 @@ void ClientList::DisconnectByIP(uint32 in_ip) {
strn0cpy(skp->adminname, "SessionLimit", sizeof(skp->adminname));
strn0cpy(skp->name, cle->name(), sizeof(skp->name));
skp->adminrank = 255;
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
safe_delete(pack);
}
cle->SetOnline(CLE_Status::Offline);
@ -551,7 +550,7 @@ void ClientList::SendOnlineGuildMembers(uint32 FromID, uint32 GuildID)
Iterator.Advance();
}
zoneserver_list.SendPacket(from->zone(), from->instance(), pack);
ZSList::Instance()->SendPacket(from->zone(), from->instance(), pack);
safe_delete(pack);
}
@ -1316,7 +1315,7 @@ void ClientList::RemoveCLEReferances(ClientListEntry* cle) {
bool ClientList::SendPacket(const char* to, ServerPacket* pack) {
if (to == 0 || to[0] == 0) {
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
return true;
}
else if (to[0] == '*') {
@ -1332,7 +1331,7 @@ bool ClientList::SendPacket(const char* to, ServerPacket* pack) {
}
return false;
} else {
ZoneServer* zs = zoneserver_list.FindByName(to);
ZoneServer* zs = ZSList::Instance()->FindByName(to);
if (zs != nullptr) {
zs->SendPacket(pack);
return true;
@ -1437,7 +1436,7 @@ void ClientList::SendClientVersionSummary(const char *Name)
);
if (client_count[EQ::versions::ClientVersion::Titanium]) {
zoneserver_list.SendEmoteMessage(
ZSList::Instance()->SendEmoteMessage(
Name,
0,
AccountStatus::Player,
@ -1450,7 +1449,7 @@ void ClientList::SendClientVersionSummary(const char *Name)
}
if (client_count[EQ::versions::ClientVersion::SoF]) {
zoneserver_list.SendEmoteMessage(
ZSList::Instance()->SendEmoteMessage(
Name,
0,
AccountStatus::Player,
@ -1463,7 +1462,7 @@ void ClientList::SendClientVersionSummary(const char *Name)
}
if (client_count[EQ::versions::ClientVersion::SoD]) {
zoneserver_list.SendEmoteMessage(
ZSList::Instance()->SendEmoteMessage(
Name,
0,
AccountStatus::Player,
@ -1476,7 +1475,7 @@ void ClientList::SendClientVersionSummary(const char *Name)
}
if (client_count[EQ::versions::ClientVersion::UF]) {
zoneserver_list.SendEmoteMessage(
ZSList::Instance()->SendEmoteMessage(
Name,
0,
AccountStatus::Player,
@ -1489,7 +1488,7 @@ void ClientList::SendClientVersionSummary(const char *Name)
}
if (client_count[EQ::versions::ClientVersion::RoF]) {
zoneserver_list.SendEmoteMessage(
ZSList::Instance()->SendEmoteMessage(
Name,
0,
AccountStatus::Player,
@ -1502,7 +1501,7 @@ void ClientList::SendClientVersionSummary(const char *Name)
}
if (client_count[EQ::versions::ClientVersion::RoF2]) {
zoneserver_list.SendEmoteMessage(
ZSList::Instance()->SendEmoteMessage(
Name,
0,
AccountStatus::Player,
@ -1515,7 +1514,7 @@ void ClientList::SendClientVersionSummary(const char *Name)
}
zoneserver_list.SendEmoteMessage(
ZSList::Instance()->SendEmoteMessage(
Name,
0,
AccountStatus::Player,

View File

@ -34,7 +34,6 @@
#include <fmt/format.h>
extern ClientList client_list;
extern ZSList zoneserver_list;
/**
* @param username
@ -148,7 +147,7 @@ void ConsoleZoneStatus(
)
{
WorldConsoleTCPConnection console_connection(connection);
zoneserver_list.SendZoneStatus(0, connection->Admin(), &console_connection);
ZSList::Instance()->SendZoneStatus(0, connection->Admin(), &console_connection);
}
/**
@ -215,7 +214,7 @@ void ConsoleUptime(
ServerUptime_Struct *sus = (ServerUptime_Struct *) pack->pBuffer;
snprintf(sus->adminname, sizeof(sus->adminname), "*%s", connection->UserName().c_str());
sus->zoneserverid = Strings::ToInt(args[0]);
ZoneServer *zs = zoneserver_list.FindByID(sus->zoneserverid);
ZoneServer *zs = ZSList::Instance()->FindByID(sus->zoneserverid);
if (zs) {
zs->SendPacket(pack);
}
@ -290,7 +289,7 @@ void ConsoleEmote(
join_args.erase(join_args.begin(), join_args.begin() + 2);
if (strcasecmp(args[0].c_str(), "world") == 0) {
zoneserver_list.SendEmoteMessageRaw(
ZSList::Instance()->SendEmoteMessageRaw(
0,
0,
AccountStatus::Player,
@ -299,7 +298,7 @@ void ConsoleEmote(
);
}
else {
ZoneServer *zs = zoneserver_list.FindByName(args[0].c_str());
ZoneServer *zs = ZSList::Instance()->FindByName(args[0].c_str());
if (zs != 0) {
zs->SendEmoteMessageRaw(
0,
@ -310,7 +309,7 @@ void ConsoleEmote(
);
}
else {
zoneserver_list.SendEmoteMessageRaw(
ZSList::Instance()->SendEmoteMessageRaw(
args[0].c_str(),
0,
AccountStatus::Player,
@ -371,7 +370,7 @@ void ConsoleTell(
auto join_args = args;
join_args.erase(join_args.begin(), join_args.begin() + 1);
zoneserver_list.SendChannelMessage(tmpname, to.c_str(), ChatChannel_Tell, 0, Strings::Join(join_args, " ").c_str());
ZSList::Instance()->SendChannelMessage(tmpname, to.c_str(), ChatChannel_Tell, 0, Strings::Join(join_args, " ").c_str());
}
/**
@ -392,7 +391,7 @@ void ConsoleBroadcast(
char tmpname[64];
tmpname[0] = '*';
strcpy(&tmpname[1], connection->UserName().c_str());
zoneserver_list.SendChannelMessage(tmpname, 0, ChatChannel_Broadcast, 0, Strings::Join(args, " ").c_str());
ZSList::Instance()->SendChannelMessage(tmpname, 0, ChatChannel_Broadcast, 0, Strings::Join(args, " ").c_str());
}
/**
@ -413,7 +412,7 @@ void ConsoleGMSay(
char tmpname[64];
tmpname[0] = '*';
strcpy(&tmpname[1], connection->UserName().c_str());
zoneserver_list.SendChannelMessage(tmpname, 0, ChatChannel_GMSAY, 0, Strings::Join(args, " ").c_str());
ZSList::Instance()->SendChannelMessage(tmpname, 0, ChatChannel_GMSAY, 0, Strings::Join(args, " ").c_str());
}
/**
@ -446,7 +445,7 @@ void ConsoleGuildSay(
Strings::Join(join_args, " ")
);
zoneserver_list.SendEmoteMessage(0, guild_id, AccountStatus::Player, Chat::Guild, message.c_str());
ZSList::Instance()->SendEmoteMessage(0, guild_id, AccountStatus::Player, Chat::Guild, message.c_str());
}
/**
@ -467,7 +466,7 @@ void ConsoleOOC(
char tmpname[64];
tmpname[0] = '*';
strcpy(&tmpname[1], connection->UserName().c_str());
zoneserver_list.SendChannelMessage(tmpname, 0, ChatChannel_OOC, 0, Strings::Join(args, " ").c_str());
ZSList::Instance()->SendChannelMessage(tmpname, 0, ChatChannel_OOC, 0, Strings::Join(args, " ").c_str());
}
/**
@ -488,7 +487,7 @@ void ConsoleAuction(
char tmpname[64];
tmpname[0] = '*';
strcpy(&tmpname[1], connection->UserName().c_str());
zoneserver_list.SendChannelMessage(tmpname, 0, ChatChannel_Auction, 0, Strings::Join(args, " ").c_str());
ZSList::Instance()->SendChannelMessage(tmpname, 0, ChatChannel_Auction, 0, Strings::Join(args, " ").c_str());
}
/**
@ -517,7 +516,7 @@ void ConsoleKick(
strcpy(skp->adminname, tmpname);
strcpy(skp->name, args[0].c_str());
skp->adminrank = connection->Admin();
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
delete pack;
}
@ -603,10 +602,10 @@ void ConsoleZoneShutdown(
ZoneServer *zs = 0;
if (s->zone_server_id != 0) {
zs = zoneserver_list.FindByID(s->zone_server_id);
zs = ZSList::Instance()->FindByID(s->zone_server_id);
}
else if (s->zone_id != 0) {
zs = zoneserver_list.FindByName(ZoneName(s->zone_id));
zs = ZSList::Instance()->FindByName(ZoneName(s->zone_id));
}
else {
connection->SendLine("Error: ZoneShutdown: neither ID nor name specified");
@ -647,14 +646,14 @@ void ConsoleZoneBootup(
strcpy(&tmpname[1], connection->UserName().c_str());
if (args.size() > 2) {
zoneserver_list.SOPZoneBootup(
ZSList::Instance()->SOPZoneBootup(
tmpname,
Strings::ToInt(args[0]),
args[1].c_str(),
(bool) (strcasecmp(args[1].c_str(), "static") == 0));
}
else {
zoneserver_list.SOPZoneBootup(tmpname, Strings::ToInt(args[0]), args[1].c_str(), false);
ZSList::Instance()->SOPZoneBootup(tmpname, Strings::ToInt(args[0]), args[1].c_str(), false);
}
}
}
@ -676,7 +675,7 @@ void ConsoleZoneLock(
if (strcasecmp(args[0].c_str(), "list") == 0) {
WorldConsoleTCPConnection console_connection(connection);
zoneserver_list.ListLockedZones(0, &console_connection);
ZSList::Instance()->ListLockedZones(0, &console_connection);
}
else if (strcasecmp(args[0].c_str(), "lock") == 0 && connection->Admin() >= 101) {
if (args.size() < 2) {
@ -685,8 +684,8 @@ void ConsoleZoneLock(
uint16 tmp = ZoneID(args[1].c_str());
if (tmp) {
if (zoneserver_list.SetLockedZone(tmp, true)) {
zoneserver_list.SendEmoteMessage(
if (ZSList::Instance()->SetLockedZone(tmp, true)) {
ZSList::Instance()->SendEmoteMessage(
0,
0,
AccountStatus::QuestTroupe,
@ -712,8 +711,8 @@ void ConsoleZoneLock(
uint16 tmp = ZoneID(args[1].c_str());
if (tmp) {
if (zoneserver_list.SetLockedZone(tmp, false)) {
zoneserver_list.SendEmoteMessage(
if (ZSList::Instance()->SetLockedZone(tmp, false)) {
ZSList::Instance()->SendEmoteMessage(
0,
0,
AccountStatus::QuestTroupe,
@ -833,7 +832,7 @@ void ConsoleWorldShutdown(
int32 time, interval;
if (Strings::IsNumber(args[0]) && Strings::IsNumber(args[1]) && ((time = Strings::ToInt(args[0])) > 0) &&
((interval = Strings::ToInt(args[1])) > 0)) {
zoneserver_list.WorldShutDown(time, interval);
ZSList::Instance()->WorldShutDown(time, interval);
}
else {
connection->SendLine("Usage: worldshutdown [now] [disable] ([time] [interval])");
@ -841,19 +840,19 @@ void ConsoleWorldShutdown(
}
else if (args.size() == 1) {
if (strcasecmp(args[0].c_str(), "now") == 0) {
zoneserver_list.WorldShutDown(0, 0);
ZSList::Instance()->WorldShutDown(0, 0);
}
else if (strcasecmp(args[0].c_str(), "disable") == 0) {
connection->SendLine("[SYSTEM] World shutdown has been aborted.");
zoneserver_list.SendEmoteMessage(
ZSList::Instance()->SendEmoteMessage(
0,
0,
AccountStatus::Player,
Chat::Yellow,
"[SYSTEM] World shutdown has been aborted."
);
zoneserver_list.shutdowntimer->Disable();
zoneserver_list.reminder->Disable();
ZSList::Instance()->shutdowntimer->Disable();
ZSList::Instance()->reminder->Disable();
}
else {
connection->SendLine("Usage: worldshutdown [now] [disable] ([time] [interval])");
@ -906,7 +905,7 @@ void ConsoleSignalCharByName(
CZS->update_identifier = update_identifier;
CZS->signal_id = Strings::ToInt(args[1]);
strn0cpy(CZS->client_name, (char *) args[0].c_str(), 64);
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
safe_delete(pack);
}
@ -922,7 +921,7 @@ void ConsoleReloadWorld(
)
{
connection->SendLine("Reloading World...");
zoneserver_list.SendServerReload(ServerReload::Type::WorldRepop, nullptr);
ZSList::Instance()->SendServerReload(ServerReload::Type::WorldRepop, nullptr);
}
auto debounce_reload = std::chrono::system_clock::now();
@ -959,7 +958,7 @@ void ConsoleReloadZoneQuests(
auto *hot_reload_quests = (HotReloadQuestsStruct *) pack->pBuffer;
strn0cpy(hot_reload_quests->zone_short_name, (char *) zone_short_name.c_str(), 200);
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
safe_delete(pack);
}
@ -1075,7 +1074,7 @@ void ConsoleCrossZoneCastSpell(
strn0cpy(CZS->client_name, name.c_str(), sizeof(CZS->client_name));
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
safe_delete(pack);
connection->SendLine(
@ -1126,7 +1125,7 @@ void ConsoleWorldWideCastSpell(
WWS->min_status = min_status;
WWS->max_status = max_status;
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
safe_delete(pack);
connection->SendLine(
@ -1257,7 +1256,7 @@ void ConsoleCrossZoneMove(
m->zone_short_name = zone_short_name;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
safe_delete(pack);
connection->SendLine(
@ -1316,7 +1315,7 @@ void ConsoleWorldWideMove(
strn0cpy(WWM->zone_short_name, zone_short_name.c_str(), sizeof(WWM->zone_short_name));
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
safe_delete(pack);
connection->SendLine(
@ -1360,7 +1359,7 @@ void ConsoleWWMarquee(
strn0cpy(wwm->message, message.c_str(), sizeof(wwm->message));
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
safe_delete(pack);
connection->SendLine(fmt::format("Sent world marquee type {}: {}", type, message));

View File

@ -9,7 +9,6 @@
#include "../common/repositories/instance_list_repository.h"
extern ClientList client_list;
extern ZSList zoneserver_list;
Database& DynamicZone::GetDatabase()
{
@ -18,7 +17,7 @@ Database& DynamicZone::GetDatabase()
bool DynamicZone::SendServerPacket(ServerPacket* packet)
{
return zoneserver_list.SendPacket(packet);
return ZSList::Instance()->SendPacket(packet);
}
DynamicZone* DynamicZone::FindDynamicZoneByID(uint32_t dz_id)
@ -91,7 +90,7 @@ DynamicZoneStatus DynamicZone::Process()
{
status = DynamicZoneStatus::Expired;
auto dz_zoneserver = zoneserver_list.FindByInstanceID(GetInstanceID());
auto dz_zoneserver = ZSList::Instance()->FindByInstanceID(GetInstanceID());
if (!dz_zoneserver || dz_zoneserver->NumPlayers() == 0) // no clients inside dz
{
status = DynamicZoneStatus::ExpiredEmpty;
@ -119,7 +118,7 @@ void DynamicZone::SendZonesDynamicZoneDeleted()
auto pack = std::make_unique<ServerPacket>(ServerOP_DzDeleted, pack_size);
auto buf = reinterpret_cast<ServerDzID_Struct*>(pack->pBuffer);
buf->dz_id = GetID();
zoneserver_list.SendPacket(pack.get());
ZSList::Instance()->SendPacket(pack.get());
}
void DynamicZone::SetSecondsRemaining(uint32_t seconds_remaining)
@ -154,7 +153,7 @@ void DynamicZone::SendZonesDurationUpdate()
auto packbuf = reinterpret_cast<ServerDzSetDuration_Struct*>(pack->pBuffer);
packbuf->dz_id = GetID();
packbuf->seconds = static_cast<uint32_t>(m_duration.count());
zoneserver_list.SendPacket(pack.get());
ZSList::Instance()->SendPacket(pack.get());
}
void DynamicZone::SendZonesLeaderChanged()
@ -164,7 +163,7 @@ void DynamicZone::SendZonesLeaderChanged()
auto buf = reinterpret_cast<ServerDzLeaderID_Struct*>(pack->pBuffer);
buf->dz_id = GetID();
buf->leader_id = GetLeaderID();
zoneserver_list.SendPacket(pack.get());
ZSList::Instance()->SendPacket(pack.get());
}
void DynamicZone::ProcessMemberAddRemove(const DynamicZoneMember& member, bool removed)
@ -198,7 +197,7 @@ void DynamicZone::SendZonesExpireWarning(uint32_t minutes_remaining)
auto buf = reinterpret_cast<ServerDzExpireWarning_Struct*>(pack->pBuffer);
buf->dz_id = GetID();
buf->minutes_remaining = minutes_remaining;
zoneserver_list.SendPacket(pack.get());
ZSList::Instance()->SendPacket(pack.get());
}
void DynamicZone::SendZoneMemberStatuses(uint16_t zone_id, uint16_t instance_id)
@ -217,7 +216,7 @@ void DynamicZone::SendZoneMemberStatuses(uint16_t zone_id, uint16_t instance_id)
buf->entries[i].online_status = static_cast<uint8_t>(m_members[i].status);
}
zoneserver_list.SendPacket(zone_id, instance_id, pack.get());
ZSList::Instance()->SendPacket(zone_id, instance_id, pack.get());
}
void DynamicZone::CacheMemberStatuses()

View File

@ -10,7 +10,6 @@
#include <cereal/types/utility.hpp>
extern ClientList client_list;
extern ZSList zoneserver_list;
DynamicZoneManager dynamic_zone_manager;
@ -56,7 +55,7 @@ DynamicZone* DynamicZoneManager::TryCreate(DynamicZone& dz_request, const std::v
LogDynamicZones("Created new dz [{}] for zone [{}]", dz_id, dz_request.GetZoneID());
auto pack = dz->CreateServerPacket(0, 0);
zoneserver_list.SendPacket(pack.get());
ZSList::Instance()->SendPacket(pack.get());
auto inserted = dynamic_zone_cache.emplace(dz_id, std::move(dz));
return inserted.first->second.get();
@ -76,7 +75,7 @@ void DynamicZoneManager::CacheNewDynamicZone(ServerPacket* pack)
dynamic_zone_cache.emplace(buf->dz_id, std::move(new_dz));
LogDynamicZones("Cached new dynamic zone [{}]", buf->dz_id);
zoneserver_list.SendPacket(repack.get());
ZSList::Instance()->SendPacket(repack.get());
}
void DynamicZoneManager::CacheAllFromDatabase()
@ -194,7 +193,7 @@ void DynamicZoneManager::SendBulkMemberStatuses(uint32_t zone_id, uint16_t inst_
buf->cereal_size = static_cast<uint32_t>(sv.size());
memcpy(buf->cereal_data, sv.data(), sv.size());
zoneserver_list.SendPacket(zone_id, inst_id, &pack);
ZSList::Instance()->SendPacket(zone_id, inst_id, &pack);
}
void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
@ -301,7 +300,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
dz->SetZoneInLocation(buf->x, buf->y, buf->z, buf->heading, false);
}
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_DzSetSwitchID:
@ -311,7 +310,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
{
dz->ProcessSetSwitchID(buf->dz_switch_id);
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_DzAddRemoveMember:
@ -322,7 +321,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
auto status = static_cast<DynamicZoneMemberStatus>(buf->character_status);
dz->ProcessMemberAddRemove({ buf->character_id, buf->character_name, status }, buf->removed);
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_DzSwapMembers:
@ -335,7 +334,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
dz->ProcessMemberAddRemove({ buf->add_character_id, buf->add_character_name, status }, false);
dz->ProcessMemberAddRemove({ buf->remove_character_id, buf->remove_character_name }, true);
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_DzRemoveAllMembers:
@ -345,7 +344,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
{
dz->ProcessRemoveAllMembers();
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_DzSetSecondsRemaining:
@ -383,7 +382,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
auto status = static_cast<DynamicZoneMemberStatus>(buf->status);
dz->ProcessMemberStatusChange(buf->character_id, status);
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_DzMovePC:
@ -392,7 +391,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
auto dz = DynamicZone::FindDynamicZoneByID(buf->dz_id);
if (dz && dz->HasMember(buf->character_id))
{
zoneserver_list.SendPacket(buf->sender_zone_id, buf->sender_instance_id, pack);
ZSList::Instance()->SendPacket(buf->sender_zone_id, buf->sender_instance_id, pack);
}
break;
}
@ -403,7 +402,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
{
dz->SetLocked(buf->lock);
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_DzReplayOnJoin:
@ -413,7 +412,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
{
dz->SetReplayOnJoin(buf->enabled);
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_DzLockout:
@ -424,7 +423,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
DzLockout lockout{ dz->GetUUID(), dz->GetName(), buf->event_name, buf->expire_time, buf->duration };
dz->HandleLockoutUpdate(lockout, buf->remove, buf->members_only);
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_DzLockoutDuration:
@ -435,7 +434,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
DzLockout lockout{ dz->GetUUID(), dz->GetName(), buf->event_name, buf->expire_time, buf->duration };
dz->HandleLockoutDuration(lockout, buf->seconds, buf->members_only, false);
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_DzCharacterLockout:

View File

@ -13,13 +13,12 @@
#include "ucs.h"
#include "queryserv.h"
extern ZSList zoneserver_list;
extern ClientList client_list;
extern WorldGuildManager guild_mgr;
void callGetZoneList(Json::Value &response)
{
for (auto &zone: zoneserver_list.getZoneServerList()) {
for (auto &zone: ZSList::Instance()->getZoneServerList()) {
Json::Value row;
if (!zone) {
@ -139,7 +138,7 @@ void getReloadTypes(Json::Value &response)
void getServerCounts(Json::Value &response, const std::vector<std::string> &args)
{
response["zone_count"] = zoneserver_list.GetServerListCount();
response["zone_count"] = ZSList::Instance()->GetServerListCount();
response["client_count"] = ClientList::Instance()->GetClientCount();
}
@ -165,7 +164,7 @@ void EQEmuApiWorldDataService::reload(Json::Value &r, const std::vector<std::str
if (std::to_string(t) == command || Strings::ToLower(ServerReload::GetName(t)) == command) {
message(r, fmt::format("Reloading [{}] globally", ServerReload::GetName(t)));
LogInfo("Queueing reload of type [{}] to zones", ServerReload::GetName(t));
zoneserver_list.QueueServerReload(t);
ZSList::Instance()->QueueServerReload(t);
}
found_command = true;
}

View File

@ -45,7 +45,6 @@
#include <algorithm>
extern ZSList zoneserver_list;
extern ClientList client_list;
extern uint32 numzones;
extern LauncherList launcher_list;
@ -107,7 +106,7 @@ bool EQW::LSConnected() {
}
int EQW::CountZones() {
return(zoneserver_list.GetZoneCount());
return(ZSList::Instance()->GetZoneCount());
}
//returns an array of zone_refs (opaque)
@ -115,7 +114,7 @@ std::vector<std::string> EQW::ListBootedZones() {
std::vector<std::string> res;
std::vector<uint32> zones;
zoneserver_list.GetZoneIDList(zones);
ZSList::Instance()->GetZoneIDList(zones);
std::vector<uint32>::iterator cur, end;
cur = zones.begin();
@ -130,7 +129,7 @@ std::vector<std::string> EQW::ListBootedZones() {
std::map<std::string,std::string> EQW::GetZoneDetails(Const_char *zone_ref) {
std::map<std::string,std::string> res;
ZoneServer *zs = zoneserver_list.FindByID(Strings::ToInt(zone_ref));
ZoneServer *zs = ZSList::Instance()->FindByID(Strings::ToInt(zone_ref));
if(zs == nullptr) {
res["error"] = "Invalid zone.";
return(res);
@ -360,7 +359,7 @@ void EQW::ResolveBug(const char *id) {
}
void EQW::SendMessage(uint32 type, const char *msg) {
zoneserver_list.SendEmoteMessage(
ZSList::Instance()->SendEmoteMessage(
0,
0,
AccountStatus::Player,
@ -370,7 +369,7 @@ void EQW::SendMessage(uint32 type, const char *msg) {
}
void EQW::WorldShutDown(uint32 time, uint32 interval) {
zoneserver_list.WorldShutDown(time, interval);
ZSList::Instance()->WorldShutDown(time, interval);
}
#endif //EMBPERL

View File

@ -26,7 +26,6 @@
#include "../common/classes.h"
extern ClientList client_list;
extern ZSList zoneserver_list;
GroupLFP::GroupLFP(uint32 inLeaderID) {
@ -270,7 +269,7 @@ void GroupLFPList::SendLFPMatches(ServerLFPMatchesRequest_Struct* smrs) {
CLE->Server()->SendPacket(Pack);
}
else {
ZoneServer* zs = zoneserver_list.FindByName(smrs->FromName);
ZoneServer* zs = ZSList::Instance()->FindByName(smrs->FromName);
if (zs != nullptr)
zs->SendPacket(Pack);
}

View File

@ -20,7 +20,6 @@
#include "cliententry.h"
#include "world_config.h"
extern ZSList zoneserver_list;
extern ClientList client_list;
extern uint32 numzones;
extern uint32 numplayers;
@ -312,7 +311,7 @@ void LoginServer::ProcessSystemwideMessage(uint16_t opcode, EQ::Net::Packet &p)
LogNetcode("Received ServerPacket from LS OpCode {:#04x}", opcode);
ServerSystemwideMessage *swm = (ServerSystemwideMessage *) p.Data();
zoneserver_list.SendEmoteMessageRaw(
ZSList::Instance()->SendEmoteMessageRaw(
0,
0,
AccountStatus::Player,
@ -376,7 +375,7 @@ bool LoginServer::Connect()
SendInfo();
SendStatus();
zoneserver_list.SendLSZones();
ZSList::Instance()->SendLSZones();
m_statusupdate_timer = std::make_unique<EQ::Timer>(
LoginServer_StatusUpdateInterval, true, [this](EQ::Timer *t) {
@ -485,7 +484,7 @@ bool LoginServer::Connect()
);
SendInfo();
SendStatus();
zoneserver_list.SendLSZones();
ZSList::Instance()->SendLSZones();
m_statusupdate_timer = std::make_unique<EQ::Timer>(
LoginServer_StatusUpdateInterval, true, [this](EQ::Timer *t) {

View File

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

View File

@ -93,7 +93,6 @@
ClientList client_list;
GroupLFPList LFPGroupList;
ZSList zoneserver_list;
LauncherList launcher_list;
volatile bool RunLoops = true;
uint32 numclients = 0;
@ -173,7 +172,7 @@ int main(int argc, char **argv)
// global loads
LogInfo("Loading launcher list");
launcher_list.LoadList();
zoneserver_list.Init();
ZSList::Instance()->Init();
if (IpUtil::IsPortInUse(Config->WorldIP, Config->WorldTCPPort)) {
LogError("World port [{}] already in use", Config->WorldTCPPort);
@ -207,7 +206,7 @@ int main(int argc, char **argv)
server_connection->OnConnectionIdentified(
"Zone", [&console](std::shared_ptr<EQ::Net::ServertalkServerConnection> connection) {
numzones++;
zoneserver_list.Add(new ZoneServer(connection, console.get()));
ZSList::Instance()->Add(new ZoneServer(connection, console.get()));
LogInfo(
"New Zone Server connection from [{}] at [{}:{}] zone_count [{}]",
@ -222,7 +221,7 @@ int main(int argc, char **argv)
server_connection->OnConnectionRemoved(
"Zone", [](std::shared_ptr<EQ::Net::ServertalkServerConnection> connection) {
numzones--;
zoneserver_list.Remove(connection->GetUUID());
ZSList::Instance()->Remove(connection->GetUUID());
LogInfo(
"Removed Zone Server connection from [{}] total zone_count [{}]",
@ -290,7 +289,7 @@ int main(int argc, char **argv)
UCSConnection::Instance()->SetConnection(connection);
zoneserver_list.UpdateUCSServerAvailable();
ZSList::Instance()->UpdateUCSServerAvailable();
}
);
@ -303,7 +302,7 @@ int main(int argc, char **argv)
if (ucs_connection->GetUUID() == connection->GetUUID()) {
LogInfo("Removing currently active UCS connection");
UCSConnection::Instance()->SetConnection(nullptr);
zoneserver_list.UpdateUCSServerAvailable(false);
ZSList::Instance()->UpdateUCSServerAvailable(false);
}
}
);
@ -346,10 +345,10 @@ int main(int argc, char **argv)
//register all the patches we have avaliable with the stream identifier.
EQStreamIdentifier stream_identifier;
RegisterAllPatches(stream_identifier);
zoneserver_list.shutdowntimer = new Timer(60000);
zoneserver_list.shutdowntimer->Disable();
zoneserver_list.reminder = new Timer(20000);
zoneserver_list.reminder->Disable();
ZSList::Instance()->shutdowntimer = new Timer(60000);
ZSList::Instance()->shutdowntimer->Disable();
ZSList::Instance()->reminder = new Timer(20000);
ZSList::Instance()->reminder->Disable();
Timer InterserverTimer(INTERSERVER_TIMER); // does MySQL pings and auto-reconnect
InterserverTimer.Trigger();
uint8 ReconnectCounter = 100;
@ -414,7 +413,7 @@ int main(int argc, char **argv)
}
}
WorldEventScheduler::Instance()->Process(&zoneserver_list);
WorldEventScheduler::Instance()->Process(ZSList::Instance());
client_list.Process();
guild_mgr.Process();
@ -427,7 +426,7 @@ int main(int argc, char **argv)
);
auto out = std::make_unique<ServerPacket>(ServerOP_ParcelPrune);
zoneserver_list.SendPacketToBootedZones(out.get());
ZSList::Instance()->SendPacketToBootedZones(out.get());
database.PurgeCharacterParcels();
}
@ -442,7 +441,7 @@ int main(int argc, char **argv)
if (EQTimeTimer.Check()) {
TimeOfDay_Struct tod{};
zoneserver_list.worldclock.GetCurrentEQTimeOfDay(time(nullptr), &tod);
ZSList::Instance()->worldclock.GetCurrentEQTimeOfDay(time(nullptr), &tod);
if (!database.SaveTime(tod.minute, tod.hour, tod.day, tod.month, tod.year)) {
LogEqTime("Failed to save eqtime");
}
@ -457,7 +456,7 @@ int main(int argc, char **argv)
}
}
zoneserver_list.Process();
ZSList::Instance()->Process();
launcher_list.Process();
LFPGroupList.Process();
AdventureManager::Instance()->Process();
@ -491,7 +490,7 @@ int main(int argc, char **argv)
LogInfo("World main loop completed");
LogInfo("Shutting down zone connections (if any)");
zoneserver_list.KillAll();
ZSList::Instance()->KillAll();
LogInfo("Zone (TCP) listener stopped");
LogInfo("Signaling HTTP service to stop");
EQEmuLogSys::Instance()->CloseFileLogs();

View File

@ -10,7 +10,6 @@
#include "../common/packet_dump.h"
extern ClientList client_list;
extern ZSList zoneserver_list;
QueryServConnection::QueryServConnection()
{
@ -36,12 +35,12 @@ void QueryServConnection::HandleGenericMessage(uint16_t opcode, EQ::Net::Packet
uint32 ZoneID = p.GetUInt32(0);
uint16 InstanceID = p.GetUInt32(4);
ServerPacket pack(opcode, p);
zoneserver_list.SendPacket(ZoneID, InstanceID, &pack);
ZSList::Instance()->SendPacket(ZoneID, InstanceID, &pack);
}
void QueryServConnection::HandleLFGuildUpdateMessage(uint16_t opcode, EQ::Net::Packet &p) {
ServerPacket pack(opcode, p);
zoneserver_list.SendPacket(&pack);
ZSList::Instance()->SendPacket(&pack);
}
bool QueryServConnection::SendPacket(ServerPacket* pack)

View File

@ -18,7 +18,6 @@
#include <ctime>
extern ClientList client_list;
extern ZSList zoneserver_list;
SharedTaskManager::SharedTaskManager()
: m_process_timer{ static_cast<uint32_t>(RuleI(TaskSystem, SharedTasksWorldProcessRate)) }

View File

@ -15,7 +15,6 @@
#include "dynamic_zone.h"
extern ClientList client_list;
extern ZSList zoneserver_list;
void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
{
@ -297,7 +296,7 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
0
);
zoneserver_list.SendPacket(p.get());
ZSList::Instance()->SendPacket(p.get());
break;
}

View File

@ -7,7 +7,6 @@
#include "launcher_list.h"
extern ClientList client_list;
extern ZSList zoneserver_list;
extern LauncherList launcher_list;
void EQW__GetConfig(WebInterface *i, const std::string& method, const std::string& id, const Json::Value& params) {
@ -58,7 +57,7 @@ void EQW__GetPlayerCount(WebInterface *i, const std::string& method, const std::
}
void EQW__GetZoneCount(WebInterface *i, const std::string& method, const std::string& id, const Json::Value& params) {
Json::Value ret = zoneserver_list.GetZoneCount();
Json::Value ret = ZSList::Instance()->GetZoneCount();
i->SendResponse(id, ret);
}

View File

@ -36,7 +36,6 @@
extern ClientList client_list;
extern ZSList zoneserver_list;
std::map<uint32, TributeData> tribute_list;
WorldGuildManager guild_mgr;
@ -50,7 +49,7 @@ void WorldGuildManager::SendGuildRefresh(uint32 guild_id, bool name, bool motd,
s->motd_change = motd;
s->rank_change = rank;
s->relation_change = relation;
zoneserver_list.SendPacketToZonesWithGuild(guild_id, pack);
ZSList::Instance()->SendPacketToZonesWithGuild(guild_id, pack);
safe_delete(pack);
}
@ -61,7 +60,7 @@ void WorldGuildManager::SendCharRefresh(uint32 old_guild_id, uint32 guild_id, ui
s->guild_id = guild_id;
s->old_guild_id = old_guild_id;
s->char_id = charid;
zoneserver_list.SendPacketToZonesWithGuild(guild_id, pack);
ZSList::Instance()->SendPacketToZonesWithGuild(guild_id, pack);
safe_delete(pack);
}
@ -70,7 +69,7 @@ void WorldGuildManager::SendGuildDelete(uint32 guild_id) {
auto pack = new ServerPacket(ServerOP_DeleteGuild, sizeof(ServerGuildID_Struct));
ServerGuildID_Struct *s = (ServerGuildID_Struct *) pack->pBuffer;
s->guild_id = guild_id;
zoneserver_list.SendPacketToZonesWithGuild(guild_id, pack);
ZSList::Instance()->SendPacketToZonesWithGuild(guild_id, pack);
safe_delete(pack);
}
@ -91,7 +90,7 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) {
}
//broadcast this packet to all zones.
zoneserver_list.SendPacketToBootedZones(pack);
ZSList::Instance()->SendPacketToBootedZones(pack);
break;
}
@ -107,7 +106,7 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) {
//broadcast this update to any zone with a member in this guild.
//because im sick of this not working, sending it to all zones, just spends a bit more bandwidth.
zoneserver_list.SendPacketToZonesWithGuild(s->guild_id, pack);
ZSList::Instance()->SendPacketToZonesWithGuild(s->guild_id, pack);
break;
}
@ -130,7 +129,7 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) {
LogGuilds("Received and broadcasting guild delete for guild [{}]", s->guild_id);
//broadcast this packet to all zones.
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
@ -146,7 +145,7 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) {
auto s = (ServerGuildID_Struct *)pack->pBuffer;
RefreshGuild(s->guild_id);
zoneserver_list.SendPacketToZonesWithGuild(s->guild_id, pack);
ZSList::Instance()->SendPacketToZonesWithGuild(s->guild_id, pack);
break;
}
case ServerOP_GuildPermissionUpdate:
@ -178,7 +177,7 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) {
sg->function_value
);
zoneserver_list.SendPacketToZonesWithGuild(sg->guild_id, pack);
ZSList::Instance()->SendPacketToZonesWithGuild(sg->guild_id, pack);
}
else {
LogError("World Received ServerOP_GuildPermissionUpdate for guild [{}] function id {} with value of {} but guild could not be found.",
@ -212,7 +211,7 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) {
rnc->rank,
rnc->rank_name
);
zoneserver_list.SendPacketToZonesWithGuild(rnc->guild_id, pack);
ZSList::Instance()->SendPacketToZonesWithGuild(rnc->guild_id, pack);
}
else {
LogError("World Received ServerOP_GuildRankNameChange from zone for guild [{}] rank id {} with new name of {} but could not find guild.",
@ -232,7 +231,7 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) {
case ServerOP_GuildMembersList:
{
auto in = (ServerOP_GuildMessage_Struct *) pack->pBuffer;
zoneserver_list.SendPacketToZonesWithGuild(in->guild_id, pack);
ZSList::Instance()->SendPacketToZonesWithGuild(in->guild_id, pack);
break;
}
case ServerOP_GuildMemberAdd:
@ -243,12 +242,12 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) {
BaseGuildManager::RefreshGuild(in->guild_id);
}
zoneserver_list.SendPacketToZonesWithGuild(in->guild_id, pack);
ZSList::Instance()->SendPacketToZonesWithGuild(in->guild_id, pack);
break;
}
case ServerOP_GuildSendGuildList: {
auto in = (ServerOP_GuildMessage_Struct *) pack->pBuffer;
zoneserver_list.SendPacketToBootedZones(pack);
ZSList::Instance()->SendPacketToBootedZones(pack);
break;
}
@ -456,6 +455,6 @@ void WorldGuildManager::SendGuildTributeFavorAndTimer(uint32 guild_id, uint32 fa
data->tribute_timer = time;
data->trophy_timer = 0;
zoneserver_list.SendPacketToZonesWithGuild(guild_id, sp);
ZSList::Instance()->SendPacketToZonesWithGuild(guild_id, sp);
safe_delete(sp)
}

View File

@ -29,7 +29,6 @@
#include "../common/database/database_update.h"
#include "../common/repositories/zone_state_spawns_repository.h"
extern ZSList zoneserver_list;
extern WorldConfig Config;
auto mutex = new Mutex;
@ -53,7 +52,7 @@ void WorldBoot::GMSayHookCallBackProcessWorld(uint16 log_category, const char *f
auto message_split = Strings::Split(message, '\n');
for (size_t iter = 0; iter < message_split.size(); ++iter) {
zoneserver_list.SendEmoteMessage(
ZSList::Instance()->SendEmoteMessage(
0,
0,
AccountStatus::QuestTroupe,
@ -69,7 +68,7 @@ void WorldBoot::GMSayHookCallBackProcessWorld(uint16 log_category, const char *f
return;
}
zoneserver_list.SendEmoteMessage(
ZSList::Instance()->SendEmoteMessage(
0,
0,
AccountStatus::QuestTroupe,
@ -351,7 +350,7 @@ bool WorldBoot::DatabaseLoadRoutines(int argc, char **argv)
TimeOfDay_Struct eqTime{};
time_t realtime;
eqTime = database.LoadTime(realtime);
zoneserver_list.worldclock.SetCurrentEQTimeOfDay(eqTime, realtime);
ZSList::Instance()->worldclock.SetCurrentEQTimeOfDay(eqTime, realtime);
LogInfo("Deleted [{}] stale player corpses from database", database.DeleteStalePlayerCorpses());

View File

@ -79,6 +79,13 @@ public:
std::vector<ServerReload::Type> m_queued_reloads = {};
void QueueServerReload(ServerReload::Type &type);
static ZSList* Instance()
{
static ZSList instance;
return &instance;
}
private:
void OnTick(EQ::Timer *t);
uint32 NextID;

View File

@ -54,7 +54,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 volatile bool RunLoops;
extern volatile bool UCSServerAvailable_;
@ -69,7 +68,7 @@ ZoneServer::ZoneServer(std::shared_ptr<EQ::Net::ServertalkServerConnection> in_c
memset(client_address, 0, sizeof(client_address));
memset(client_local_address, 0, sizeof(client_local_address));
zone_server_id = zoneserver_list.GetNextID();
zone_server_id = ZSList::Instance()->GetNextID();
zone_server_zone_id = 0;
instance_id = 0;
zone_os_process_id = 0;
@ -242,7 +241,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_GroupJoin: {
@ -250,7 +249,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_ForceGroupUpdate: {
@ -258,7 +257,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_DisbandGroup: {
@ -266,7 +265,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_RaidAdd: {
@ -274,7 +273,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_RaidRemove: {
@ -282,7 +281,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_RaidDisband: {
@ -290,7 +289,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_RaidLockFlag: {
@ -298,7 +297,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_RaidChangeGroup: {
@ -306,7 +305,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_UpdateGroup: {
@ -314,7 +313,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_RaidGroupDisband: {
@ -322,7 +321,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_RaidGroupAdd: {
@ -330,7 +329,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_RaidGroupRemove: {
@ -338,7 +337,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_RaidGroupLeader: {
@ -346,7 +345,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_RaidLeader: {
@ -354,7 +353,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_PlayerEvent: {
@ -386,7 +385,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_RaidMOTD: {
@ -394,7 +393,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_RaidNote: {
@ -402,7 +401,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_SpawnCondition: {
@ -411,7 +410,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
auto ssc = (ServerSpawnCondition_Struct*) pack->pBuffer;
zoneserver_list.SendPacket(ssc->zoneID, ssc->instanceID, pack);
ZSList::Instance()->SendPacket(ssc->zoneID, ssc->instanceID, pack);
break;
}
case ServerOP_SpawnEvent: {
@ -420,7 +419,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
auto sse = (ServerSpawnEvent_Struct*) pack->pBuffer;
zoneserver_list.SendPacket(sse->zoneID, 0, pack);
ZSList::Instance()->SendPacket(sse->zoneID, 0, pack);
break;
}
case ServerOP_ChannelMessage: {
@ -456,7 +455,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
) &&
!scm->noreply
) {
zoneserver_list.SendEmoteMessage(
ZSList::Instance()->SendEmoteMessage(
scm->from,
0,
AccountStatus::Player,
@ -530,7 +529,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
} else if (!cle->Server()) {
if (!scm->noreply)
zoneserver_list.SendEmoteMessage(
ZSList::Instance()->SendEmoteMessage(
scm->from,
0,
AccountStatus::Player,
@ -568,11 +567,11 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
}
if (scm->guilddbid > 0) {
zoneserver_list.SendPacketToZonesWithGuild(scm->guilddbid, pack);
ZSList::Instance()->SendPacketToZonesWithGuild(scm->guilddbid, pack);
} else if (scm->chan_num == ChatChannel_GMSAY) {
zoneserver_list.SendPacketToZonesWithGMs(pack);
ZSList::Instance()->SendPacketToZonesWithGMs(pack);
} else {
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
}
}
@ -580,7 +579,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
case ServerOP_EmoteMessage: {
auto sem = (ServerEmoteMessage_Struct*) pack->pBuffer;
zoneserver_list.SendEmoteMessageRaw(
ZSList::Instance()->SendEmoteMessageRaw(
sem->to,
sem->guilddbid,
sem->minstatus,
@ -598,7 +597,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
cle->Online() < CLE_Status::Zoning ||
!cle->Server()
) {
zoneserver_list.SendEmoteMessage(
ZSList::Instance()->SendEmoteMessage(
svm->From,
0,
AccountStatus::Player,
@ -612,14 +611,14 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
cle->Server()->SendPacket(pack);
} else {
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
}
break;
}
case ServerOP_RezzPlayer: {
auto rps = (RezzPlayer_Struct*) pack->pBuffer;
if (zoneserver_list.SendPacket(pack)) {
if (ZSList::Instance()->SendPacket(pack)) {
LogInfo("Sent Rez packet for [{}]", rps->rez.your_name);
} else {
LogInfo("Could not send Rez packet for [{}]", rps->rez.your_name);
@ -663,7 +662,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
auto sci = (ServerConnectInfo*) pack->pBuffer;
if (!sci->port) {
client_port = zoneserver_list.GetAvailableZonePort();
client_port = ZSList::Instance()->GetAvailableZonePort();
ServerPacket p(ServerOP_SetConnectInfo, sizeof(ServerConnectInfo));
memset(p.pBuffer, 0, sizeof(ServerConnectInfo));
@ -705,20 +704,20 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
case ServerOP_ShutdownAll: {
if (!pack->size) {
zoneserver_list.SendPacket(pack);
zoneserver_list.Process();
ZSList::Instance()->SendPacket(pack);
ZSList::Instance()->Process();
CatchSignal(2);
} else {
auto wsd = (WorldShutDown_Struct*) pack->pBuffer;
if (!wsd->time && !wsd->interval && zoneserver_list.shutdowntimer->Enabled()) {
zoneserver_list.shutdowntimer->Disable();
zoneserver_list.reminder->Disable();
if (!wsd->time && !wsd->interval && ZSList::Instance()->shutdowntimer->Enabled()) {
ZSList::Instance()->shutdowntimer->Disable();
ZSList::Instance()->reminder->Disable();
} else {
zoneserver_list.shutdowntimer->SetTimer(wsd->time);
zoneserver_list.reminder->SetTimer(wsd->interval - 1000);
zoneserver_list.reminder->SetAtTrigger(wsd->interval);
zoneserver_list.shutdowntimer->Start();
zoneserver_list.reminder->Start();
ZSList::Instance()->shutdowntimer->SetTimer(wsd->time);
ZSList::Instance()->reminder->SetTimer(wsd->interval - 1000);
ZSList::Instance()->reminder->SetAtTrigger(wsd->interval);
ZSList::Instance()->shutdowntimer->Start();
ZSList::Instance()->reminder->Start();
}
}
@ -728,13 +727,13 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
auto *s = (ServerZoneStateChange_Struct*) pack->pBuffer;
ZoneServer* zs = 0;
if (s->zone_server_id) {
zs = zoneserver_list.FindByID(s->zone_server_id);
zs = ZSList::Instance()->FindByID(s->zone_server_id);
} else if (s->zone_id) {
zs = zoneserver_list.FindByName(ZoneName(s->zone_id));
zs = ZSList::Instance()->FindByName(ZoneName(s->zone_id));
} else if (s->instance_id) {
zs = zoneserver_list.FindByInstanceID(s->instance_id);
zs = ZSList::Instance()->FindByInstanceID(s->instance_id);
} else {
zoneserver_list.SendEmoteMessage(
ZSList::Instance()->SendEmoteMessage(
s->admin_name,
0,
AccountStatus::Player,
@ -744,7 +743,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
if (!zs) {
zoneserver_list.SendEmoteMessage(
ZSList::Instance()->SendEmoteMessage(
s->admin_name,
0,
AccountStatus::Player,
@ -759,13 +758,13 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
case ServerOP_ZoneBootup: {
auto *s = (ServerZoneStateChange_Struct*) pack->pBuffer;
zoneserver_list.SOPZoneBootup(s->admin_name, s->zone_server_id, ZoneName(s->zone_id), s->is_static);
ZSList::Instance()->SOPZoneBootup(s->admin_name, s->zone_server_id, ZoneName(s->zone_id), s->is_static);
break;
}
case ServerOP_ZoneStatus: {
if (pack->size >= 1) {
auto z = (ServerZoneStatus_Struct*) pack->pBuffer;
zoneserver_list.SendZoneStatus(z->name, z->admin, this);
ZSList::Instance()->SendZoneStatus(z->name, z->admin, this);
}
break;
@ -829,7 +828,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
if (
ztz->admin < AccountStatus::QuestTroupe &&
ztz->ignorerestrictions < 2 &&
zoneserver_list.IsZoneLocked(ztz->requested_zone_id)
ZSList::Instance()->IsZoneLocked(ztz->requested_zone_id)
) {
ztz->response = 0;
@ -846,8 +845,8 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
auto ingress_server = (
ztz->requested_instance_id ?
zoneserver_list.FindByInstanceID(ztz->requested_instance_id) :
zoneserver_list.FindByZoneID(ztz->requested_zone_id)
ZSList::Instance()->FindByInstanceID(ztz->requested_instance_id) :
ZSList::Instance()->FindByZoneID(ztz->requested_zone_id)
);
if (ingress_server) {
@ -861,7 +860,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
ztz->response = 1;
} else {
int server_id;
if ((server_id = zoneserver_list.TriggerBootup(ztz->requested_zone_id, ztz->requested_instance_id))) {
if ((server_id = ZSList::Instance()->TriggerBootup(ztz->requested_zone_id, ztz->requested_instance_id))) {
LogZoning(
"ZoneToZone successfully booted a zone for character [{}] zone [{}] ({}) instance [{}] ({})",
ztz->name,
@ -871,7 +870,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
server_id
);
ztz->response = 1;
ingress_server = zoneserver_list.FindByID(server_id);
ingress_server = ZSList::Instance()->FindByID(server_id);
} else {
LogError("failed to boot a zone for [{}]", ztz->name);
ztz->response = 0;
@ -895,8 +894,8 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
);
auto egress_server = (
ztz->current_instance_id ?
zoneserver_list.FindByInstanceID(ztz->current_instance_id) :
zoneserver_list.FindByZoneID(ztz->current_zone_id)
ZSList::Instance()->FindByInstanceID(ztz->current_instance_id) :
ZSList::Instance()->FindByZoneID(ztz->current_zone_id)
);
if (egress_server) {
@ -1006,7 +1005,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
cle->SetAdmin(*((int16*)&pack->pBuffer[4]));
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_GMGoto: {
@ -1106,7 +1105,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
auto smotd = (ServerMotd_Struct*) pack->pBuffer;
RuleManager::Instance()->SetRule("MOTD", smotd->motd, &database, true, true);
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_Uptime: {
@ -1119,7 +1118,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
if (!sus->zoneserverid) {
ZSList::ShowUpTime(this, sus->adminname);
} else {
auto zs = zoneserver_list.FindByID(sus->zoneserverid);
auto zs = ZSList::Instance()->FindByID(sus->zoneserverid);
if (zs) {
zs->SendPacket(pack);
}
@ -1136,8 +1135,8 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
pack->pBuffer = new uchar[pack->size];
memset(pack->pBuffer, 0, pack->size);
auto tod = (eqTimeOfDay*) pack->pBuffer;
tod->start_eqtime = zoneserver_list.worldclock.getStartEQTime();
tod->start_realtime = zoneserver_list.worldclock.getStartRealTime();
tod->start_eqtime = ZSList::Instance()->worldclock.getStartEQTime();
tod->start_realtime = ZSList::Instance()->worldclock.getStartRealTime();
SendPacket(pack);
safe_delete(pack);
break;
@ -1145,10 +1144,10 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
case ServerOP_SetWorldTime: {
LogNetcode("Received SetWorldTime");
auto newtime = (eqTimeOfDay*) pack->pBuffer;
zoneserver_list.worldclock.SetCurrentEQTimeOfDay(newtime->start_eqtime, newtime->start_realtime);
ZSList::Instance()->worldclock.SetCurrentEQTimeOfDay(newtime->start_eqtime, newtime->start_realtime);
LogInfo("New time = [{}]-[{}]-[{}] [{}]:[{}] ([{}])\n", newtime->start_eqtime.year, newtime->start_eqtime.month, (int)newtime->start_eqtime.day, (int)newtime->start_eqtime.hour, (int)newtime->start_eqtime.minute, (int)newtime->start_realtime);
database.SaveTime((int)newtime->start_eqtime.minute, (int)newtime->start_eqtime.hour, (int)newtime->start_eqtime.day, newtime->start_eqtime.month, newtime->start_eqtime.year);
zoneserver_list.SendTimeSync();
ZSList::Instance()->SendTimeSync();
break;
}
case ServerOP_IPLookup: {
@ -1174,14 +1173,14 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
auto lock_zone = (ServerLockZone_Struct*) pack->pBuffer;
if (lock_zone->op == ServerLockType::List) {
zoneserver_list.ListLockedZones(lock_zone->adminname, this);
ZSList::Instance()->ListLockedZones(lock_zone->adminname, this);
break;
} else if (
lock_zone->op == ServerLockType::Lock ||
lock_zone->op == ServerLockType::Unlock
) {
if (zoneserver_list.SetLockedZone(lock_zone->zoneID, lock_zone->op == ServerLockType::Lock)) {
zoneserver_list.SendEmoteMessage(
if (ZSList::Instance()->SetLockedZone(lock_zone->zoneID, lock_zone->op == ServerLockType::Lock)) {
ZSList::Instance()->SendEmoteMessage(
0,
0,
AccountStatus::QuestTroupe,
@ -1225,7 +1224,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
case ServerOP_SpawnPlayerCorpse: {
auto s = (SpawnPlayerCorpse_Struct*) pack->pBuffer;
auto zs = zoneserver_list.FindByZoneID(s->zone_id);
auto zs = ZSList::Instance()->FindByZoneID(s->zone_id);
if (zs) {
zs->SendPacket(pack);
}
@ -1237,8 +1236,8 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
auto owner_zs = (
s->instance_id ?
zoneserver_list.FindByInstanceID(s->instance_id) :
zoneserver_list.FindByZoneID(s->zone_id)
ZSList::Instance()->FindByInstanceID(s->instance_id) :
ZSList::Instance()->FindByZoneID(s->zone_id)
);
if (owner_zs) {
@ -1252,8 +1251,8 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
if (cle) {
auto granted_zs = (
cle->instance() ?
zoneserver_list.FindByInstanceID(cle->instance()) :
zoneserver_list.FindByZoneID(cle->zone())
ZSList::Instance()->FindByInstanceID(cle->instance()) :
ZSList::Instance()->FindByZoneID(cle->zone())
);
if (granted_zs && granted_zs != owner_zs) {
@ -1266,7 +1265,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
case ServerOP_InstanceUpdateTime: {
auto iut = (ServerInstanceUpdateTime_Struct*) pack->pBuffer;
auto zm = zoneserver_list.FindByInstanceID(iut->instance_id);
auto zm = ZSList::Instance()->FindByInstanceID(iut->instance_id);
if (zm) {
zm->SendPacket(pack);
}
@ -1278,7 +1277,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_QGlobalDelete: {
@ -1286,7 +1285,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_AdventureRequest: {
@ -1344,7 +1343,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
case ServerOP_UCSServerStatusRequest: {
auto ucsss = (UCSServerStatus_Struct*) pack->pBuffer;
auto zs = zoneserver_list.FindByPort(ucsss->port);
auto zs = ZSList::Instance()->FindByPort(ucsss->port);
if (!zs) {
break;
}
@ -1398,12 +1397,12 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
case ServerOP_WWSpell:
case ServerOP_WWTaskUpdate:
case ServerOP_ZonePlayer: {
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_ServerReloadRequest: {
auto o = (ServerReload::Request*) pack->pBuffer;
zoneserver_list.SendServerReload((ServerReload::Type) o->type, pack->pBuffer);
ZSList::Instance()->SendServerReload((ServerReload::Type) o->type, pack->pBuffer);
break;
}
case ServerOP_IsOwnerOnline: {
@ -1425,7 +1424,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
);
}
auto zs = zoneserver_list.FindByZoneID(o->zone_id);
auto zs = ZSList::Instance()->FindByZoneID(o->zone_id);
if (zs) {
zs->SendPacket(pack);
}
@ -1439,7 +1438,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
LogInfo("Error: Could not load item data. But ignoring");
}
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
break;
}
case ServerOP_RequestTellQueue: {
@ -1514,7 +1513,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
guild->tribute.timer.Disable();
zoneserver_list.SendPacketToZonesWithGuild(data->guild_id, pack);
ZSList::Instance()->SendPacketToZonesWithGuild(data->guild_id, pack);
}
break;
}
@ -1557,7 +1556,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
guild_mgr.UpdateDbGuildFavor(data->guild_id, data->favor);
guild_mgr.UpdateDbTributeTimeRemaining(data->guild_id, data->time_remaining);
zoneserver_list.SendPacketToZonesWithGuild(data->guild_id, pack);
ZSList::Instance()->SendPacketToZonesWithGuild(data->guild_id, pack);
}
break;
}
@ -1591,7 +1590,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
data->time_remaining = in->time_remaining;
strn0cpy(data->player_name, in->player_name, sizeof(data->player_name));
zoneserver_list.SendPacketToZonesWithGuild(in->guild_id, out);
ZSList::Instance()->SendPacketToZonesWithGuild(in->guild_id, out);
safe_delete(out);
}
break;
@ -1614,7 +1613,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
out->tribute_id_2_tier = guild->tribute.id_2_tier;
out->time_remaining = guild_mgr.GetGuildTributeTimeRemaining(in->guild_id);
zoneserver_list.SendPacketToZonesWithGuild(in->guild_id, sp);
ZSList::Instance()->SendPacketToZonesWithGuild(in->guild_id, sp);
safe_delete(sp);
}
@ -1634,7 +1633,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
out->tribute_timer = guild_mgr.GetGuildTributeTimeRemaining(in->guild_id);
out->trophy_timer = 0;
zoneserver_list.SendPacketToZonesWithGuild(in->guild_id, sp);
ZSList::Instance()->SendPacketToZonesWithGuild(in->guild_id, sp);
safe_delete(sp);
}
@ -1658,7 +1657,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
out->member_time = in->member_time;
strn0cpy(out->player_name, in->player_name, sizeof(out->player_name));
zoneserver_list.SendPacketToZonesWithGuild(out->guild_id, sp);
ZSList::Instance()->SendPacketToZonesWithGuild(out->guild_id, sp);
safe_delete(sp)
}
break;
@ -1672,7 +1671,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
return;
}
zoneserver_list.SendPacketToBootedZones(pack);
ZSList::Instance()->SendPacketToBootedZones(pack);
break;
}
case ServerOP_BazaarPurchase: {
@ -1688,7 +1687,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
auto trader = client_list.FindCLEByCharacterID(in->trader_buy_struct.trader_id);
if (trader) {
zoneserver_list.SendPacket(trader->zone(), trader->instance(), pack);
ZSList::Instance()->SendPacket(trader->zone(), trader->instance(), pack);
}
break;
@ -1706,13 +1705,13 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
return;
}
zoneserver_list.SendPacketToBootedZones(pack);
ZSList::Instance()->SendPacketToBootedZones(pack);
break;
}
case Barter_SellItem: {
auto buyer = client_list.FindCharacter(in->buyer_name);
if (buyer) {
zoneserver_list.SendPacket(buyer->zone(), buyer->instance(), pack);
ZSList::Instance()->SendPacket(buyer->zone(), buyer->instance(), pack);
}
break;
@ -1721,7 +1720,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
case Barter_BuyerTransactionComplete: {
auto seller = client_list.FindCharacter(in->seller_name);
if (seller) {
zoneserver_list.SendPacket(seller->zone(), seller->instance(), pack);
ZSList::Instance()->SendPacket(seller->zone(), seller->instance(), pack);
}
break;
@ -1789,7 +1788,7 @@ void ZoneServer::SendEmoteMessageRaw(const char* to, uint32 to_guilddbid, int16
void ZoneServer::SendGroupIDs() {
auto pack = new ServerPacket(ServerOP_GroupIDReply, sizeof(ServerGroupIDReply_Struct));
auto sgi = (ServerGroupIDReply_Struct*) pack->pBuffer;
zoneserver_list.NextGroupIDs(sgi->start, sgi->end);
ZSList::Instance()->NextGroupIDs(sgi->start, sgi->end);
SendPacket(pack);
delete pack;
}
@ -1806,7 +1805,7 @@ void ZoneServer::ChangeWID(uint32 iCharID, uint32 iWID) {
auto scw = (ServerChangeWID_Struct*) pack->pBuffer;
scw->charid = iCharID;
scw->newwid = iWID;
zoneserver_list.SendPacket(pack);
ZSList::Instance()->SendPacket(pack);
delete pack;
}