Core/DBLayer: Add nicer api for SQLQueryHolders

Port From (https://github.com/TrinityCore/TrinityCore/commit/d5dcf02196e30c932c7a25c3975a91a0fe1ccd50)
This commit is contained in:
hondacrx
2022-03-02 13:27:52 -05:00
parent 30a5bcdb4d
commit 0576cc0a07
5 changed files with 64 additions and 43 deletions
@@ -15,6 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
@@ -74,4 +75,31 @@ namespace Framework.Database
public Task<SQLQueryHolder<R>> GetFuture() { return m_result.Task; }
}
public class SQLQueryHolderCallback<R> : ISqlCallback
{
Task<SQLQueryHolder<R>> m_future;
Action<SQLQueryHolder<R>> m_callback;
public SQLQueryHolderCallback(Task<SQLQueryHolder<R>> future)
{
m_future = future;
}
public void AfterComplete(Action<SQLQueryHolder<R>> callback)
{
m_callback = callback;
}
public bool InvokeIfReady()
{
if (m_future != null && m_future.Wait(0))
{
m_callback(m_future.Result);
return true;
}
return false;
}
}
}