aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Database
diff options
context:
space:
mode:
authorSubv <subv2112@gmail.com>2014-06-24 13:17:23 -0500
committerSubv <subv2112@gmail.com>2014-06-24 13:17:41 -0500
commitf03d49705dc7a0c00350119b319dcf9feb566529 (patch)
treea60451bfe422d75a9378a4c124d7839be5e07789 /src/server/shared/Database
parent0a592dd9dbd34818deee472dd42d700b4746a27e (diff)
Core/Databases: Removed ACE dependencies on some of the database handling code.
Diffstat (limited to 'src/server/shared/Database')
-rw-r--r--src/server/shared/Database/AdhocStatement.cpp8
-rw-r--r--src/server/shared/Database/AdhocStatement.h12
-rw-r--r--src/server/shared/Database/DatabaseWorkerPool.h12
-rw-r--r--src/server/shared/Database/MySQLConnection.cpp2
-rw-r--r--src/server/shared/Database/PreparedStatement.cpp8
-rw-r--r--src/server/shared/Database/PreparedStatement.h9
-rw-r--r--src/server/shared/Database/QueryHolder.cpp5
-rw-r--r--src/server/shared/Database/QueryHolder.h11
8 files changed, 35 insertions, 32 deletions
diff --git a/src/server/shared/Database/AdhocStatement.cpp b/src/server/shared/Database/AdhocStatement.cpp
index 896fefde5b7..65c41823ccb 100644
--- a/src/server/shared/Database/AdhocStatement.cpp
+++ b/src/server/shared/Database/AdhocStatement.cpp
@@ -25,9 +25,9 @@ m_has_result(false)
m_sql = strdup(sql);
}
-BasicStatementTask::BasicStatementTask(const char* sql, QueryResultFuture result) :
+BasicStatementTask::BasicStatementTask(const char* sql, QueryResultPromise& result) :
m_has_result(true),
-m_result(result)
+m_result(std::move(result))
{
m_sql = strdup(sql);
}
@@ -45,11 +45,11 @@ bool BasicStatementTask::Execute()
if (!result || !result->GetRowCount() || !result->NextRow())
{
delete result;
- m_result.set(QueryResult(NULL));
+ m_result.set_value(QueryResult(NULL));
return false;
}
- m_result.set(QueryResult(result));
+ m_result.set_value(QueryResult(result));
return true;
}
diff --git a/src/server/shared/Database/AdhocStatement.h b/src/server/shared/Database/AdhocStatement.h
index 44a9fa3d3ee..a67caaa160f 100644
--- a/src/server/shared/Database/AdhocStatement.h
+++ b/src/server/shared/Database/AdhocStatement.h
@@ -18,24 +18,26 @@
#ifndef _ADHOCSTATEMENT_H
#define _ADHOCSTATEMENT_H
-#include <ace/Future.h>
+#include <future>
#include "SQLOperation.h"
-typedef ACE_Future<QueryResult> QueryResultFuture;
+typedef std::future<QueryResult> QueryResultFuture;
+typedef std::promise<QueryResult> QueryResultPromise;
+
/*! Raw, ad-hoc query. */
class BasicStatementTask : public SQLOperation
{
public:
BasicStatementTask(const char* sql);
- BasicStatementTask(const char* sql, QueryResultFuture result);
+ BasicStatementTask(const char* sql, QueryResultPromise& result);
~BasicStatementTask();
- bool Execute();
+ bool Execute() override;
private:
const char* m_sql; //- Raw query to be executed
bool m_has_result;
- QueryResultFuture m_result;
+ QueryResultPromise m_result;
};
#endif \ No newline at end of file
diff --git a/src/server/shared/Database/DatabaseWorkerPool.h b/src/server/shared/Database/DatabaseWorkerPool.h
index 9c56c75bf71..078b97762b5 100644
--- a/src/server/shared/Database/DatabaseWorkerPool.h
+++ b/src/server/shared/Database/DatabaseWorkerPool.h
@@ -307,10 +307,10 @@ class DatabaseWorkerPool
//! The return value is then processed in ProcessQueryCallback methods.
QueryResultFuture AsyncQuery(const char* sql)
{
- QueryResultFuture res;
+ QueryResultPromise res;
BasicStatementTask* task = new BasicStatementTask(sql, res);
Enqueue(task);
- return res; //! Actual return value has no use yet
+ return res.get_future(); //! Actual return value has no use yet
}
//! Enqueues a query in string format -with variable args- that will set the value of the QueryResultFuture return object as soon as the query is executed.
@@ -331,10 +331,10 @@ class DatabaseWorkerPool
//! Statement must be prepared with CONNECTION_ASYNC flag.
PreparedQueryResultFuture AsyncQuery(PreparedStatement* stmt)
{
- PreparedQueryResultFuture res;
+ PreparedQueryResultPromise res;
PreparedStatementTask* task = new PreparedStatementTask(stmt, res);
Enqueue(task);
- return res;
+ return res.get_future();
}
//! Enqueues a vector of SQL operations (can be both adhoc and prepared) that will set the value of the QueryResultHolderFuture
@@ -343,10 +343,10 @@ class DatabaseWorkerPool
//! Any prepared statements added to this holder need to be prepared with the CONNECTION_ASYNC flag.
QueryResultHolderFuture DelayQueryHolder(SQLQueryHolder* holder)
{
- QueryResultHolderFuture res;
+ QueryResultHolderPromise res;
SQLQueryHolderTask* task = new SQLQueryHolderTask(holder, res);
Enqueue(task);
- return res; //! Fool compiler, has no use yet
+ return res.get_future(); //! Fool compiler, has no use yet
}
/**
diff --git a/src/server/shared/Database/MySQLConnection.cpp b/src/server/shared/Database/MySQLConnection.cpp
index 55d47c76430..0d2d97f7f28 100644
--- a/src/server/shared/Database/MySQLConnection.cpp
+++ b/src/server/shared/Database/MySQLConnection.cpp
@@ -34,6 +34,8 @@
#include "Timer.h"
#include "Log.h"
+#include <ace/OS_NS_unistd.h>
+
MySQLConnection::MySQLConnection(MySQLConnectionInfo& connInfo) :
m_reconnecting(false),
m_prepareError(false),
diff --git a/src/server/shared/Database/PreparedStatement.cpp b/src/server/shared/Database/PreparedStatement.cpp
index fe052bf5043..4b2b55f25e5 100644
--- a/src/server/shared/Database/PreparedStatement.cpp
+++ b/src/server/shared/Database/PreparedStatement.cpp
@@ -449,10 +449,10 @@ PreparedStatementTask::PreparedStatementTask(PreparedStatement* stmt) :
m_stmt(stmt),
m_has_result(false) { }
-PreparedStatementTask::PreparedStatementTask(PreparedStatement* stmt, PreparedQueryResultFuture result) :
+PreparedStatementTask::PreparedStatementTask(PreparedStatement* stmt, PreparedQueryResultPromise& result) :
m_stmt(stmt),
m_has_result(true),
-m_result(result) { }
+m_result(std::move(result)) { }
PreparedStatementTask::~PreparedStatementTask()
@@ -468,10 +468,10 @@ bool PreparedStatementTask::Execute()
if (!result || !result->GetRowCount())
{
delete result;
- m_result.set(PreparedQueryResult(NULL));
+ m_result.set_value(PreparedQueryResult(NULL));
return false;
}
- m_result.set(PreparedQueryResult(result));
+ m_result.set_value(PreparedQueryResult(result));
return true;
}
diff --git a/src/server/shared/Database/PreparedStatement.h b/src/server/shared/Database/PreparedStatement.h
index 6afb309db2c..d69ee52a3e7 100644
--- a/src/server/shared/Database/PreparedStatement.h
+++ b/src/server/shared/Database/PreparedStatement.h
@@ -18,8 +18,8 @@
#ifndef _PREPAREDSTATEMENT_H
#define _PREPAREDSTATEMENT_H
+#include <future>
#include "SQLOperation.h"
-#include <ace/Future.h>
#ifdef __APPLE__
#undef TYPE_BOOL
@@ -153,14 +153,15 @@ class MySQLPreparedStatement
MySQLPreparedStatement& operator=(MySQLPreparedStatement const& right) = delete;
};
-typedef ACE_Future<PreparedQueryResult> PreparedQueryResultFuture;
+typedef std::future<PreparedQueryResult> PreparedQueryResultFuture;
+typedef std::promise<PreparedQueryResult> PreparedQueryResultPromise;
//- Lower-level class, enqueuable operation
class PreparedStatementTask : public SQLOperation
{
public:
PreparedStatementTask(PreparedStatement* stmt);
- PreparedStatementTask(PreparedStatement* stmt, PreparedQueryResultFuture result);
+ PreparedStatementTask(PreparedStatement* stmt, PreparedQueryResultPromise& result);
~PreparedStatementTask();
bool Execute();
@@ -168,6 +169,6 @@ class PreparedStatementTask : public SQLOperation
protected:
PreparedStatement* m_stmt;
bool m_has_result;
- PreparedQueryResultFuture m_result;
+ PreparedQueryResultPromise m_result;
};
#endif
diff --git a/src/server/shared/Database/QueryHolder.cpp b/src/server/shared/Database/QueryHolder.cpp
index 7b4105ee076..bd938561b50 100644
--- a/src/server/shared/Database/QueryHolder.cpp
+++ b/src/server/shared/Database/QueryHolder.cpp
@@ -168,9 +168,6 @@ void SQLQueryHolder::SetSize(size_t size)
bool SQLQueryHolderTask::Execute()
{
- //the result can't be ready as we are processing it right now
- ASSERT(!m_result.ready());
-
if (!m_holder)
return false;
@@ -202,6 +199,6 @@ bool SQLQueryHolderTask::Execute()
}
}
- m_result.set(m_holder);
+ m_result.set_value(m_holder);
return true;
}
diff --git a/src/server/shared/Database/QueryHolder.h b/src/server/shared/Database/QueryHolder.h
index b92b2e5327e..5751675fe5f 100644
--- a/src/server/shared/Database/QueryHolder.h
+++ b/src/server/shared/Database/QueryHolder.h
@@ -18,7 +18,7 @@
#ifndef _QUERYHOLDER_H
#define _QUERYHOLDER_H
-#include <ace/Future.h>
+#include <future>
class SQLQueryHolder
{
@@ -39,17 +39,18 @@ class SQLQueryHolder
void SetPreparedResult(size_t index, PreparedResultSet* result);
};
-typedef ACE_Future<SQLQueryHolder*> QueryResultHolderFuture;
+typedef std::future<SQLQueryHolder*> QueryResultHolderFuture;
+typedef std::promise<SQLQueryHolder*> QueryResultHolderPromise;
class SQLQueryHolderTask : public SQLOperation
{
private:
SQLQueryHolder * m_holder;
- QueryResultHolderFuture m_result;
+ QueryResultHolderPromise m_result;
public:
- SQLQueryHolderTask(SQLQueryHolder *holder, QueryResultHolderFuture res)
- : m_holder(holder), m_result(res){ };
+ SQLQueryHolderTask(SQLQueryHolder *holder, QueryResultHolderPromise& res)
+ : m_holder(holder), m_result(std::move(res)){ };
bool Execute();
};