Core/DBLayer: Implement async transaction completion callbacks

Port From (https://github.com/TrinityCore/TrinityCore/commit/0f0ca3a9194d76afa0227943e86469ad8368c5e2)
This commit is contained in:
hondacrx
2020-04-26 00:53:43 -04:00
parent a9d1d3f2b0
commit d450f6db3d
14 changed files with 224 additions and 109 deletions
+11 -4
View File
@@ -253,7 +253,15 @@ namespace Framework.Database
_queue.Push(new TransactionTask(transaction));
}
public bool DirectCommitTransaction(SQLTransaction transaction)
public TransactionCallback AsyncCommitTransaction(SQLTransaction transaction)
{
TransactionWithResultTask task = new TransactionWithResultTask(transaction);
Task<bool> result = task.GetFuture();
_queue.Push(task);
return new TransactionCallback(result);
}
public MySqlErrorCode DirectCommitTransaction(SQLTransaction transaction)
{
using (var Connection = _connectionInfo.GetConnection())
{
@@ -277,13 +285,12 @@ namespace Framework.Database
trans.Commit();
scope.Complete();
}
return true;
return MySqlErrorCode.None;
}
catch (MySqlException ex) //error occurred
{
HandleMySQLException(ex, query);
trans.Rollback();
return false;
return HandleMySQLException(ex, query);
}
}
}