# File: `PeerManager.h` ## Classes - `Client` - `HealthCheck` - `GroupOptions` - `GroupMemberInfo` - `WhoAllPeerPlayer` - `GuildMember` - `ZoneChangeDetails` - `Peer` - `PeerManager` ## Functions - `void updateStatus(HealthStatus newStatus);` - `std::chrono::duration timeSinceLastCheck() const;` - `: zone_tree(std::make_shared()),` - `: id(std::move(peerId)), peeringStatus(status), worldAddr(std::move(client_address)),` - `std::string getZoneDataAsJson() const {` - `std::lock_guard lock(dataMutex);` - `std::string getClientDataAsJson() const {` - `std::lock_guard lock(dataMutex);` - `void addPeer(std::string id, PeeringStatus status, std::string client_address, std::string client_internal_address, int16 client_port, std::string web_address, int16 web_port);` - `void updateHealth(const std::string& id, HealthStatus newStatus);` - `void updatePriority(const std::string& id, int16 priority);` - `void updateZoneTree(const std::string& id, const boost::property_tree::ptree& newTree);` - `void updateClientTree(const std::string& id, const boost::property_tree::ptree& newTree);` - `bool IsClientConnectedPeer(int32 account_id);` - `std::string GetCharacterPeerId(std::string charName);` - `void SendPeersChannelMessage(int32 group_id, std::string fromName, std::string message, int16 channel, int32 language_id = 0);` - `void SendPeersGuildChannelMessage(int32 guild_id, std::string fromName, std::string message, int16 channel, int32 language_id = 0);` - `void sendZonePeerList(Client* client);` - `std::string getZonePeerId(const std::string& inc_zone_name, int32 inc_zone_id, int32 inc_instance_id, ZoneChangeDetails* opt_details = nullptr, bool only_always_loaded = false, int32 matchDuplicatedId = 0);` - `int32 getZoneHighestDuplicateId(const std::string& inc_zone_name, int32 inc_zone_id, bool increment_new_value = true);` - `void setZonePeerData(ZoneChangeDetails* opt_details);` - `void setPrimary(const std::string& id);` - `bool hasPrimary();` - `bool hasPriorityPeer(int16 priority);` - `std::string getPriorityPeer();` - `void updatePeer(const std::string& web_address, int16 web_port, const std::string& client_address, const std::string& client_internal_address, int16 client_port, bool is_primary = false);` - `std::string isPeer(const std::string& web_address, int16 web_port);` - `HealthStatus getPeerStatus(const std::string& web_address, int16 web_port);` - `bool hasPeers();` - `std::string assignUniqueNameForSecondary(const std::string& baseName, std::string client_address, std::string client_internal_address, int16 client_port, std::string web_address, int16 web_port);` - `std::optional getHealthyPeer() const;` - `std::shared_ptr getHealthyPeerPtr() const;` - `std::shared_ptr getHealthyPrimaryPeerPtr() const;` - `std::shared_ptr getHealthyPeerWithLeastClients() const;` - `std::shared_ptr getPeerById(const std::string& id) const;` - `int32 getUniqueGroupId();` - `bool sendPrimaryNewGroupRequest(std::string leader, std::string member, int32 entity_id, GroupOptions* options);` - `void sendPeersGroupMember(int32 group_id, GroupMemberInfo* info, bool is_update = false, std::string peerId = "");` - `void sendPeersRemoveGroupMember(int32 group_id, std::string name, int32 char_id, bool is_client);` - `void populateGroupOptions(boost::property_tree::ptree& root, GroupOptions* options);` - `void sendPeersDisbandGroup(int32 group_id);` - `bool sendPrimaryCreateGuildRequest(std::string guild_name, std::string leader_name, bool prompted_dialog = false, int32 spawnID = 0);` - `void sendPeersAddGuildMember(int32 character_id, int32 guild_id, std::string invited_by, int32 join_timestamp, int8 rank);` - `void sendPeersRemoveGuildMember(int32 character_id, int32 guild_id, std::string removed_by);` - `void sendPeersCreateGuild(int32 guild_id);` - `void sendPeersGuildPermission(int32 guild_id, int8 rank, int8 permission, int8 value_);` - `void sendPeersGuildEventFilter(int32 guild_id, int8 event_id, int8 category, int8 value_);` - `void SetPeerErrorState(std::string address, std::string port);` - `void handlePrimaryConflict(const std::string& reconnectingPeerId);` - `std::shared_ptr getCurrentPrimary();` - `void sendPeersMessage(const std::string& endpoint, int32 command, int32 sub_command = 0);` - `void sendZonePlayerList(std::vector* queries, std::vector* peer_list, bool isGM);` - `bool GetClientGuildDetails(int32 matchCharID, GuildMember* member_details);` ## Notable Comments - /* - */ - // Default constructor - // Example function to output data as JSON string (for debug or logging) - // Example function to output data as JSON string (for debug or logging)