mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 21:01:29 +00:00
[API] World API Optimizations (#4850)
This commit is contained in:
parent
d1fd40cd85
commit
cc30c72538
@ -1608,7 +1608,7 @@ void ClientList::OnTick(EQ::Timer *t)
|
|||||||
/**
|
/**
|
||||||
* @param response
|
* @param response
|
||||||
*/
|
*/
|
||||||
void ClientList::GetClientList(Json::Value &response)
|
void ClientList::GetClientList(Json::Value &response, bool full_list)
|
||||||
{
|
{
|
||||||
LinkedListIterator<ClientListEntry *> Iterator(clientlist);
|
LinkedListIterator<ClientListEntry *> Iterator(clientlist);
|
||||||
|
|
||||||
@ -1619,62 +1619,68 @@ void ClientList::GetClientList(Json::Value &response)
|
|||||||
|
|
||||||
Json::Value row;
|
Json::Value row;
|
||||||
|
|
||||||
row["account_id"] = cle->AccountID();
|
row["id"] = cle->GetID();
|
||||||
row["account_name"] = cle->AccountName();
|
row["name"] = cle->name();
|
||||||
row["admin"] = cle->Admin();
|
row["level"] = cle->level();
|
||||||
row["id"] = cle->GetID();
|
row["ip"] = cle->GetIP();
|
||||||
row["ip"] = cle->GetIP();
|
row["gm"] = cle->GetGM();
|
||||||
row["loginserver_account_id"] = cle->LSAccountID();
|
row["race"] = cle->race();
|
||||||
row["loginserver_id"] = cle->LSID();
|
row["class"] = cle->class_();
|
||||||
row["loginserver_name"] = cle->LSName();
|
row["client_version"] = cle->GetClientVersion();
|
||||||
row["online"] = cle->Online();
|
row["admin"] = cle->Admin();
|
||||||
row["world_admin"] = cle->WorldAdmin();
|
row["account_id"] = cle->AccountID();
|
||||||
|
row["account_name"] = cle->AccountName();
|
||||||
|
row["character_id"] = cle->CharID();
|
||||||
|
row["anon"] = cle->Anon();
|
||||||
|
row["guild_id"] = cle->GuildID();
|
||||||
|
|
||||||
|
if (full_list) {
|
||||||
|
row["loginserver_account_id"] = cle->LSAccountID();
|
||||||
|
row["loginserver_id"] = cle->LSID();
|
||||||
|
row["loginserver_name"] = cle->LSName();
|
||||||
|
row["online"] = cle->Online();
|
||||||
|
row["world_admin"] = cle->WorldAdmin();
|
||||||
|
row["guild_rank"] = cle->GuildRank();
|
||||||
|
row["guild_tribute_opt_in"] = cle->GuildTributeOptIn();
|
||||||
|
row["instance"] = cle->instance();
|
||||||
|
row["is_local_client"] = cle->IsLocalClient();
|
||||||
|
row["lfg"] = cle->LFG();
|
||||||
|
row["lfg_comments"] = cle->GetLFGComments();
|
||||||
|
row["lfg_from_level"] = cle->GetLFGFromLevel();
|
||||||
|
row["lfg_match_filter"] = cle->GetLFGMatchFilter();
|
||||||
|
row["lfg_to_level"] = cle->GetLFGToLevel();
|
||||||
|
row["tells_off"] = cle->TellsOff();
|
||||||
|
row["zone"] = cle->zone();
|
||||||
|
}
|
||||||
|
|
||||||
auto server = cle->Server();
|
auto server = cle->Server();
|
||||||
if (server) {
|
if (server) {
|
||||||
row["server"]["client_address"] = server->GetCAddress();
|
row["server"]["zone_id"] = server->GetZoneID();
|
||||||
row["server"]["client_local_address"] = server->GetCLocalAddress();
|
row["server"]["zone_long_name"] = server->GetZoneLongName();
|
||||||
row["server"]["client_port"] = server->GetCPort();
|
row["server"]["zone_name"] = server->GetZoneName();
|
||||||
row["server"]["compile_time"] = server->GetCompileTime();
|
row["server"]["zone_os_pid"] = server->GetZoneOSProcessID();
|
||||||
row["server"]["id"] = server->GetID();
|
row["server"]["id"] = server->GetID();
|
||||||
row["server"]["instance_id"] = server->GetInstanceID();
|
|
||||||
row["server"]["ip"] = server->GetIP();
|
if (full_list) {
|
||||||
row["server"]["is_booting"] = server->IsBootingUp();
|
row["server"]["client_address"] = server->GetCAddress();
|
||||||
row["server"]["launch_name"] = server->GetLaunchName();
|
row["server"]["client_local_address"] = server->GetCLocalAddress();
|
||||||
row["server"]["launched_name"] = server->GetLaunchedName();
|
row["server"]["client_port"] = server->GetCPort();
|
||||||
row["server"]["number_players"] = server->NumPlayers();
|
row["server"]["compile_time"] = server->GetCompileTime();
|
||||||
row["server"]["port"] = server->GetPort();
|
row["server"]["instance_id"] = server->GetInstanceID();
|
||||||
row["server"]["previous_zone_id"] = server->GetPrevZoneID();
|
row["server"]["ip"] = server->GetIP();
|
||||||
row["server"]["static_zone"] = server->IsStaticZone();
|
row["server"]["is_booting"] = server->IsBootingUp();
|
||||||
row["server"]["uui"] = server->GetUUID();
|
row["server"]["launch_name"] = server->GetLaunchName();
|
||||||
row["server"]["zone_id"] = server->GetZoneID();
|
row["server"]["launched_name"] = server->GetLaunchedName();
|
||||||
row["server"]["zone_long_name"] = server->GetZoneLongName();
|
row["server"]["number_players"] = server->NumPlayers();
|
||||||
row["server"]["zone_name"] = server->GetZoneName();
|
row["server"]["port"] = server->GetPort();
|
||||||
row["server"]["zone_os_pid"] = server->GetZoneOSProcessID();
|
row["server"]["previous_zone_id"] = server->GetPrevZoneID();
|
||||||
|
row["server"]["static_zone"] = server->IsStaticZone();
|
||||||
|
row["server"]["uui"] = server->GetUUID();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
row["server"] = Json::Value();
|
row["server"] = Json::Value();
|
||||||
}
|
}
|
||||||
row["anon"] = cle->Anon();
|
|
||||||
row["character_id"] = cle->CharID();
|
|
||||||
row["class"] = cle->class_();
|
|
||||||
row["client_version"] = cle->GetClientVersion();
|
|
||||||
row["gm"] = cle->GetGM();
|
|
||||||
row["guild_id"] = cle->GuildID();
|
|
||||||
row["guild_rank"] = cle->GuildRank();
|
|
||||||
row["guild_tribute_opt_in"] = cle->GuildTributeOptIn();
|
|
||||||
row["instance"] = cle->instance();
|
|
||||||
row["is_local_client"] = cle->IsLocalClient();
|
|
||||||
row["level"] = cle->level();
|
|
||||||
row["lfg"] = cle->LFG();
|
|
||||||
row["lfg_comments"] = cle->GetLFGComments();
|
|
||||||
row["lfg_from_level"] = cle->GetLFGFromLevel();
|
|
||||||
row["lfg_match_filter"] = cle->GetLFGMatchFilter();
|
|
||||||
row["lfg_to_level"] = cle->GetLFGToLevel();
|
|
||||||
row["name"] = cle->name();
|
|
||||||
row["race"] = cle->race();
|
|
||||||
row["tells_off"] = cle->TellsOff();
|
|
||||||
row["zone"] = cle->zone();
|
|
||||||
|
|
||||||
response.append(row);
|
response.append(row);
|
||||||
|
|
||||||
|
|||||||
@ -68,7 +68,7 @@ public:
|
|||||||
int GetClientCount();
|
int GetClientCount();
|
||||||
void GetClients(const char *zone_name, std::vector<ClientListEntry *> &into);
|
void GetClients(const char *zone_name, std::vector<ClientListEntry *> &into);
|
||||||
|
|
||||||
void GetClientList(Json::Value &response);
|
void GetClientList(Json::Value &response, bool full_list = false);
|
||||||
void GetGuildClientList(Json::Value& response, uint32 guild_id);
|
void GetGuildClientList(Json::Value& response, uint32 guild_id);
|
||||||
|
|
||||||
void SendCharacterMessage(uint32_t character_id, int chat_type, const std::string& message);
|
void SendCharacterMessage(uint32_t character_id, int chat_type, const std::string& message);
|
||||||
|
|||||||
@ -111,9 +111,17 @@ void callGetDatabaseSchema(Json::Value &response)
|
|||||||
response.append(schema);
|
response.append(schema);
|
||||||
}
|
}
|
||||||
|
|
||||||
void callGetClientList(Json::Value &response)
|
void callGetClientList(Json::Value &response, const std::vector<std::string> &args)
|
||||||
{
|
{
|
||||||
client_list.GetClientList(response);
|
// if args has "full"
|
||||||
|
bool full_list = false;
|
||||||
|
if (args.size() > 1) {
|
||||||
|
if (args[1] == "full") {
|
||||||
|
full_list = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
client_list.GetClientList(response, full_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
void getReloadTypes(Json::Value &response)
|
void getReloadTypes(Json::Value &response)
|
||||||
@ -127,6 +135,12 @@ void getReloadTypes(Json::Value &response)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void getServerCounts(Json::Value &response, const std::vector<std::string> &args)
|
||||||
|
{
|
||||||
|
response["zone_count"] = zoneserver_list.GetServerListCount();
|
||||||
|
response["client_count"] = client_list.GetClientCount();
|
||||||
|
}
|
||||||
|
|
||||||
void EQEmuApiWorldDataService::reload(Json::Value &r, const std::vector<std::string> &args)
|
void EQEmuApiWorldDataService::reload(Json::Value &r, const std::vector<std::string> &args)
|
||||||
{
|
{
|
||||||
std::vector<std::string> commands{};
|
std::vector<std::string> commands{};
|
||||||
@ -174,7 +188,7 @@ void EQEmuApiWorldDataService::get(Json::Value &r, const std::vector<std::string
|
|||||||
callGetDatabaseSchema(r);
|
callGetDatabaseSchema(r);
|
||||||
}
|
}
|
||||||
if (m == "get_client_list") {
|
if (m == "get_client_list") {
|
||||||
callGetClientList(r);
|
callGetClientList(r, args);
|
||||||
}
|
}
|
||||||
if (m == "get_reload_types") {
|
if (m == "get_reload_types") {
|
||||||
getReloadTypes(r);
|
getReloadTypes(r);
|
||||||
@ -185,6 +199,9 @@ void EQEmuApiWorldDataService::get(Json::Value &r, const std::vector<std::string
|
|||||||
if (m == "get_guild_details") {
|
if (m == "get_guild_details") {
|
||||||
callGetGuildDetails(r, args);
|
callGetGuildDetails(r, args);
|
||||||
}
|
}
|
||||||
|
if (m == "get_server_counts") {
|
||||||
|
getServerCounts(r, args);
|
||||||
|
}
|
||||||
if (m == "lock_status") {
|
if (m == "lock_status") {
|
||||||
r["locked"] = WorldConfig::get()->Locked;
|
r["locked"] = WorldConfig::get()->Locked;
|
||||||
}
|
}
|
||||||
@ -192,7 +209,6 @@ void EQEmuApiWorldDataService::get(Json::Value &r, const std::vector<std::string
|
|||||||
|
|
||||||
void EQEmuApiWorldDataService::callGetGuildDetails(Json::Value &response, const std::vector<std::string> &args)
|
void EQEmuApiWorldDataService::callGetGuildDetails(Json::Value &response, const std::vector<std::string> &args)
|
||||||
{
|
{
|
||||||
|
|
||||||
std::string command = !args[1].empty() ? args[1] : "";
|
std::string command = !args[1].empty() ? args[1] : "";
|
||||||
if (command.empty()) {
|
if (command.empty()) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -72,6 +72,7 @@ public:
|
|||||||
ZoneServer* FindByZoneID(uint32 ZoneID);
|
ZoneServer* FindByZoneID(uint32 ZoneID);
|
||||||
|
|
||||||
const std::list<std::unique_ptr<ZoneServer>> &getZoneServerList() const;
|
const std::list<std::unique_ptr<ZoneServer>> &getZoneServerList() const;
|
||||||
|
inline uint32_t GetServerListCount() { return zone_server_list.size(); }
|
||||||
void SendServerReload(ServerReload::Type type, uchar *packet = nullptr);
|
void SendServerReload(ServerReload::Type type, uchar *packet = nullptr);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user