Fixed being able to create duplicate characters

This commit is contained in:
hondacrx
2017-06-28 18:46:22 -04:00
parent 26bcb1e9a1
commit 216ce1d0af
+15 -10
View File
@@ -42,7 +42,7 @@ namespace Framework.Database
public QueryCallback WithChainingCallback(Action<QueryCallback, SQLResult> callback)
{
_callbacks.Add(new QueryCallbackData(callback));
_callbacks.Enqueue(new QueryCallbackData(callback));
return this;
}
@@ -53,19 +53,21 @@ namespace Framework.Database
public QueryCallbackStatus InvokeIfReady()
{
QueryCallbackData callback = _callbacks.First();
if (_result.IsCompleted)
QueryCallbackData callback = _callbacks.Dequeue();
bool hasNext = true;
while (hasNext)
{
if (_result != null && _result.Wait(0))
{
Task<SQLResult> f = _result;
Action<QueryCallback, SQLResult> cb = callback._result;
_result = null;
callback.Clear();
cb(this, f.Result);
_callbacks.RemoveAt(0);
bool hasNext = _result != null;
if (_callbacks.Empty())
hasNext = _result != null;
if (_callbacks.Count == 0)
{
Contract.Assert(!hasNext);
return QueryCallbackStatus.Completed;
@@ -75,14 +77,17 @@ namespace Framework.Database
if (!hasNext)
return QueryCallbackStatus.Completed;
return QueryCallbackStatus.NextStep;
callback = _callbacks.Dequeue();
}
else
return QueryCallbackStatus.NotReady;
}
return QueryCallbackStatus.Completed;
}
Task<SQLResult> _result;
List<QueryCallbackData> _callbacks = new List<QueryCallbackData>();
Queue<QueryCallbackData> _callbacks = new Queue<QueryCallbackData>();
}
struct QueryCallbackData