TrinityCore
Loading...
Searching...
No Matches
MySQLConnection Class Referenceabstract

#include <MySQLConnection.h>

+ Inheritance diagram for MySQLConnection:

Classes

struct  WorkerThread
 

Public Member Functions

 MySQLConnection (MySQLConnectionInfo &connInfo, ConnectionFlags connectionFlags)
 
virtual ~MySQLConnection ()
 
uint32 Open ()
 
void Close ()
 
bool PrepareStatements ()
 
bool Execute (char const *sql)
 
bool Execute (PreparedStatementBase *stmt)
 
ResultSet * Query (char const *sql)
 
PreparedResultSet * Query (PreparedStatementBase *stmt)
 
bool _Query (char const *sql, MySQLResult **pResult, MySQLField **pFields, uint64 *pRowCount, uint32 *pFieldCount)
 
bool _Query (PreparedStatementBase *stmt, MySQLPreparedStatement **mysqlStmt, MySQLResult **pResult, uint64 *pRowCount, uint32 *pFieldCount)
 
void BeginTransaction ()
 
void RollbackTransaction ()
 
void CommitTransaction ()
 
int ExecuteTransaction (std::shared_ptr< TransactionBase > transaction)
 
size_t EscapeString (char *to, const char *from, size_t length)
 
void Ping ()
 
uint32 GetLastError ()
 
void StartWorkerThread (Trinity::Asio::IoContext *context)
 
std::thread::id GetWorkerThreadId () const
 

Protected Types

typedef std::vector< std::unique_ptr< MySQLPreparedStatement > > PreparedStatementContainer
 

Protected Member Functions

bool LockIfReady ()
 
void Unlock ()
 Called by parent databasepool. Will let other threads access this connection.
 
uint32 GetServerVersion () const
 
MySQLPreparedStatement * GetPreparedStatement (uint32 index)
 
void PrepareStatement (uint32 index, std::string_view sql, ConnectionFlags flags)
 
virtual void DoPrepareStatements ()=0
 

Protected Attributes

PreparedStatementContainer m_stmts
 PreparedStatements storage.
 
bool m_reconnecting
 Are we reconnecting?
 
bool m_prepareError
 Was there any error while preparing statements?
 

Private Member Functions

bool _HandleMySQLErrno (uint32 errNo, uint8 attempts=5)
 
 MySQLConnection (MySQLConnection const &right)=delete
 
MySQLConnection & operator= (MySQLConnection const &right)=delete
 

Private Attributes

std::unique_ptr< WorkerThread > m_workerThread
 Core worker thread.
 
MySQLHandle * m_Mysql
 MySQL Handle.
 
MySQLConnectionInfo & m_connectionInfo
 Connection info (used for logging)
 
ConnectionFlags m_connectionFlags
 Connection flags (for preparing relevant statements)
 
std::mutex m_Mutex
 

Friends

template<class T >
class DatabaseWorkerPool
 
class PingOperation
 

Detailed Description

Definition at line 51 of file MySQLConnection.h.

Member Typedef Documentation

◆ PreparedStatementContainer

typedef std::vector<std::unique_ptr<MySQLPreparedStatement> > MySQLConnection::PreparedStatementContainer
protected

Definition at line 98 of file MySQLConnection.h.

Constructor & Destructor Documentation

◆ MySQLConnection() [1/2]

MySQLConnection::MySQLConnection ( MySQLConnectionInfo &  connInfo,
ConnectionFlags  connectionFlags 
)

Definition at line 57 of file MySQLConnection.cpp.

◆ ~MySQLConnection()

MySQLConnection::~MySQLConnection ( )
virtual

Definition at line 66 of file MySQLConnection.cpp.

References Close().

◆ MySQLConnection() [2/2]

MySQLConnection::MySQLConnection ( MySQLConnection const &  right)
privatedelete

Member Function Documentation

◆ _HandleMySQLErrno()

◆ _Query() [1/2]

bool MySQLConnection::_Query ( char const *  sql,
MySQLResult **  pResult,
MySQLField **  pFields,
uint64 *  pRowCount,
uint32 *  pFieldCount 
)

◆ _Query() [2/2]

◆ BeginTransaction()

void MySQLConnection::BeginTransaction ( )

Definition at line 374 of file MySQLConnection.cpp.

References Execute().

Referenced by ExecuteTransaction().

◆ Close()

void MySQLConnection::Close ( )

Definition at line 71 of file MySQLConnection.cpp.

References m_Mysql, m_stmts, and m_workerThread.

Referenced by ~MySQLConnection().

◆ CommitTransaction()

void MySQLConnection::CommitTransaction ( )

Definition at line 384 of file MySQLConnection.cpp.

References Execute().

Referenced by ExecuteTransaction().

◆ DoPrepareStatements()

virtual void MySQLConnection::DoPrepareStatements ( )
protectedpure virtual

◆ EscapeString()

size_t MySQLConnection::EscapeString ( char *  to,
const char *  from,
size_t  length 
)

Definition at line 417 of file MySQLConnection.cpp.

References m_Mysql.

◆ Execute() [1/2]

◆ Execute() [2/2]

◆ ExecuteTransaction()

int MySQLConnection::ExecuteTransaction ( std::shared_ptr< TransactionBase >  transaction)

◆ GetLastError()

uint32 MySQLConnection::GetLastError ( )

Definition at line 427 of file MySQLConnection.cpp.

References m_Mysql.

Referenced by ExecuteTransaction().

◆ GetPreparedStatement()

MySQLPreparedStatement * MySQLConnection::GetPreparedStatement ( uint32  index)
protected

◆ GetServerVersion()

uint32 MySQLConnection::GetServerVersion ( ) const
protected

Definition at line 460 of file MySQLConnection.cpp.

References m_Mysql.

◆ GetWorkerThreadId()

std::thread::id MySQLConnection::GetWorkerThreadId ( ) const

Definition at line 442 of file MySQLConnection.cpp.

References m_workerThread.

◆ LockIfReady()

bool MySQLConnection::LockIfReady ( )
protected

Tries to acquire lock. If lock is acquired by another thread the calling parent will just try another connection

Definition at line 450 of file MySQLConnection.cpp.

References m_Mutex.

◆ Open()

◆ operator=()

MySQLConnection & MySQLConnection::operator= ( MySQLConnection const &  right)
privatedelete

◆ Ping()

void MySQLConnection::Ping ( )

Definition at line 422 of file MySQLConnection.cpp.

References m_Mysql.

◆ PrepareStatement()

◆ PrepareStatements()

bool MySQLConnection::PrepareStatements ( )

Definition at line 183 of file MySQLConnection.cpp.

References DoPrepareStatements(), and m_prepareError.

Referenced by _HandleMySQLErrno().

◆ Query() [1/2]

ResultSet * MySQLConnection::Query ( char const *  sql)

◆ Query() [2/2]

PreparedResultSet * MySQLConnection::Query ( PreparedStatementBase *  stmt)

Definition at line 509 of file MySQLConnection.cpp.

References _Query(), MySQLPreparedStatement::GetSTMT(), and m_Mysql.

◆ RollbackTransaction()

void MySQLConnection::RollbackTransaction ( )

Definition at line 379 of file MySQLConnection.cpp.

References Execute().

Referenced by ExecuteTransaction().

◆ StartWorkerThread()

◆ Unlock()

void MySQLConnection::Unlock ( )
protected

Called by parent databasepool. Will let other threads access this connection.

Definition at line 455 of file MySQLConnection.cpp.

References m_Mutex.

Friends And Related Symbol Documentation

◆ DatabaseWorkerPool

template<class T >
friend class DatabaseWorkerPool
friend

Definition at line 53 of file MySQLConnection.h.

◆ PingOperation

friend class PingOperation
friend

Definition at line 54 of file MySQLConnection.h.

Member Data Documentation

◆ m_connectionFlags

ConnectionFlags MySQLConnection::m_connectionFlags
private

Connection flags (for preparing relevant statements)

Definition at line 111 of file MySQLConnection.h.

Referenced by _HandleMySQLErrno(), GetPreparedStatement(), and PrepareStatement().

◆ m_connectionInfo

MySQLConnectionInfo& MySQLConnection::m_connectionInfo
private

Connection info (used for logging)

Definition at line 110 of file MySQLConnection.h.

Referenced by _HandleMySQLErrno(), GetPreparedStatement(), and Open().

◆ m_Mutex

std::mutex MySQLConnection::m_Mutex
private

Definition at line 112 of file MySQLConnection.h.

Referenced by LockIfReady(), and Unlock().

◆ m_Mysql

◆ m_prepareError

bool MySQLConnection::m_prepareError
protected

Was there any error while preparing statements?

Definition at line 102 of file MySQLConnection.h.

Referenced by PrepareStatement(), and PrepareStatements().

◆ m_reconnecting

◆ m_stmts

◆ m_workerThread

std::unique_ptr<WorkerThread> MySQLConnection::m_workerThread
private

Core worker thread.

Definition at line 108 of file MySQLConnection.h.

Referenced by Close(), GetWorkerThreadId(), and StartWorkerThread().


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