mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Fixed login and some errors
This commit is contained in:
@@ -1105,7 +1105,7 @@ void WorldSession::ProcessQueryCallbacks()
|
||||
PreparedQueryResult result;
|
||||
|
||||
//! HandleCharEnumOpcode
|
||||
if (_charEnumCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready)
|
||||
if (_charEnumCallback.valid() && _charEnumCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready)
|
||||
{
|
||||
result = _charEnumCallback.get();
|
||||
HandleCharEnum(result);
|
||||
@@ -1118,7 +1118,7 @@ void WorldSession::ProcessQueryCallbacks()
|
||||
}
|
||||
|
||||
//! HandlePlayerLoginOpcode
|
||||
if (_charLoginCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready)
|
||||
if (_charLoginCallback.valid() && _charLoginCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready)
|
||||
{
|
||||
SQLQueryHolder* param = _charLoginCallback.get();
|
||||
HandlePlayerLogin((LoginQueryHolder*)param);
|
||||
@@ -1143,7 +1143,7 @@ void WorldSession::ProcessQueryCallbacks()
|
||||
}
|
||||
|
||||
//- HandleCharAddIgnoreOpcode
|
||||
if (_addIgnoreCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready)
|
||||
if (_addIgnoreCallback.valid() && _addIgnoreCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready)
|
||||
{
|
||||
result = _addIgnoreCallback.get();
|
||||
HandleAddIgnoreOpcodeCallBack(result);
|
||||
@@ -1159,7 +1159,7 @@ void WorldSession::ProcessQueryCallbacks()
|
||||
}
|
||||
|
||||
//- HandleStablePet
|
||||
if (_stablePetCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready)
|
||||
if (_stablePetCallback.valid() && _stablePetCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready)
|
||||
{
|
||||
result = _stablePetCallback.get();
|
||||
HandleStablePetCallback(result);
|
||||
|
||||
@@ -19,22 +19,20 @@
|
||||
#include "MySQLConnection.h"
|
||||
|
||||
/*! Basic, ad-hoc queries. */
|
||||
BasicStatementTask::BasicStatementTask(const char* sql) :
|
||||
m_has_result(false)
|
||||
{
|
||||
m_sql = strdup(sql);
|
||||
}
|
||||
|
||||
BasicStatementTask::BasicStatementTask(const char* sql, QueryResultPromise& result) :
|
||||
m_has_result(true),
|
||||
m_result(std::move(result))
|
||||
BasicStatementTask::BasicStatementTask(const char* sql, bool async) :
|
||||
m_result(nullptr)
|
||||
{
|
||||
m_sql = strdup(sql);
|
||||
m_has_result = async; // If the operation is async, then there's a result
|
||||
if (async)
|
||||
m_result = new QueryResultPromise();
|
||||
}
|
||||
|
||||
BasicStatementTask::~BasicStatementTask()
|
||||
{
|
||||
free((void*)m_sql);
|
||||
if (m_has_result && m_result != nullptr)
|
||||
delete m_result;
|
||||
}
|
||||
|
||||
bool BasicStatementTask::Execute()
|
||||
@@ -45,11 +43,11 @@ bool BasicStatementTask::Execute()
|
||||
if (!result || !result->GetRowCount() || !result->NextRow())
|
||||
{
|
||||
delete result;
|
||||
m_result.set_value(QueryResult(NULL));
|
||||
m_result->set_value(QueryResult(NULL));
|
||||
return false;
|
||||
}
|
||||
|
||||
m_result.set_value(QueryResult(result));
|
||||
m_result->set_value(QueryResult(result));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,16 +28,16 @@ typedef std::promise<QueryResult> QueryResultPromise;
|
||||
class BasicStatementTask : public SQLOperation
|
||||
{
|
||||
public:
|
||||
BasicStatementTask(const char* sql);
|
||||
BasicStatementTask(const char* sql, QueryResultPromise& result);
|
||||
BasicStatementTask(const char* sql, bool async = false);
|
||||
~BasicStatementTask();
|
||||
|
||||
bool Execute() override;
|
||||
QueryResultFuture GetFuture() { return m_result->get_future(); }
|
||||
|
||||
private:
|
||||
const char* m_sql; //- Raw query to be executed
|
||||
bool m_has_result;
|
||||
QueryResultPromise m_result;
|
||||
QueryResultPromise* m_result;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -296,10 +296,9 @@ class DatabaseWorkerPool
|
||||
//! The return value is then processed in ProcessQueryCallback methods.
|
||||
QueryResultFuture AsyncQuery(const char* sql)
|
||||
{
|
||||
QueryResultPromise res;
|
||||
BasicStatementTask* task = new BasicStatementTask(sql, res);
|
||||
BasicStatementTask* task = new BasicStatementTask(sql, true);
|
||||
Enqueue(task);
|
||||
return res.get_future(); //! Actual return value has no use yet
|
||||
return task->GetFuture(); //! 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.
|
||||
@@ -320,10 +319,9 @@ class DatabaseWorkerPool
|
||||
//! Statement must be prepared with CONNECTION_ASYNC flag.
|
||||
PreparedQueryResultFuture AsyncQuery(PreparedStatement* stmt)
|
||||
{
|
||||
PreparedQueryResultPromise res;
|
||||
PreparedStatementTask* task = new PreparedStatementTask(stmt, res);
|
||||
PreparedStatementTask* task = new PreparedStatementTask(stmt, true);
|
||||
Enqueue(task);
|
||||
return res.get_future();
|
||||
return task->GetFuture();
|
||||
}
|
||||
|
||||
//! Enqueues a vector of SQL operations (can be both adhoc and prepared) that will set the value of the QueryResultHolderFuture
|
||||
@@ -332,10 +330,9 @@ class DatabaseWorkerPool
|
||||
//! Any prepared statements added to this holder need to be prepared with the CONNECTION_ASYNC flag.
|
||||
QueryResultHolderFuture DelayQueryHolder(SQLQueryHolder* holder)
|
||||
{
|
||||
QueryResultHolderPromise res;
|
||||
SQLQueryHolderTask* task = new SQLQueryHolderTask(holder, res);
|
||||
SQLQueryHolderTask* task = new SQLQueryHolderTask(holder);
|
||||
Enqueue(task);
|
||||
return res.get_future(); //! Fool compiler, has no use yet
|
||||
return task->GetFuture();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -445,19 +445,19 @@ std::string MySQLPreparedStatement::getQueryString(std::string const& sqlPattern
|
||||
}
|
||||
|
||||
//- Execution
|
||||
PreparedStatementTask::PreparedStatementTask(PreparedStatement* stmt) :
|
||||
m_stmt(stmt),
|
||||
m_has_result(false) { }
|
||||
|
||||
PreparedStatementTask::PreparedStatementTask(PreparedStatement* stmt, PreparedQueryResultPromise& result) :
|
||||
m_stmt(stmt),
|
||||
m_has_result(true),
|
||||
m_result(std::move(result)) { }
|
||||
|
||||
PreparedStatementTask::PreparedStatementTask(PreparedStatement* stmt, bool async) :
|
||||
m_stmt(stmt)
|
||||
{
|
||||
m_has_result = async; // If it's async, then there's a result
|
||||
if (async)
|
||||
m_result = new PreparedQueryResultPromise();
|
||||
}
|
||||
|
||||
PreparedStatementTask::~PreparedStatementTask()
|
||||
{
|
||||
delete m_stmt;
|
||||
if (m_has_result && m_result != nullptr)
|
||||
delete m_result;
|
||||
}
|
||||
|
||||
bool PreparedStatementTask::Execute()
|
||||
@@ -468,10 +468,10 @@ bool PreparedStatementTask::Execute()
|
||||
if (!result || !result->GetRowCount())
|
||||
{
|
||||
delete result;
|
||||
m_result.set_value(PreparedQueryResult(NULL));
|
||||
m_result->set_value(PreparedQueryResult(NULL));
|
||||
return false;
|
||||
}
|
||||
m_result.set_value(PreparedQueryResult(result));
|
||||
m_result->set_value(PreparedQueryResult(result));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -160,15 +160,15 @@ typedef std::promise<PreparedQueryResult> PreparedQueryResultPromise;
|
||||
class PreparedStatementTask : public SQLOperation
|
||||
{
|
||||
public:
|
||||
PreparedStatementTask(PreparedStatement* stmt);
|
||||
PreparedStatementTask(PreparedStatement* stmt, PreparedQueryResultPromise& result);
|
||||
PreparedStatementTask(PreparedStatement* stmt, bool async = false);
|
||||
~PreparedStatementTask();
|
||||
|
||||
bool Execute();
|
||||
PreparedQueryResultFuture GetFuture() { return m_result->get_future(); }
|
||||
|
||||
protected:
|
||||
PreparedStatement* m_stmt;
|
||||
bool m_has_result;
|
||||
PreparedQueryResultPromise m_result;
|
||||
PreparedQueryResultPromise* m_result;
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -45,13 +45,15 @@ typedef std::promise<SQLQueryHolder*> QueryResultHolderPromise;
|
||||
class SQLQueryHolderTask : public SQLOperation
|
||||
{
|
||||
private:
|
||||
SQLQueryHolder * m_holder;
|
||||
SQLQueryHolder* m_holder;
|
||||
QueryResultHolderPromise m_result;
|
||||
|
||||
public:
|
||||
SQLQueryHolderTask(SQLQueryHolder *holder, QueryResultHolderPromise& res)
|
||||
: m_holder(holder), m_result(std::move(res)){ };
|
||||
SQLQueryHolderTask(SQLQueryHolder* holder)
|
||||
: m_holder(holder) { };
|
||||
|
||||
bool Execute();
|
||||
QueryResultHolderFuture GetFuture() { return m_result.get_future(); }
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ class QueryCallback
|
||||
|
||||
int IsReady()
|
||||
{
|
||||
return _result.wait_for(std::chrono::seconds(0)) == std::future_status::ready;
|
||||
return _result.valid() && _result.wait_for(std::chrono::seconds(0)) == std::future_status::ready;
|
||||
}
|
||||
|
||||
void GetResult(Result& res)
|
||||
@@ -130,7 +130,7 @@ class QueryCallback_2
|
||||
|
||||
int IsReady()
|
||||
{
|
||||
return _result.wait_for(std::chrono::seconds(0)) == std::future_status::ready;
|
||||
return _result.valid() && _result.wait_for(std::chrono::seconds(0)) == std::future_status::ready;
|
||||
}
|
||||
|
||||
void GetResult(Result& res)
|
||||
|
||||
@@ -46,8 +46,6 @@ public:
|
||||
|
||||
private:
|
||||
int Send(const char* data);
|
||||
void AsyncRead();
|
||||
void AsyncWrite(size_t length);
|
||||
std::string ReadString();
|
||||
bool CheckAccessLevel(const std::string& user);
|
||||
bool CheckPassword(const std::string& user, const std::string& pass);
|
||||
|
||||
Reference in New Issue
Block a user