mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 19:37:02 +00:00
[Rel21] Stage 1 of updates for Rel21 Build System
This commit is contained in:
parent
13292befd6
commit
fdefc0869a
1951 changed files with 40474 additions and 252610 deletions
|
|
@ -22,13 +22,13 @@
|
|||
* and lore are copyrighted by Blizzard Entertainment, Inc.
|
||||
*/
|
||||
|
||||
#ifndef __SQLOPERATIONS_H
|
||||
#define __SQLOPERATIONS_H
|
||||
#ifndef MANGOS_H_SQLOPERATIONS
|
||||
#define MANGOS_H_SQLOPERATIONS
|
||||
|
||||
#include "Common.h"
|
||||
#include "Common/Common.h"
|
||||
|
||||
#include "ace/Thread_Mutex.h"
|
||||
#include "LockedQueue.h"
|
||||
#include <ace/Thread_Mutex.h>
|
||||
#include "LockedQueue/LockedQueue.h"
|
||||
#include <queue>
|
||||
#include "Utilities/Callback.h"
|
||||
|
||||
|
|
@ -39,51 +39,131 @@ class SqlConnection;
|
|||
class SqlDelayThread;
|
||||
class SqlStmtParameters;
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
class SqlOperation
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
virtual void OnRemove() { delete this; }
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param conn
|
||||
* @return bool
|
||||
*/
|
||||
virtual bool Execute(SqlConnection* conn) = 0;
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
virtual ~SqlOperation() {}
|
||||
};
|
||||
|
||||
/// ---- ASYNC STATEMENTS / TRANSACTIONS ----
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
class SqlPlainRequest : public SqlOperation
|
||||
{
|
||||
private:
|
||||
const char* m_sql;
|
||||
const char* m_sql; /**< TODO */
|
||||
public:
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param sql
|
||||
*/
|
||||
SqlPlainRequest(const char* sql) : m_sql(mangos_strdup(sql)) {}
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
~SqlPlainRequest() { char* tofree = const_cast<char*>(m_sql); delete[] tofree; }
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param conn
|
||||
* @return bool
|
||||
*/
|
||||
bool Execute(SqlConnection* conn) override;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
class SqlTransaction : public SqlOperation
|
||||
{
|
||||
private:
|
||||
std::vector<SqlOperation* > m_queue;
|
||||
std::vector<SqlOperation* > m_queue; /**< TODO */
|
||||
|
||||
public:
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
SqlTransaction() {}
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
~SqlTransaction();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param sql
|
||||
*/
|
||||
void DelayExecute(SqlOperation* sql) { m_queue.push_back(sql); }
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param conn
|
||||
* @return bool
|
||||
*/
|
||||
bool Execute(SqlConnection* conn) override;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
class SqlPreparedRequest : public SqlOperation
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param nIndex
|
||||
* @param arg
|
||||
*/
|
||||
SqlPreparedRequest(int nIndex, SqlStmtParameters* arg);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
~SqlPreparedRequest();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param conn
|
||||
* @return bool
|
||||
*/
|
||||
bool Execute(SqlConnection* conn) override;
|
||||
|
||||
private:
|
||||
const int m_nIndex;
|
||||
SqlStmtParameters* m_param;
|
||||
const int m_nIndex; /**< TODO */
|
||||
SqlStmtParameters* m_param; /**< TODO */
|
||||
};
|
||||
|
||||
/// ---- ASYNC QUERIES ----
|
||||
|
|
@ -94,52 +174,157 @@ class SqlResultQueue; /// queue for thread
|
|||
class SqlQueryHolder; /// groups several async quries
|
||||
class SqlQueryHolderEx; /// points to a holder, added to the delay thread
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
class SqlResultQueue : public ACE_Based::LockedQueue<MaNGOS::IQueryCallback* , ACE_Thread_Mutex>
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
SqlResultQueue() {}
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
void Update();
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
class SqlQuery : public SqlOperation
|
||||
{
|
||||
private:
|
||||
const char* m_sql;
|
||||
MaNGOS::IQueryCallback* m_callback;
|
||||
SqlResultQueue* m_queue;
|
||||
const char* m_sql; /**< TODO */
|
||||
MaNGOS::IQueryCallback* m_callback; /**< TODO */
|
||||
SqlResultQueue* m_queue; /**< TODO */
|
||||
public:
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param sql
|
||||
* @param callback
|
||||
* @param queue
|
||||
*/
|
||||
SqlQuery(const char* sql, MaNGOS::IQueryCallback* callback, SqlResultQueue* queue)
|
||||
: m_sql(mangos_strdup(sql)), m_callback(callback), m_queue(queue) {}
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
~SqlQuery() { char* tofree = const_cast<char*>(m_sql); delete[] tofree; }
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param conn
|
||||
* @return bool
|
||||
*/
|
||||
bool Execute(SqlConnection* conn) override;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
class SqlQueryHolder
|
||||
{
|
||||
friend class SqlQueryHolderEx;
|
||||
private:
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
typedef std::pair<const char*, QueryResult*> SqlResultPair;
|
||||
std::vector<SqlResultPair> m_queries;
|
||||
std::vector<SqlResultPair> m_queries; /**< TODO */
|
||||
public:
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
SqlQueryHolder() {}
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
~SqlQueryHolder();
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param index
|
||||
* @param sql
|
||||
* @return bool
|
||||
*/
|
||||
bool SetQuery(size_t index, const char* sql);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param index
|
||||
* @param format...
|
||||
* @return bool
|
||||
*/
|
||||
bool SetPQuery(size_t index, const char* format, ...) ATTR_PRINTF(3, 4);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param size
|
||||
*/
|
||||
void SetSize(size_t size);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param index
|
||||
* @return QueryResult
|
||||
*/
|
||||
QueryResult* GetResult(size_t index);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param index
|
||||
* @param result
|
||||
*/
|
||||
void SetResult(size_t index, QueryResult* result);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param callback
|
||||
* @param thread
|
||||
* @param queue
|
||||
* @return bool
|
||||
*/
|
||||
bool Execute(MaNGOS::IQueryCallback* callback, SqlDelayThread* thread, SqlResultQueue* queue);
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
class SqlQueryHolderEx : public SqlOperation
|
||||
{
|
||||
private:
|
||||
SqlQueryHolder* m_holder;
|
||||
MaNGOS::IQueryCallback* m_callback;
|
||||
SqlResultQueue* m_queue;
|
||||
SqlQueryHolder* m_holder; /**< TODO */
|
||||
MaNGOS::IQueryCallback* m_callback; /**< TODO */
|
||||
SqlResultQueue* m_queue; /**< TODO */
|
||||
public:
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param holder
|
||||
* @param callback
|
||||
* @param queue
|
||||
*/
|
||||
SqlQueryHolderEx(SqlQueryHolder* holder, MaNGOS::IQueryCallback* callback, SqlResultQueue* queue)
|
||||
: m_holder(holder), m_callback(callback), m_queue(queue) {}
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param conn
|
||||
* @return bool
|
||||
*/
|
||||
bool Execute(SqlConnection* conn) override;
|
||||
};
|
||||
#endif //__SQLOPERATIONS_H
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue