AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
WorldGlobals Class Reference

#include "WorldGlobals.h"

Public Member Functions

void LoadAntiDosOpcodePolicies ()
 
AntiDosOpcodePolicy const * GetAntiDosPolicyForOpcode (uint16 opcode)
 

Static Public Member Functions

static WorldGlobalsinstance ()
 

Private Attributes

std::array< std::unique_ptr< AntiDosOpcodePolicy >, NUM_OPCODE_HANDLERS_antiDosOpcodePolicies
 

Detailed Description

Member Function Documentation

◆ GetAntiDosPolicyForOpcode()

AntiDosOpcodePolicy const * WorldGlobals::GetAntiDosPolicyForOpcode ( uint16  opcode)
71{
72 if (opcode >= NUM_OPCODE_HANDLERS)
73 return nullptr;
74
75 return _antiDosOpcodePolicies[opcode].get();
76}
std::array< std::unique_ptr< AntiDosOpcodePolicy >, NUM_OPCODE_HANDLERS > _antiDosOpcodePolicies
Definition WorldGlobals.h:39
@ NUM_OPCODE_HANDLERS
Definition Opcodes.h:1346

References _antiDosOpcodePolicies, and NUM_OPCODE_HANDLERS.

◆ instance()

WorldGlobals * WorldGlobals::instance ( )
static
25{
27 return &instance;
28}
Definition WorldGlobals.h:31
static WorldGlobals * instance()
Definition WorldGlobals.cpp:24

References instance().

Referenced by instance().

◆ LoadAntiDosOpcodePolicies()

void WorldGlobals::LoadAntiDosOpcodePolicies ( )
31{
32 uint32 oldMSTime = getMSTime();
33
35
36 QueryResult result = WorldDatabase.Query("SELECT Opcode, Policy, MaxAllowedCount FROM antidos_opcode_policies");
37 if (!result)
38 {
39 LOG_WARN("server.loading", ">> Loaded 0 AntiDos Opcode Policies. DB table `antidos_opcode_policies` is empty!");
40 LOG_INFO("server.loading", " ");
41 return;
42 }
43
44 uint32 count = 0;
45
46 do
47 {
48 Field* fields = result->Fetch();
49
50 uint16 opcode = fields[0].Get<uint16>();
51 if (opcode >= NUM_OPCODE_HANDLERS)
52 {
53 LOG_ERROR("server.loading", "Unkown opcode {} in table `antidos_opcode_policies`, skipping.", opcode);
54 continue;
55 }
56
57 std::unique_ptr<AntiDosOpcodePolicy> policy = std::make_unique<AntiDosOpcodePolicy>();
58 policy->Policy = fields[1].Get<uint8>();
59 policy->MaxAllowedCount = fields[2].Get<uint16>();
60
61 _antiDosOpcodePolicies[opcode] = std::move(policy);
62
63 ++count;
64 } while (result->NextRow());
65
66 LOG_INFO("server.loading", ">> Loaded {} AntiDos Opcode Policies in {} ms", count, GetMSTimeDiffToNow(oldMSTime));
67 LOG_INFO("server.loading", " ");
68}
std::shared_ptr< ResultSet > QueryResult
Definition DatabaseEnvFwd.h:27
DatabaseWorkerPool< WorldDatabaseConnection > WorldDatabase
Accessor to the world database.
Definition DatabaseEnv.cpp:20
std::uint8_t uint8
Definition Define.h:109
std::uint32_t uint32
Definition Define.h:107
std::uint16_t uint16
Definition Define.h:108
#define LOG_INFO(filterType__,...)
Definition Log.h:165
#define LOG_ERROR(filterType__,...)
Definition Log.h:157
#define LOG_WARN(filterType__,...)
Definition Log.h:161
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Definition Timer.h:131
uint32 getMSTime()
Definition Timer.h:103
Class used to access individual fields of database query result.
Definition Field.h:98
std::enable_if_t< std::is_arithmetic_v< T >, T > Get() const
Definition Field.h:112

References _antiDosOpcodePolicies, Field::Get(), getMSTime(), GetMSTimeDiffToNow(), LOG_ERROR, LOG_INFO, LOG_WARN, NUM_OPCODE_HANDLERS, and WorldDatabase.

Member Data Documentation

◆ _antiDosOpcodePolicies

std::array<std::unique_ptr<AntiDosOpcodePolicy>, NUM_OPCODE_HANDLERS> WorldGlobals::_antiDosOpcodePolicies
private

The documentation for this class was generated from the following files: