Core/DBLayer: Implement async transaction completion callbacks
Port From (https://github.com/TrinityCore/TrinityCore/commit/0f0ca3a9194d76afa0227943e86469ad8368c5e2)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user