aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQAston <none@none>2009-06-27 17:59:57 +0200
committerQAston <none@none>2009-06-27 17:59:57 +0200
commit1592fe9aa3ee51a27438c6b8fb52d4a0a3c681e5 (patch)
treea03d3431824630c130c9446717b79ada33fa5454
parentab7e83a72c7da17541e7d87b087ce8693d8b301d (diff)
Backed out changeset 97d8a5f6449c
--HG-- branch : trunk
-rw-r--r--src/shared/Database/Database.h2
-rw-r--r--src/shared/Database/DatabaseMysql.cpp9
-rw-r--r--src/shared/Database/DatabaseMysql.h4
-rw-r--r--src/shared/Database/MySQLDelayThread.h2
-rw-r--r--src/shared/Database/SqlDelayThread.cpp18
-rw-r--r--src/shared/Database/SqlDelayThread.h2
6 files changed, 16 insertions, 21 deletions
diff --git a/src/shared/Database/Database.h b/src/shared/Database/Database.h
index 4a0d655f55c..7f2bdaefdb7 100644
--- a/src/shared/Database/Database.h
+++ b/src/shared/Database/Database.h
@@ -49,7 +49,7 @@ class TRINITY_DLL_SPEC Database
virtual ~Database();
virtual bool Initialize(const char *infoString);
- virtual void InitDelayThread(const char *infoString) = 0;
+ virtual void InitDelayThread() = 0;
virtual void HaltDelayThread() = 0;
virtual QueryResult* Query(const char *sql) = 0;
diff --git a/src/shared/Database/DatabaseMysql.cpp b/src/shared/Database/DatabaseMysql.cpp
index 61801d65fe5..0189b5883f7 100644
--- a/src/shared/Database/DatabaseMysql.cpp
+++ b/src/shared/Database/DatabaseMysql.cpp
@@ -70,7 +70,7 @@ DatabaseMysql::~DatabaseMysql()
mysql_library_end();
}
-bool DatabaseMysql::Initialize(const char *infoString, bool initDelayThread)
+bool DatabaseMysql::Initialize(const char *infoString)
{
if(!Database::Initialize(infoString))
@@ -85,8 +85,7 @@ bool DatabaseMysql::Initialize(const char *infoString, bool initDelayThread)
return false;
}
- if(initDelayThread)
- InitDelayThread(infoString);
+ InitDelayThread();
Tokens tokens = StrSplit(infoString, ";");
@@ -436,12 +435,12 @@ unsigned long DatabaseMysql::escape_string(char *to, const char *from, unsigned
return(mysql_real_escape_string(mMysql, to, from, length));
}
-void DatabaseMysql::InitDelayThread(const char* infoString)
+void DatabaseMysql::InitDelayThread()
{
assert(!m_delayThread);
//New delay thread for delay execute
- m_threadBody = new MySQLDelayThread(this,infoString);
+ m_threadBody = new MySQLDelayThread(this);
m_delayThread = new ACE_Based::Thread(*m_threadBody);
}
diff --git a/src/shared/Database/DatabaseMysql.h b/src/shared/Database/DatabaseMysql.h
index eb667703975..4612ebfc462 100644
--- a/src/shared/Database/DatabaseMysql.h
+++ b/src/shared/Database/DatabaseMysql.h
@@ -46,8 +46,8 @@ class TRINITY_DLL_SPEC DatabaseMysql : public Database
//! Initializes Mysql and connects to a server.
/*! infoString should be formated like hostname;username;password;database. */
- bool Initialize(const char *infoString, bool initDelayThread = true);
- void InitDelayThread(const char* infoString);
+ bool Initialize(const char *infoString);
+ void InitDelayThread();
void HaltDelayThread();
QueryResult* Query(const char *sql);
QueryNamedResult* QueryNamed(const char *sql);
diff --git a/src/shared/Database/MySQLDelayThread.h b/src/shared/Database/MySQLDelayThread.h
index 12ff3337836..fcebe3fbd35 100644
--- a/src/shared/Database/MySQLDelayThread.h
+++ b/src/shared/Database/MySQLDelayThread.h
@@ -26,7 +26,7 @@
class MySQLDelayThread : public SqlDelayThread
{
public:
- MySQLDelayThread(Database* db,const char* infoString) : SqlDelayThread(db, infoString) {}
+ MySQLDelayThread(Database* db) : SqlDelayThread(db) {}
void Stop() { SqlDelayThread::Stop(); }
};
#endif //__MYSQLDELAYTHREAD_H
diff --git a/src/shared/Database/SqlDelayThread.cpp b/src/shared/Database/SqlDelayThread.cpp
index f36cf4940ce..9a92fd5dd63 100644
--- a/src/shared/Database/SqlDelayThread.cpp
+++ b/src/shared/Database/SqlDelayThread.cpp
@@ -22,10 +22,8 @@
#include "Database/SqlOperations.h"
#include "DatabaseEnv.h"
-SqlDelayThread::SqlDelayThread(Database* db, const char* infoString) :m_running(true)
+SqlDelayThread::SqlDelayThread(Database* db) : m_dbEngine(db), m_running(true)
{
- m_dbEngine = new DatabaseType;
- ((DatabaseType*)m_dbEngine)->Initialize(infoString, false);
}
void SqlDelayThread::run()
@@ -37,16 +35,15 @@ void SqlDelayThread::run()
while (m_running)
{
- try
+ // if the running state gets turned off while sleeping
+ // empty the queue before exiting
+ ACE_Based::Thread::Sleep(10);
+ while (!m_sqlQueue.empty())
{
s = m_sqlQueue.next();
+ s->Execute(m_dbEngine);
+ delete s;
}
- catch(...)
- {continue;}
- if(!s)
- continue;
- s->Execute(m_dbEngine);
- delete s;
}
#ifndef DO_POSTGRESQL
@@ -57,6 +54,5 @@ void SqlDelayThread::run()
void SqlDelayThread::Stop()
{
m_running = false;
- m_sqlQueue.cancel();
}
diff --git a/src/shared/Database/SqlDelayThread.h b/src/shared/Database/SqlDelayThread.h
index 246a1325b9b..3c24d3525b7 100644
--- a/src/shared/Database/SqlDelayThread.h
+++ b/src/shared/Database/SqlDelayThread.h
@@ -40,7 +40,7 @@ class SqlDelayThread : public ACE_Based::Runnable
SqlDelayThread();
public:
- SqlDelayThread(Database* db,const char* infoString);
+ SqlDelayThread(Database* db);
///< Put sql statement to delay queue
bool Delay(SqlOperation* sql) { m_sqlQueue.add(sql); return true; }