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
+5 -12
View File
@@ -21,7 +21,7 @@ using System.Threading.Tasks;
namespace Framework.Database
{
public class QueryCallback
public class QueryCallback : ISqlCallback
{
public QueryCallback(Task<SQLResult> result)
{
@@ -49,7 +49,7 @@ namespace Framework.Database
_result = next._result;
}
public QueryCallbackStatus InvokeIfReady()
public bool InvokeIfReady()
{
QueryCallbackData callback = _callbacks.Peek();
@@ -68,17 +68,17 @@ namespace Framework.Database
if (_callbacks.Count == 0)
{
Cypher.Assert(!hasNext);
return QueryCallbackStatus.Completed;
return true;
}
// abort chain
if (!hasNext)
return QueryCallbackStatus.Completed;
return true;
callback = _callbacks.Peek();
}
else
return QueryCallbackStatus.NotReady;
return false;
}
}
@@ -100,11 +100,4 @@ namespace Framework.Database
public Action<QueryCallback, SQLResult> _result;
}
public enum QueryCallbackStatus
{
NotReady,
NextStep,
Completed
}
}