Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DBManager.cpp
- #include "stdafx.h"
- #include "DBManager.h"
- #include "ClientManager.h"
- extern std::string g_stLocale;
- CDBManager::CDBManager()
- {
- Initialize();
- }
- CDBManager::~CDBManager()
- {
- Destroy();
- }
- void CDBManager::Initialize()
- {
- for (int i = 0; i < SQL_MAX_NUM; ++i)
- {
- m_mainSQL[i] = NULL;
- m_directSQL[i] = NULL;
- m_asyncSQL[i] = NULL;
- }
- }
- void CDBManager::Destroy()
- {
- Clear();
- }
- void CDBManager::Clear()
- {
- for (int i = 0; i < SQL_MAX_NUM; ++i)
- {
- if (m_mainSQL[i])
- {
- delete m_mainSQL[i];
- m_mainSQL[i] = NULL;
- }
- if (m_directSQL[i])
- {
- delete m_directSQL[i];
- m_directSQL[i] = NULL;
- }
- if (m_asyncSQL[i])
- {
- delete m_asyncSQL[i];
- m_asyncSQL[i] = NULL;
- }
- }
- Initialize();
- }
- void CDBManager::Quit()
- {
- for (int i = 0; i < SQL_MAX_NUM; ++i)
- {
- if (m_mainSQL[i])
- m_mainSQL[i]->Quit();
- if (m_asyncSQL[i])
- m_asyncSQL[i]->Quit();
- if (m_directSQL[i])
- m_directSQL[i]->Quit();
- }
- }
- SQLMsg * CDBManager::PopResult()
- {
- SQLMsg * p;
- for (int i = 0; i < SQL_MAX_NUM; ++i)
- if (m_mainSQL[i] && m_mainSQL[i]->PopResult(&p))
- return p;
- return NULL;
- }
- SQLMsg * CDBManager::PopResult(eSQL_SLOT slot)
- {
- SQLMsg * p;
- if (m_mainSQL[slot] && m_mainSQL[slot]->PopResult(&p))
- return p;
- return NULL;
- }
- int CDBManager::Connect(int iSlot, const char * db_address, const int db_port, const char * db_name, const char * user, const char * pwd)
- {
- if (db_address == NULL || db_name == NULL)
- return false;
- if (iSlot < 0 || iSlot >= SQL_MAX_NUM)
- return false;
- sys_log(0, "CREATING DIRECT_SQL");
- m_directSQL[iSlot] = new CAsyncSQL2;
- if (!m_directSQL[iSlot]->Setup(db_address, user, pwd, db_name, g_stLocale.c_str(), true, db_port))
- {
- Clear();
- return false;
- }
- sys_log(0, "CREATING MAIN_SQL");
- m_mainSQL[iSlot] = new CAsyncSQL2;
- if (!m_mainSQL[iSlot]->Setup(db_address, user, pwd, db_name, g_stLocale.c_str(), false, db_port))
- {
- Clear();
- return false;
- }
- sys_log(0, "CREATING ASYNC_SQL");
- m_asyncSQL[iSlot] = new CAsyncSQL2;
- if (!m_asyncSQL[iSlot]->Setup(db_address, user, pwd, db_name, g_stLocale.c_str(), false, db_port))
- {
- Clear();
- return false;
- }
- return true;
- }
- SQLMsg * CDBManager::DirectQuery(const char * c_pszQuery, int iSlot)
- {
- return m_directSQL[iSlot]->DirectQuery(c_pszQuery);
- }
- extern CPacketInfo g_query_info;
- extern int g_query_count[2];
- void CDBManager::ReturnQuery(const char * c_pszQuery, int iType, IDENT dwIdent, void * udata, int iSlot)
- {
- assert(iSlot < SQL_MAX_NUM);
- //sys_log(0, "ReturnQuery %s", c_pszQuery);
- CQueryInfo * p = new CQueryInfo;
- p->iType = iType;
- p->dwIdent = dwIdent;
- p->pvData = udata;
- m_mainSQL[iSlot]->ReturnQuery(c_pszQuery, p);
- //g_query_info.Add(iType);
- ++g_query_count[0];
- }
- void CDBManager::AsyncQuery(const char * c_pszQuery, int iSlot)
- {
- assert(iSlot < SQL_MAX_NUM);
- m_asyncSQL[iSlot]->AsyncQuery(c_pszQuery);
- ++g_query_count[1];
- }
- unsigned long CDBManager::EscapeString(void *to, const void *from, unsigned long length, int iSlot)
- {
- assert(iSlot < SQL_MAX_NUM);
- return mysql_real_escape_string(m_directSQL[iSlot]->GetSQLHandle(), (char *) to, (const char *) from, length);
- }
- void CDBManager::SetLocale(const char * szLocale)
- {
- const std::string stLocale(szLocale);
- sys_log(0, "SetLocale start" );
- for (int n = 0; n < SQL_MAX_NUM; ++n)
- {
- m_mainSQL[n]->SetLocale(stLocale);
- m_directSQL[n]->SetLocale(stLocale);
- m_asyncSQL[n]->SetLocale(stLocale);
- }
- sys_log(0, "End setlocale %s", szLocale);
- }
- void CDBManager::QueryLocaleSet()
- {
- for (int n = 0; n < SQL_MAX_NUM; ++n)
- {
- m_mainSQL[n]->QueryLocaleSet();
- m_directSQL[n]->QueryLocaleSet();
- m_asyncSQL[n]->QueryLocaleSet();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement