Undo Queryserv refactoring because our database class stuff is stupid

This commit is contained in:
Akkadius 2015-01-20 05:30:19 -06:00
parent 7f2f6a8612
commit a64c21eb96
5 changed files with 72 additions and 38 deletions

View File

@ -48,7 +48,7 @@
#include "../common/string_util.h"
#include "../common/servertalk.h"
QSDatabase::QSDatabase ()
Database::Database ()
{
DBInitVars();
}
@ -57,13 +57,13 @@ QSDatabase::QSDatabase ()
Establish a connection to a mysql database with the supplied parameters
*/
QSDatabase::QSDatabase(const char* host, const char* user, const char* passwd, const char* database, uint32 port)
Database::Database(const char* host, const char* user, const char* passwd, const char* database, uint32 port)
{
DBInitVars();
Connect(host, user, passwd, database, port);
}
bool QSDatabase::Connect(const char* host, const char* user, const char* passwd, const char* database, uint32 port)
bool Database::Connect(const char* host, const char* user, const char* passwd, const char* database, uint32 port)
{
uint32 errnum= 0;
char errbuf[MYSQL_ERRMSG_SIZE];
@ -81,24 +81,24 @@ bool QSDatabase::Connect(const char* host, const char* user, const char* passwd,
}
}
void QSDatabase::DBInitVars() {
void Database::DBInitVars() {
}
void QSDatabase::HandleMysqlError(uint32 errnum) {
void Database::HandleMysqlError(uint32 errnum) {
}
/*
Close the connection to the database
*/
QSDatabase::~QSDatabase()
Database::~Database()
{
}
void QSDatabase::AddSpeech(const char* from, const char* to, const char* message, uint16 minstatus, uint32 guilddbid, uint8 type) {
void Database::AddSpeech(const char* from, const char* to, const char* message, uint16 minstatus, uint32 guilddbid, uint8 type) {
char *escapedFrom = new char[strlen(from) * 2 + 1];
char *escapedTo = new char[strlen(to) * 2 + 1];
@ -123,7 +123,7 @@ void QSDatabase::AddSpeech(const char* from, const char* to, const char* message
}
void QSDatabase::LogPlayerTrade(QSPlayerLogTrade_Struct* QS, uint32 detailCount) {
void Database::LogPlayerTrade(QSPlayerLogTrade_Struct* QS, uint32 detailCount) {
std::string query = StringFormat("INSERT INTO `qs_player_trade_record` SET `time` = NOW(), "
"`char1_id` = '%i', `char1_pp` = '%i', `char1_gp` = '%i', "
@ -164,7 +164,7 @@ void QSDatabase::LogPlayerTrade(QSPlayerLogTrade_Struct* QS, uint32 detailCount)
}
void QSDatabase::LogPlayerHandin(QSPlayerLogHandin_Struct* QS, uint32 detailCount) {
void Database::LogPlayerHandin(QSPlayerLogHandin_Struct* QS, uint32 detailCount) {
std::string query = StringFormat("INSERT INTO `qs_player_handin_record` SET `time` = NOW(), "
"`quest_id` = '%i', `char_id` = '%i', `char_pp` = '%i', "
@ -205,7 +205,7 @@ void QSDatabase::LogPlayerHandin(QSPlayerLogHandin_Struct* QS, uint32 detailCoun
}
void QSDatabase::LogPlayerNPCKill(QSPlayerLogNPCKill_Struct* QS, uint32 members){
void Database::LogPlayerNPCKill(QSPlayerLogNPCKill_Struct* QS, uint32 members){
std::string query = StringFormat("INSERT INTO `qs_player_npc_kill_record` "
"SET `npc_id` = '%i', `type` = '%i', "
@ -236,7 +236,7 @@ void QSDatabase::LogPlayerNPCKill(QSPlayerLogNPCKill_Struct* QS, uint32 members)
}
void QSDatabase::LogPlayerDelete(QSPlayerLogDelete_Struct* QS, uint32 items) {
void Database::LogPlayerDelete(QSPlayerLogDelete_Struct* QS, uint32 items) {
std::string query = StringFormat("INSERT INTO `qs_player_delete_record` SET `time` = NOW(), "
"`char_id` = '%i', `stack_size` = '%i', `char_items` = '%i'",
@ -269,7 +269,7 @@ void QSDatabase::LogPlayerDelete(QSPlayerLogDelete_Struct* QS, uint32 items) {
}
void QSDatabase::LogPlayerMove(QSPlayerLogMove_Struct* QS, uint32 items) {
void Database::LogPlayerMove(QSPlayerLogMove_Struct* QS, uint32 items) {
/* These are item moves */
std::string query = StringFormat("INSERT INTO `qs_player_move_record` SET `time` = NOW(), "
@ -305,7 +305,7 @@ void QSDatabase::LogPlayerMove(QSPlayerLogMove_Struct* QS, uint32 items) {
}
void QSDatabase::LogMerchantTransaction(QSMerchantLogTransaction_Struct* QS, uint32 items) {
void Database::LogMerchantTransaction(QSMerchantLogTransaction_Struct* QS, uint32 items) {
/* Merchant transactions are from the perspective of the merchant, not the player -U */
std::string query = StringFormat("INSERT INTO `qs_merchant_transaction_record` SET `time` = NOW(), "
"`zone_id` = '%i', `merchant_id` = '%i', `merchant_pp` = '%i', "
@ -346,7 +346,7 @@ void QSDatabase::LogMerchantTransaction(QSMerchantLogTransaction_Struct* QS, uin
}
void QSDatabase::GeneralQueryReceive(ServerPacket *pack) {
void Database::GeneralQueryReceive(ServerPacket *pack) {
/*
These are general queries passed from anywhere in zone instead of packing structures and breaking them down again and again
*/
@ -363,3 +363,35 @@ void QSDatabase::GeneralQueryReceive(ServerPacket *pack) {
safe_delete(pack);
safe_delete(queryBuffer);
}
void Database::LoadLogSysSettings(EQEmuLogSys::LogSettings* log_settings){
std::string query =
"SELECT "
"log_category_id, "
"log_category_description, "
"log_to_console, "
"log_to_file, "
"log_to_gmsay "
"FROM "
"logsys_categories "
"ORDER BY log_category_id";
auto results = QueryDatabase(query);
int log_category = 0;
Log.file_logs_enabled = false;
for (auto row = results.begin(); row != results.end(); ++row) {
log_category = atoi(row[0]);
log_settings[log_category].log_to_console = atoi(row[2]);
log_settings[log_category].log_to_file = atoi(row[3]);
log_settings[log_category].log_to_gmsay = atoi(row[4]);
/*
This determines whether or not the process needs to actually file log anything.
If we go through this whole loop and nothing is set to any debug level, there is no point to create a file or keep anything open
*/
if (log_settings[log_category].log_to_file > 0){
Log.file_logs_enabled = true;
}
}
}

View File

@ -23,6 +23,7 @@
#define AUTHENTICATION_TIMEOUT 60
#define INVALID_ID 0xFFFFFFFF
#include "../common/eqemu_logsys.h"
#include "../common/global_define.h"
#include "../common/types.h"
#include "../common/dbcore.h"
@ -35,12 +36,12 @@
//atoi is not uint32 or uint32 safe!!!!
#define atoul(str) strtoul(str, nullptr, 10)
class QSDatabase : public DBcore {
class Database : public DBcore {
public:
QSDatabase();
QSDatabase(const char* host, const char* user, const char* passwd, const char* database,uint32 port);
Database();
Database(const char* host, const char* user, const char* passwd, const char* database,uint32 port);
bool Connect(const char* host, const char* user, const char* passwd, const char* database,uint32 port);
~QSDatabase();
~Database();
void AddSpeech(const char* from, const char* to, const char* message, uint16 minstatus, uint32 guilddbid, uint8 type);
void LogPlayerTrade(QSPlayerLogTrade_Struct* QS, uint32 DetailCount);
@ -50,6 +51,9 @@ public:
void LogPlayerMove(QSPlayerLogMove_Struct* QS, uint32 Items);
void LogMerchantTransaction(QSMerchantLogTransaction_Struct* QS, uint32 Items);
void GeneralQueryReceive(ServerPacket *pack);
void LoadLogSysSettings(EQEmuLogSys::LogSettings* log_settings);
protected:
void HandleMysqlError(uint32 errnum);
private:

View File

@ -8,7 +8,7 @@
#include "../common/rulesys.h"
extern WorldServer *worldserver;
extern QSDatabase qs_database;
extern Database database;
PlayerLookingForGuild::PlayerLookingForGuild(char *Name, char *Comments, uint32 Level, uint32 Class, uint32 AACount, uint32 Timezone, uint32 TimePosted)
{
@ -38,7 +38,7 @@ bool LFGuildManager::LoadDatabase()
std::string query = "SELECT `type`,`name`,`comment`, "
"`fromlevel`, `tolevel`, `classes`, "
"`aacount`, `timezone`, `timeposted` FROM `lfguild`";
auto results = qs_database.QueryDatabase(query);
auto results = database.QueryDatabase(query);
if (!results.Success()) {
return false;
}
@ -239,7 +239,7 @@ void LFGuildManager::TogglePlayer(uint32 FromZoneID, uint32 FromInstanceID, char
}
std::string query = StringFormat("DELETE FROM `lfguild` WHERE `type` = 0 AND `name` = '%s'", From);
auto results = qs_database.QueryDatabase(query);
auto results = database.QueryDatabase(query);
uint32 Now = time(nullptr);
@ -252,7 +252,7 @@ void LFGuildManager::TogglePlayer(uint32 FromZoneID, uint32 FromInstanceID, char
"`classes`, `aacount`, `timezone`, `timeposted`) "
"VALUES (0, '%s', '%s', %u, 0, %u, %u, %u, %u)",
From, Comments, Level, Class, AAPoints, TimeZone, Now);
auto results = qs_database.QueryDatabase(query);
auto results = database.QueryDatabase(query);
}
ServerPacket *pack = new ServerPacket(ServerOP_QueryServGeneric, strlen(From) + strlen(Comments) + 30);
@ -281,7 +281,7 @@ void LFGuildManager::ToggleGuild(uint32 FromZoneID, uint32 FromInstanceID, char
}
std::string query = StringFormat("DELETE FROM `lfguild` WHERE `type` = 1 AND `name` = '%s'", GuildName);
auto results = qs_database.QueryDatabase(query);
auto results = database.QueryDatabase(query);
uint32 Now = time(nullptr);
@ -296,7 +296,7 @@ void LFGuildManager::ToggleGuild(uint32 FromZoneID, uint32 FromInstanceID, char
"VALUES (1, '%s', '%s', %u, %u, %u, %u, %u, %u)",
GuildName, Comments, FromLevel, ToLevel,
Classes, AACount, TimeZone, Now);
auto results = qs_database.QueryDatabase(query);
auto results = database.QueryDatabase(query);
}
@ -324,7 +324,7 @@ void LFGuildManager::ExpireEntries()
continue;
std::string query = StringFormat("DELETE from `lfguild` WHERE `type` = 0 AND `name` = '%s'", (*it).Name.c_str());
auto results = qs_database.QueryDatabase(query);
auto results = database.QueryDatabase(query);
if(!results.Success())
it = Players.erase(it);
@ -336,7 +336,7 @@ void LFGuildManager::ExpireEntries()
continue;
std::string query = StringFormat("DELETE from `lfguild` WHERE `type` = 1 AND `name` = '%s'", (*it2).Name.c_str());
auto results = qs_database.QueryDatabase(query);
auto results = database.QueryDatabase(query);
if(!results.Success())
it2 = Guilds.erase(it2);

View File

@ -17,7 +17,6 @@
*/
#include "../common/database.h"
#include "../common/global_define.h"
#include "../common/eqemu_logsys.h"
#include "../common/opcodemgr.h"
@ -37,7 +36,6 @@ volatile bool RunLoops = true;
TimeoutManager timeout_manager;
Database database;
QSDatabase qs_database;
LFGuildManager lfguildmanager;
std::string WorldShortName;
const queryservconfig *Config;
@ -79,7 +77,7 @@ int main() {
Log.Out(Logs::General, Logs::QS_Server, "Connecting to MySQL...");
/* MySQL Connection */
if (!qs_database.Connect(
if (!database.Connect(
Config->QSDatabaseHost.c_str(),
Config->QSDatabaseUsername.c_str(),
Config->QSDatabasePassword.c_str(),

View File

@ -38,7 +38,7 @@
extern WorldServer worldserver;
extern const queryservconfig *Config;
extern QSDatabase qs_database;
extern Database database;
extern LFGuildManager lfguildmanager;
WorldServer::WorldServer()
@ -78,42 +78,42 @@ void WorldServer::Process()
Server_Speech_Struct *SSS = (Server_Speech_Struct*)pack->pBuffer;
std::string tmp1 = SSS->from;
std::string tmp2 = SSS->to;
qs_database.AddSpeech(tmp1.c_str(), tmp2.c_str(), SSS->message, SSS->minstatus, SSS->guilddbid, SSS->type);
database.AddSpeech(tmp1.c_str(), tmp2.c_str(), SSS->message, SSS->minstatus, SSS->guilddbid, SSS->type);
break;
}
case ServerOP_QSPlayerLogTrades: {
QSPlayerLogTrade_Struct *QS = (QSPlayerLogTrade_Struct*)pack->pBuffer;
qs_database.LogPlayerTrade(QS, QS->_detail_count);
database.LogPlayerTrade(QS, QS->_detail_count);
break;
}
case ServerOP_QSPlayerLogHandins: {
QSPlayerLogHandin_Struct *QS = (QSPlayerLogHandin_Struct*)pack->pBuffer;
qs_database.LogPlayerHandin(QS, QS->_detail_count);
database.LogPlayerHandin(QS, QS->_detail_count);
break;
}
case ServerOP_QSPlayerLogNPCKills: {
QSPlayerLogNPCKill_Struct *QS = (QSPlayerLogNPCKill_Struct*)pack->pBuffer;
uint32 Members = pack->size - sizeof(QSPlayerLogNPCKill_Struct);
if (Members > 0) Members = Members / sizeof(QSPlayerLogNPCKillsPlayers_Struct);
qs_database.LogPlayerNPCKill(QS, Members);
database.LogPlayerNPCKill(QS, Members);
break;
}
case ServerOP_QSPlayerLogDeletes: {
QSPlayerLogDelete_Struct *QS = (QSPlayerLogDelete_Struct*)pack->pBuffer;
uint32 Items = QS->char_count;
qs_database.LogPlayerDelete(QS, Items);
database.LogPlayerDelete(QS, Items);
break;
}
case ServerOP_QSPlayerLogMoves: {
QSPlayerLogMove_Struct *QS = (QSPlayerLogMove_Struct*)pack->pBuffer;
uint32 Items = QS->char_count;
qs_database.LogPlayerMove(QS, Items);
database.LogPlayerMove(QS, Items);
break;
}
case ServerOP_QSPlayerLogMerchantTransactions: {
QSMerchantLogTransaction_Struct *QS = (QSMerchantLogTransaction_Struct*)pack->pBuffer;
uint32 Items = QS->char_count + QS->merchant_count;
qs_database.LogMerchantTransaction(QS, Items);
database.LogMerchantTransaction(QS, Items);
break;
}
case ServerOP_QueryServGeneric: {
@ -155,7 +155,7 @@ void WorldServer::Process()
}
case ServerOP_QSSendQuery: {
/* Process all packets here */
qs_database.GeneralQueryReceive(pack);
database.GeneralQueryReceive(pack);
break;
}
}