![]() |
AzerothCore 3.3.5a
OpenSource WoW Emulator
|
#include "WorldSessionMgr.h"
Public Types | |
typedef std::unordered_map< uint32, WorldSession * > | SessionMap |
Public Member Functions | |
WorldSessionMgr () | |
~WorldSessionMgr () | |
WorldSession * | FindSession (uint32 id) const |
Find a session by its id. | |
WorldSession * | FindOfflineSession (uint32 id) const |
WorldSession * | FindOfflineSessionForCharacterGUID (ObjectGuid::LowType guidLow) const |
void | UpdateSessions (uint32 const diff) |
bool | KickSession (uint32 id) |
Remove a given session. | |
void | KickAll () |
Kick (and save) all players. | |
void | KickAllLess (AccountTypes sec) |
Kick (and save) all players with security level less sec | |
void | AddSession (WorldSession *session) |
void | AddQueuedPlayer (WorldSession *session) |
bool | RemoveQueuedPlayer (WorldSession *session) |
int32 | GetQueuePos (WorldSession *session) |
bool | HasRecentlyDisconnected (WorldSession *session) |
SessionMap const & | GetAllSessions () const |
void | UpdateMaxSessionCounters () |
Get the number of current active sessions. | |
uint32 | GetActiveAndQueuedSessionCount () const |
uint32 | GetActiveSessionCount () const |
uint32 | GetQueuedSessionCount () const |
uint32 | GetMaxQueuedSessionCount () const |
Get the maximum number of parallel sessions on the server since last reboot. | |
uint32 | GetMaxActiveSessionCount () const |
uint32 | GetPlayerCount () const |
Get number of players. | |
uint32 | GetMaxPlayerCount () const |
void | SetPlayerAmountLimit (uint32 limit) |
Active session server limit. | |
uint32 | GetPlayerAmountLimit () const |
void | IncreasePlayerCount () |
Increase/Decrease number of players. | |
void | DecreasePlayerCount () |
void | SendGlobalMessage (WorldPacket const *packet, WorldSession *self=nullptr, TeamId teamId=TEAM_NEUTRAL) |
Send a packet to all players (except self if mentioned) | |
void | SendGlobalGMMessage (WorldPacket const *packet, WorldSession *self=nullptr, TeamId teamId=TEAM_NEUTRAL) |
Send a packet to all GMs (except self if mentioned) | |
bool | SendZoneMessage (uint32 zone, WorldPacket const *packet, WorldSession *self=nullptr, TeamId teamId=TEAM_NEUTRAL) |
Send a packet to all players (or players selected team) in the zone (except self if mentioned) | |
void | SendZoneText (uint32 zone, std::string text, WorldSession *self=nullptr, TeamId teamId=TEAM_NEUTRAL) |
Send a System Message to all players in the zone (except self if mentioned) | |
void | SendServerMessage (ServerMessageType messageID, std::string stringParam="", Player *player=nullptr) |
Send a server message to the user(s) | |
void | DoForAllOnlinePlayers (std::function< void(Player *)> exec) |
Static Public Member Functions | |
static WorldSessionMgr * | Instance () |
Private Types | |
typedef std::unordered_map< uint32, time_t > | DisconnectMap |
typedef std::list< WorldSession * > | Queue |
Private Member Functions | |
void | AddSession_ (WorldSession *session) |
|
private |
|
private |
typedef std::unordered_map<uint32, WorldSession*> WorldSessionMgr::SessionMap |
WorldSessionMgr::WorldSessionMgr | ( | ) |
References _maxActiveSessionCount, _maxPlayerCount, _maxQueuedSessionCount, _playerCount, and _playerLimit.
WorldSessionMgr::~WorldSessionMgr | ( | ) |
References _offlineSessions, and _sessions.
void WorldSessionMgr::AddQueuedPlayer | ( | WorldSession * | session | ) |
References _queuedPlayer, AUTH_WAIT_QUEUE, GetQueuePos(), WorldSession::SendAuthResponse(), and WorldSession::SetInQueue().
Referenced by AddSession_().
void WorldSessionMgr::AddSession | ( | WorldSession * | session | ) |
References _addSessQueue, and LockedQueue< T, StorageType >::add().
|
private |
References _disconnects, _offlineSessions, _sessions, AddQueuedPlayer(), ASSERT, WorldSession::CanSkipQueue(), CONFIG_INTERVAL_DISCONNECT_TOLERANCE, WorldSession::GetAccountId(), GetActiveAndQueuedSessionCount(), GameTime::GetGameTime(), GetPlayerAmountLimit(), WorldSession::GetSecurity(), WorldSession::HandleSocketClosed(), HasRecentlyDisconnected(), WorldSession::InitializeSession(), AccountMgr::IsPlayerAccount(), WorldSession::KickPlayer(), KickSession(), RemoveQueuedPlayer(), WorldSession::SetOfflineTime(), sWorld, and UpdateMaxSessionCounters().
Referenced by UpdateSessions().
|
inline |
References _playerCount.
void WorldSessionMgr::DoForAllOnlinePlayers | ( | std::function< void(Player *)> | exec | ) |
References ObjectAccessor::GetPlayers().
WorldSession * WorldSessionMgr::FindOfflineSession | ( | uint32 | id | ) | const |
References _offlineSessions.
WorldSession * WorldSessionMgr::FindOfflineSessionForCharacterGUID | ( | ObjectGuid::LowType | guidLow | ) | const |
References _offlineSessions.
WorldSession * WorldSessionMgr::FindSession | ( | uint32 | id | ) | const |
|
inline |
|
inline |
|
inline |
|
inline |
References _maxActiveSessionCount.
|
inline |
References _maxPlayerCount.
|
inline |
Get the maximum number of parallel sessions on the server since last reboot.
References _maxQueuedSessionCount.
|
inline |
|
inline |
|
inline |
References _queuedPlayer.
int32 WorldSessionMgr::GetQueuePos | ( | WorldSession * | session | ) |
References _queuedPlayer.
Referenced by AddQueuedPlayer().
bool WorldSessionMgr::HasRecentlyDisconnected | ( | WorldSession * | session | ) |
References _disconnects, CONFIG_INTERVAL_DISCONNECT_TOLERANCE, WorldSession::GetAccountId(), GameTime::GetGameTime(), and sWorld.
Referenced by AddSession_().
|
inline |
Increase/Decrease number of players.
References _maxPlayerCount, and _playerCount.
|
static |
void WorldSessionMgr::KickAll | ( | ) |
Kick (and save) all players.
References _offlineSessions, _queuedPlayer, and _sessions.
void WorldSessionMgr::KickAllLess | ( | AccountTypes | sec | ) |
Kick (and save) all players with security level less sec
References _sessions.
bool WorldSessionMgr::KickSession | ( | uint32 | id | ) |
Remove a given session.
References _sessions, and WorldSession::KickPlayer().
Referenced by AddSession_().
bool WorldSessionMgr::RemoveQueuedPlayer | ( | WorldSession * | session | ) |
References _queuedPlayer, ASSERT, GetActiveSessionCount(), GetPlayerAmountLimit(), WorldSession::InitializeSession(), WorldSession::ResetTimeOutTime(), and WorldSession::SetInQueue().
Referenced by AddSession_(), and UpdateSessions().
void WorldSessionMgr::SendGlobalGMMessage | ( | WorldPacket const * | packet, |
WorldSession * | self = nullptr , |
||
TeamId | teamId = TEAM_NEUTRAL |
||
) |
Send a packet to all GMs (except self if mentioned)
References _sessions, AccountMgr::IsPlayerAccount(), and TEAM_NEUTRAL.
void WorldSessionMgr::SendGlobalMessage | ( | WorldPacket const * | packet, |
WorldSession * | self = nullptr , |
||
TeamId | teamId = TEAM_NEUTRAL |
||
) |
Send a packet to all players (except self if mentioned)
References _sessions, and TEAM_NEUTRAL.
Referenced by SendServerMessage().
void WorldSessionMgr::SendServerMessage | ( | ServerMessageType | messageID, |
std::string | stringParam = "" , |
||
Player * | player = nullptr |
||
) |
Send a server message to the user(s)
References WorldPackets::Chat::ChatServerMessage::MessageID, Player::SendDirectMessage(), SendGlobalMessage(), SERVER_MSG_STRING, WorldPackets::Chat::ChatServerMessage::StringParam, and WorldPackets::Chat::ChatServerMessage::Write().
bool WorldSessionMgr::SendZoneMessage | ( | uint32 | zone, |
WorldPacket const * | packet, | ||
WorldSession * | self = nullptr , |
||
TeamId | teamId = TEAM_NEUTRAL |
||
) |
Send a packet to all players (or players selected team) in the zone (except self if mentioned)
References _sessions, and TEAM_NEUTRAL.
Referenced by SendZoneText().
void WorldSessionMgr::SendZoneText | ( | uint32 | zone, |
std::string | text, | ||
WorldSession * | self = nullptr , |
||
TeamId | teamId = TEAM_NEUTRAL |
||
) |
Send a System Message to all players in the zone (except self if mentioned)
References ChatHandler::BuildChatPacket(), CHAT_MSG_SYSTEM, LANG_UNIVERSAL, and SendZoneMessage().
|
inline |
void WorldSessionMgr::UpdateMaxSessionCounters | ( | ) |
Get the number of current active sessions.
References _maxActiveSessionCount, _maxQueuedSessionCount, _queuedPlayer, and _sessions.
Referenced by AddSession_().
void WorldSessionMgr::UpdateSessions | ( | uint32 const | diff | ) |
References _addSessQueue, _disconnects, _offlineSessions, _sessions, AddSession_(), CONFIG_INTERVAL_DISCONNECT_TOLERANCE, WorldSession::GetAccountId(), GameTime::GetGameTime(), WorldSession::GetOfflineTime(), WorldSession::GetPlayer(), WorldSession::HandleSocketClosed(), WorldSession::IsKicked(), METRIC_DETAILED_NO_THRESHOLD_TIMER, METRIC_DETAILED_TIMER, METRIC_TAG, LockedQueue< T, StorageType >::next(), RemoveQueuedPlayer(), WorldSession::SetOfflineTime(), sWorld, and WorldSession::Update().
|
private |
Referenced by AddSession(), and UpdateSessions().
|
private |
Referenced by AddSession_(), HasRecentlyDisconnected(), and UpdateSessions().
|
private |
Referenced by GetMaxActiveSessionCount(), UpdateMaxSessionCounters(), and WorldSessionMgr().
|
private |
Referenced by GetMaxPlayerCount(), IncreasePlayerCount(), and WorldSessionMgr().
|
private |
Referenced by GetMaxQueuedSessionCount(), UpdateMaxSessionCounters(), and WorldSessionMgr().
|
private |
Referenced by AddSession_(), FindOfflineSession(), FindOfflineSessionForCharacterGUID(), KickAll(), UpdateSessions(), and ~WorldSessionMgr().
|
private |
Referenced by DecreasePlayerCount(), GetPlayerCount(), IncreasePlayerCount(), and WorldSessionMgr().
|
private |
Referenced by GetPlayerAmountLimit(), SetPlayerAmountLimit(), and WorldSessionMgr().
|
private |
|
private |