AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
AddonMgr Namespace Reference

Namespaces

namespace  anonymous_namespace{AddonMgr.cpp}
 

Typedefs

typedef std::list< BannedAddonBannedAddonList
 

Functions

void LoadFromDB ()
 
void SaveAddon (AddonInfo const &addon)
 
SavedAddon const * GetAddonInfo (const std::string &name)
 
BannedAddonList const * GetBannedAddons ()
 

Typedef Documentation

◆ BannedAddonList

Function Documentation

◆ GetAddonInfo()

SavedAddon const * AddonMgr::GetAddonInfo ( const std::string &  name)
110 {
111 for (auto const& addon : m_knownAddons)
112 {
113 if (addon.Name == name)
114 {
115 return &addon;
116 }
117 }
118
119 return nullptr;
120 }

Referenced by WorldSession::ReadAddonsInfo().

◆ GetBannedAddons()

BannedAddonList const * AddonMgr::GetBannedAddons ( )
123 {
124 return &m_bannedAddons;
125 }

Referenced by WorldSession::SendAddonsInfo().

◆ LoadFromDB()

void AddonMgr::LoadFromDB ( )
39 {
40 uint32 oldMSTime = getMSTime();
41
42 QueryResult result = CharacterDatabase.Query("SELECT name, crc FROM addons");
43 if (!result)
44 {
45 LOG_WARN("server.loading", ">> Loaded 0 known addons. DB table `addons` is empty!");
46 LOG_INFO("server.loading", " ");
47 return;
48 }
49
50 uint32 count = 0;
51
52 do
53 {
54 Field* fields = result->Fetch();
55
56 std::string name = fields[0].Get<std::string>();
57 uint32 crc = fields[1].Get<uint32>();
58
59 m_knownAddons.push_back(SavedAddon(name, crc));
60
61 ++count;
62 } while (result->NextRow());
63
64 LOG_INFO("server.loading", ">> Loaded {} known addons in {} ms", count, GetMSTimeDiffToNow(oldMSTime));
65 LOG_INFO("server.loading", " ");
66
67 oldMSTime = getMSTime();
68 result = CharacterDatabase.Query("SELECT id, name, version, UNIX_TIMESTAMP(timestamp) FROM banned_addons");
69
70 if (result)
71 {
72 uint32 count2 = 0;
73 uint32 offset = 102;
74
75 do
76 {
77 Field* fields = result->Fetch();
78
79 BannedAddon addon{};
80 addon.Id = fields[0].Get<uint32>() + offset;
81 addon.Timestamp = uint32(fields[3].Get<uint64>());
82 addon.NameMD5 = Acore::Crypto::MD5::GetDigestOf(fields[1].Get<std::string>());
83 addon.VersionMD5 = Acore::Crypto::MD5::GetDigestOf(fields[2].Get<std::string>());
84
85 m_bannedAddons.emplace_back(addon);
86
87 ++count2;
88 } while (result->NextRow());
89
90 LOG_INFO("server.loading", ">> Loaded {} banned addons in {} ms", count2, GetMSTimeDiffToNow(oldMSTime));
91 LOG_INFO("server.loading", " ");
92 }
93 }
std::uint32_t uint32
Definition: Define.h:108
#define LOG_INFO(filterType__,...)
Definition: Log.h:165
#define LOG_WARN(filterType__,...)
Definition: Log.h:161
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Definition: Timer.h:131
uint32 getMSTime()
Definition: Timer.h:103
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition: DatabaseEnv.cpp:21
std::shared_ptr< ResultSet > QueryResult
Definition: DatabaseEnvFwd.h:28
BannedAddonList m_bannedAddons
Definition: AddonMgr.cpp:35
static Digest GetDigestOf(uint8 const *data, size_t len)
Definition: CryptoHash.h:53
Class used to access individual fields of database query result.
Definition: Field.h:99
std::enable_if_t< std::is_arithmetic_v< T >, T > Get() const
Definition: Field.h:113
Definition: AddonMgr.h:40
Definition: AddonMgr.h:51
uint32 Id
Definition: AddonMgr.h:52

References CharacterDatabase, Field::Get(), Acore::Impl::GenericHash< HashCreator, DigestLength >::GetDigestOf(), getMSTime(), GetMSTimeDiffToNow(), BannedAddon::Id, LOG_INFO, and LOG_WARN.

Referenced by World::SetInitialWorldSettings().

◆ SaveAddon()

void AddonMgr::SaveAddon ( AddonInfo const &  addon)
96 {
97 std::string name = addon.Name;
98
100
101 stmt->SetData(0, name);
102 stmt->SetData(1, addon.CRC);
103
104 CharacterDatabase.Execute(stmt);
105
106 m_knownAddons.push_back(SavedAddon(addon.Name, addon.CRC));
107 }
@ CHAR_INS_ADDON
Definition: CharacterDatabase.h:299
Definition: PreparedStatement.h:158
Acore::Types::is_default< T > SetData(const uint8 index, T value)
Definition: PreparedStatement.h:78

References CHAR_INS_ADDON, CharacterDatabase, AddonInfo::CRC, AddonInfo::Name, and PreparedStatementBase::SetData().

Referenced by WorldSession::ReadAddonsInfo().